NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2685 most downloaded on PyPI
Clients for PagerDuty's Public APIs
Last release 1 months ago
04 Sep 2026
Release timing varies
gaps range from 9 days to 4 months
Nearly every release is documented
notes for 23 of 25 stable releases
1 version withdrawn
withdrawn after publishing
16 years old
26 releases · first in 2010
docs: fix bullet nesting by @Deconstrained in #90
Full Changelog: https://pagerduty.github.io/python-pagerduty/changelog.html
Update maintainers list
Upgrade all dependencies
Fix lint/format issues reported by the latest version of Ruff
Documentation fixes
One column per quarter.
feat(breaking): change upstream client to HTTPX2 by @Deconstrained in #89
Full Changelog: https://pagerduty.github.io/python-pagerduty/changelog.html
Full Changelog: https://pagerduty.github.io/python-pagerduty/changelog.html
Changes the core HTTP client from httpx to httpx2 , which is based on it but more actively maintained, so that clients can continue to receive bug fixes and security updates.
Drop support for Python 3.6 thru 3.9
Any references to features of the HTTP client accessed directly through the module interface, i.e. httpx.<module> , must be updated so that the references point to httpx2 .
Contrib guide fixes by @Deconstrained in #85
Full Changelog: v6.2.2...v6.3.0
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v6.2.2...v6.3.0
Adds support for new endpoints, most significantly the new Flex Schedules API.
Fix callable type annotations on decorators and parameters by @wpfleger96 in #81
callable type annotations on decorators and parameters by @wpfleger96 in #81Full Changelog: v6.2.1...v6.2.2
Incorporate function decorator type annotation bugfix reported/contributed by @wpfleger97 in #80
Fix bug reported by @DanielJanzon
docs: fix typo in variable name in example code by @Deconstrained in #77
Full Changelog: v6.2.0...v6.2.1
Bug fix by @blagh : The HTTP status handling uses floating point division whereas, for it to evaluate correctly, it needs to explicitly use integer division rather than relying on implicit integer division when both numerator and denominator are integers.
2026-02-23: 6.2.0: New way of setting base URL + deprecate method in OAuthTokenClient
Adds base_url as a universally-accepted keyword argument to constructors of all clients, and provides a more explicit method of specifying the default base URL for any given client class.
Deprecate classmethod in get_authorize_url in OAuthTokenClient , which cannot be used outside of the commercial AWS partition, in favor of the more flexible instance methods.
Add support for two new endpoints in the Jira Cloud Integration API
2025-11-19: 6.1.0: Add uv and ruff and fix errors and formatting
This release adopts uv as the project’s chosen package manager and build tool, and ruff as its chosen linter and formatter.
RestApiV2Client.api_key_access
RestApiV2Client.iter_history
RestApiV2Client.account_has_ability
Revise the exception message for status 401 Unauthorized to include a suggestion that the service region / base URL are wrong; this is in some use cases the most common reason for the error.
Rewrite the end-to-end package publish testing script to use uv, and perform deeper inspection of the resulting installed package.
New-and-improved development workflow using uv and ruff
fix issue 61: test coverage by @Deconstrained in #74
Full Changelog: v6.1.0...v6.2.0
feat(71): Add a standard chosen linter/formatter, format and fix linter errors by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v6.0.0...v6.1.0
python-httpx refactor by @Deconstrained in #69
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v5.3.0...v6.0.0
The underlying HTTP client on which this library is based has been changed to python-httpx . The primary motivation of this change is to provide thread safety with a very similar interface to requests , and the possibility to add support for asynchronous usage in future releases.
The proxies property no longer exists in client classes, and proxy configuration must be passed to the constructor in one of the proxy or mounts keyword arguments. See: HTTPX: Advanced: Proxies
Response objects no longer have an ok property; use is_success instead.
ApiClient.auth_header
RestApiV2BaseClient.after_set_api_key
RestApiV2BaseClient.api_key
The deprecated keyword argument routing_key to EventsApiV2Client.send_change_event has been removed.
Support for the deprecated Response Plays API has been removed from RestApiV2Client .
2025-10-23: 5.3.0: New AuthMethod class for verbatim authorization header setting
New authentication method class PassThruHeaderAuthMethod that treats the secret as the whole content of the Authorization header.
Adding new "header_passthru" Authentication Option by @vvasylkovskyi in #70
Full Changelog: v5.2.0...v5.3.0
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v5.2.0...v5.3.0
New clients for new APIs by @Deconstrained in #68
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v5.1.0...v5.2.0
Client class ScimApiClient for the PagerDuty SCIM API
Client class McpApiClient for the PagerDuty MCP API
2025-10-01: 5.1.0: Maintenance update with entity wrapping support for new API endpoints
Incident types API
Webhooks API
Event Orchestrations cache variables
Per-service custom fields
OAuth clients (webhook subscriptions)
Entity wrapping support not yet removed for deprecated APIs i.e. “Response Plays” to avoid breaking changes.
feat(66): Add entity wrapping support for new APIs to RestApiV2Client by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull/67
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v5.0.0...v5.1.0
Auth methods refactor - redux by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull/62
Full Changelog:
https://pagerduty.github.io/python-pagerduty/changelog.html
In this version, the details of how authentication are performed are offloaded to a new class, AuthMethod . Each instance of ApiClient have a new property, auth_method , which is an instance of AuthMethod . This provides a generic framework for implementing all the forms of authentication (using headers or parameters in the request body) utilized in all of PagerDuty’s APIs, minimizing redundant code in ApiClient subclasses.
The primary motivation of this change was to make the behavior of REST API v2 client objects more stable and predictable when swapping out their API credentials mid-process. This is needed for the purposes of an internal project at PagerDuty.
The api_key property has been removed from all client classes except for pagerduty.RestApiV2BaseClient and subclasses thereof, wherein it is deprecated.
The hook method after_set_api_key will be ignored in all classes where the api_key property has been removed.
- Fixes a regression wherein a boolean is serialized to the capitalized True / False for the total parameter in classic pagination, whereas the API re
Fixes a regression wherein a boolean is serialized to the capitalized True / False for the total parameter in classic pagination, whereas the API requires lower case values.
- Deprecated property RestApiV2Client.trunc_token has been removed.
Feature: new methods get_new_token_from_code_with_pkce , generate_s256_pkce_params and get_pkce_authorize_url of pagerduty.OAuthTokenClient to assist with implementation of the OAuth via PKCE token grant flow.
2025-08-18: 4.0.1: Bugfix: export all features currently imported to the root namespace
Fixes: adds an explicit all declaration to the root pagerduty module namespace for all members that are currently imported to that namespace.
2025-08-12: 4.0.0: REST API Base Client Refactor + New Clients
Breaking Changes:
Deprecated property RestApiV2Client.trunc_token has been removed.
Helper functions have been moved; any namespaced references to them will need to be updated. References to them in the root pagerduty namespace will not be affected; they are still imported there for backwards compatibility. The changes are as follows:
Helper functions last_4 and normalize_url have been moved from pagerduty.api_client to pagerduty.common .
Helper functions endpoint_matches , is_path_param , infer_entity_wrapper and unwrap have been moved from pagerduty.rest_api_v2_client to pagerduty.rest_api_v2_base_client .
Function decorators auto_json , resource_url and wrapped_entities have been moved from pagerduty.rest_api_v2_client to pagerduty.rest_api_v2_base_client .
New Features: API client classes for the integration APIs that share many of the same features of pagerduty.RestApiV2Client :
pagerduty.SlackIntegrationApiClient and pagerduty.SlackIntegrationConnectionsApiClient provide support for the PagerDuty Slack Integration API.
pagerduty.MsTeamsIntegrationApiClient provides support for the PagerDuty MS Teams Integration API.
pagerduty.JiraServerIntegrationApiClient provides support for the PagerDuty Jira Server Integration API.
pagerduty.JiraCloudIntegrationApiClient provides support for the PagerDuty Jira Cloud Integration API.
Fixes and Refactoring:
HTTP request headers:
Duplicate code has been removed from the prepare_headers method in all client classes and consolidated into pagerduty.ApiClient .
The Content-Type header is now added when making PATCH requests in REST API v2.
New REST API base class pagerduty.RestApiV2BaseClient brings automatic entity wrapping and pagination helpers to new APIs outside of REST API v2
The total query parameter sent to the API by iter_all is now a boolean as it needs to be according to the API documentation.
New descriptive types for canonical paths and entity wrapping
The get_total method of REST API client classes now tests for a successful response before checking the response schema in order to raise the correct type of exception.
Release 4.0.0 by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull/56
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v4.0.0...v4.0.1
feat(54): support outlier APIs with new client subclasses by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull/55
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v3.1.0...v4.0.0
feat(24): abstraction for special / bespoke pagination methods by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull/53
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v3.0.0...v3.1.0
New features in RestApiV2Client
Abstraction for endpoints that implement non-standard styles of pagination
Iterator method for incident notes
Method for testing if the account has a given ability
Fix: Update the “Unknown version” (for versioned user-agent headers in Python prior to version 3.8) and add a test to validate that it is up to date with the true current major version
Breaking Change: the method normalize_params in the base API client class pagerduty.ApiClient no longer alters its input. The behavior of automaticall…
normalize_params in the base API client class pagerduty.ApiClient no longer alters its input. The behavior of automatically appending [] to list-type parameters has been moved into an override of the method in pagerduty.RestApiV2Client, where it is actually needed and used.Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v2.3.0...v3.0.0
Breaking Change: the method ApiClient.normalize_params no longer modifies parameters. The implementation of it that previously did, which was meant only for the child class RestApiV2Client , has been migrated to that class as an override.
New Features:
New method OAuthTokenClient.refresh_client : instantiates and returns a RestApiV2Client instance and auto-refreshes the access token
New method RestApiV2Client.iter_history : iterates through large historical data sets that exceed the hard limit of classic pagination
New method RestApiV2Client.get_total : returns the total number of matching records in a classic pagination endpoint
Expanded coverage of type hints
Documentantion revisions
Fixes:
Method RestApiV2Client.rpatch now fully implemented (it mistakenly was left with no return value in previous versions)
Mutable default values in optional keyword arguments have been replaced with None .
2025-06-23: 2.3.0: Add a new OAuth token exchange client class
This version introduces a new client class for obtaining OAuth tokens using code grant / token refresh or for a scoped app.
Nothing published for this version
V2.1.2 more bug fixes by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull/47
Full Changelog: https://github.com/PagerDuty/python-pagerduty/compare/v2.1.1...v2.1.2
Add entrypoint script (issue #39) by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull/40
The “main” method in the entry script is expected to receive no arguments, but in v2.1.0, it requires one positional argument.
- Add a basic command line interface for Events API v2, for feature parity with the legacy library that is used in the Monit Integration Guide .
Add a basic command line interface for Events API v2, for feature parity with the legacy library that is used in the Monit Integration Guide .
Version 2.0.0: Refactor PagerDuty into a multi-file module by @Deconstrained in https://github.com/PagerDuty/python-pagerduty/pull/36
Full Changelog: https://pagerduty.github.io/python-pagerduty/changelog.html
This release introduces major structural changes to the module and how it is built and tested. These changes were made for long-term maintainability of the codebase. Previously, it was all contained within a monolithic .py file (with a single Python script for all unit tests); now it is organized into smaller, appropriately-named Python files.
Some lesser changes are also included:
The docstrings for the submit and send_change_event methods of EventsApiV2Client have been updated to reflect how they are expected to always return None ; this was causing Airflow build failures.
The default user agent header has been updated: the prefix has been changed from pagerduty to python-pagerduty .
The version number pagerduty.version is now maintained in pyproject.toml and discovered through package metadata introspection at import time. In Python versions prior to 3.8, the version will be 2.. because the new importlib feature required for it is unavailable.
An initial release with only class names, documentation and light maintenance changes differing between it and the original pdpyras source. See the Mi
An initial release with only class names, documentation and light maintenance changes differing between it and the original pdpyras source. See the Migration Guide for details.
BREAKING CHANGE: class names have changed from what they were in pdpyras ; see: PDPYRAS Migration Guide
The REST API client now supports new status page, event orchestrations, custom incident fields, OAuth delegations and alert grouping settings APIs.
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →