PagerDuty Webhooks API

A webhook is a way to receive events that occur on the PagerDuty platform via an HTTP POST request. V3 webhooks are set up by creating a webhook subscription.

OpenAPI Specification

pagerduty-webhooks-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  description: 'This document describes the PagerDuty REST APIs.


    For guides and examples please visit our [Documentation.](https://developer.pagerduty.com/docs/get-started/getting-started/)


    Our REST APIs are defined in OpenAPI v3.x. You can view the schema at [github.com/PagerDuty/api-schema](https://github.com/PagerDuty/api-schema).


    Note that properties in some schemas have fields not shown by default such as `readOnly`, `format`, and `default`. Hover your cursor over the right column that looks like `optional+1` to see the full list of fields.

    '
  contact:
    name: PagerDuty Support
    url: http://www.pagerduty.com/support
    email: support@pagerduty.com
  title: PagerDuty Abilities Webhooks API
  version: 2.0.0
servers:
- url: https://api.pagerduty.com
  description: PagerDuty V2 API.
security:
- api_key: []
tags:
- name: Webhooks
  description: 'A webhook is a way to receive events that occur on the PagerDuty platform via an HTTP POST request.

    V3 webhooks are set up by creating a webhook subscription.

    '
paths:
  /webhook_subscriptions:
    get:
      x-pd-requires-scope: webhook_subscriptions.read
      tags:
      - Webhooks
      operationId: listWebhookSubscriptions
      summary: PagerDuty List webhook subscriptions
      description: 'List existing webhook subscriptions.


        The `filter_type` and `filter_id` query parameters may be used to only show subscriptions

        for a particular _service_ or _team_.


        For more information on webhook subscriptions and how they are used to configure v3 webhooks

        see the [Webhooks v3 Developer Documentation](https://developer.pagerduty.com/docs/webhooks/v3-overview/).


        Scoped OAuth requires: `webhook_subscriptions.read`

        '
      parameters:
      - $ref: '#/components/parameters/header_Accept'
      - $ref: '#/components/parameters/offset_limit'
      - $ref: '#/components/parameters/offset_offset'
      - $ref: '#/components/parameters/offset_total'
      - $ref: '#/components/parameters/webhooks_filter_type'
      - $ref: '#/components/parameters/webhooks_filter_id'
      responses:
        '200':
          description: A set of webhook subscriptions matching the request.
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  properties:
                    webhook_subscriptions:
                      type: array
                      items:
                        $ref: '#/components/schemas/WebhookSubscription'
                  required:
                  - webhook_subscriptions
                - $ref: '#/components/schemas/Pagination'
              examples:
                response:
                  $ref: '#/components/examples/ListSubscriptionExample'
        '400':
          $ref: '#/components/responses/WebhookBadRequest'
        '401':
          $ref: '#/components/responses/WebhookUnauthorized'
        '403':
          $ref: '#/components/responses/WebhookForbidden'
    post:
      x-pd-requires-scope: webhook_subscriptions.write
      tags:
      - Webhooks
      operationId: createWebhookSubscription
      summary: PagerDuty Create a webhook subscription
      description: 'Creates a new webhook subscription.


        For more information on webhook subscriptions and how they are used to configure v3 webhooks

        see the [Webhooks v3 Developer Documentation](https://developer.pagerduty.com/docs/webhooks/v3-overview/).


        Scoped OAuth requires: `webhook_subscriptions.write`

        '
      parameters:
      - $ref: '#/components/parameters/header_Accept'
      - $ref: '#/components/parameters/header_Content-Type'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                webhook_subscription:
                  $ref: '#/components/schemas/WebhookSubscription'
              required:
              - webhook_subscription
            examples:
              request:
                $ref: '#/components/examples/CreateSubscriptionExample'
      responses:
        '200':
          description: The webhook subscription that was created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  webhook_subscription:
                    $ref: '#/components/schemas/WebhookSubscription'
                required:
                - webhook_subscription
              examples:
                response:
                  $ref: '#/components/examples/GetSubscriptionExample'
        '400':
          $ref: '#/components/responses/WebhookBadRequest'
        '401':
          $ref: '#/components/responses/WebhookUnauthorized'
        '403':
          $ref: '#/components/responses/WebhookForbidden'
  /webhook_subscriptions/{id}:
    get:
      x-pd-requires-scope: webhook_subscriptions.read
      tags:
      - Webhooks
      operationId: getWebhookSubscription
      summary: PagerDuty Get a webhook subscription
      description: 'Gets details about an existing webhook subscription.


        Scoped OAuth requires: `webhook_subscriptions.read`

        '
      parameters:
      - $ref: '#/components/parameters/header_Accept'
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: The webhook subscription that was requested.
          content:
            application/json:
              schema:
                type: object
                properties:
                  webhook_subscription:
                    $ref: '#/components/schemas/WebhookSubscription'
                required:
                - webhook_subscription
              examples:
                response:
                  $ref: '#/components/examples/GetSubscriptionExample'
        '400':
          $ref: '#/components/responses/WebhookBadRequest'
        '401':
          $ref: '#/components/responses/WebhookUnauthorized'
        '403':
          $ref: '#/components/responses/WebhookForbidden'
        '404':
          $ref: '#/components/responses/WebhookNotFound'
    put:
      x-pd-requires-scope: webhook_subscriptions.write
      tags:
      - Webhooks
      operationId: updateWebhookSubscription
      summary: PagerDuty Update a webhook subscription
      description: 'Updates an existing webhook subscription.


        Only the fields being updated need to be included on the request.  This operation does not

        support updating the `delivery_method` of the webhook subscription.


        Scoped OAuth requires: `webhook_subscriptions.write`

        '
      parameters:
      - $ref: '#/components/parameters/header_Accept'
      - $ref: '#/components/parameters/header_Content-Type'
      - $ref: '#/components/parameters/id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookSubscriptionUpdate'
            examples:
              request:
                $ref: '#/components/examples/PutSubscriptionExample'
      responses:
        '200':
          description: The updated webhook subscription.
          content:
            application/json:
              schema:
                type: object
                properties:
                  webhook_subscription:
                    $ref: '#/components/schemas/WebhookSubscription'
                required:
                - webhook_subscription
              examples:
                response:
                  $ref: '#/components/examples/GetSubscriptionExample'
        '400':
          $ref: '#/components/responses/WebhookBadRequest'
        '401':
          $ref: '#/components/responses/WebhookUnauthorized'
        '403':
          $ref: '#/components/responses/WebhookForbidden'
        '404':
          $ref: '#/components/responses/WebhookNotFound'
    delete:
      x-pd-requires-scope: webhook_subscriptions.write
      tags:
      - Webhooks
      operationId: deleteWebhookSubscription
      summary: PagerDuty Delete a webhook subscription
      description: 'Deletes a webhook subscription.


        Scoped OAuth requires: `webhook_subscriptions.write`

        '
      parameters:
      - $ref: '#/components/parameters/header_Accept'
      - $ref: '#/components/parameters/id'
      responses:
        '204':
          description: The webhook subscription was deleted successfully.
        '400':
          $ref: '#/components/responses/WebhookBadRequest'
        '401':
          $ref: '#/components/responses/WebhookUnauthorized'
        '403':
          $ref: '#/components/responses/WebhookForbidden'
        '404':
          $ref: '#/components/responses/WebhookNotFound'
  /webhook_subscriptions/{id}/enable:
    post:
      x-pd-requires-scope: webhook_subscriptions.write
      tags:
      - Webhooks
      operationId: enableWebhookSubscription
      summary: PagerDuty Enable a webhook subscription
      description: 'Enable a webhook subscription that is temporarily disabled. (This API does not require a request body.)


        Webhook subscriptions can become temporarily disabled when the subscription''s delivery method is repeatedly rejected by the server.


        Scoped OAuth requires: `webhook_subscriptions.write`

        '
      parameters:
      - $ref: '#/components/parameters/header_Accept'
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: The webhook subscription that was successfully enabled.
          content:
            application/json:
              schema:
                type: object
                properties:
                  webhook_subscription:
                    $ref: '#/components/schemas/WebhookSubscription'
                required:
                - webhook_subscription
              examples:
                response:
                  $ref: '#/components/examples/GetSubscriptionExample'
        '401':
          $ref: '#/components/responses/WebhookUnauthorized'
        '403':
          $ref: '#/components/responses/WebhookForbidden'
        '404':
          $ref: '#/components/responses/WebhookNotFound'
  /webhook_subscriptions/{id}/ping:
    post:
      x-pd-requires-scope: webhook_subscriptions.write
      tags:
      - Webhooks
      operationId: testWebhookSubscription
      summary: PagerDuty Test a webhook subscription
      description: 'Test a webhook subscription.


        Fires a test event against the webhook subscription.  If properly configured,

        this will deliver the `pagey.ping` webhook event to the destination.


        Scoped OAuth requires: `webhook_subscriptions.write`

        '
      parameters:
      - $ref: '#/components/parameters/header_Accept'
      - $ref: '#/components/parameters/id'
      responses:
        '202':
          description: Accepted
        '401':
          $ref: '#/components/responses/WebhookUnauthorized'
        '403':
          $ref: '#/components/responses/WebhookForbidden'
        '404':
          $ref: '#/components/responses/WebhookNotFound'
components:
  responses:
    WebhookUnauthorized:
      description: 'Caller did not supply credentials or did not provide the correct

        credentials.


        If you are using an API key, it may be invalid or your Authorization header may be malformed.

        '
    WebhookForbidden:
      description: 'Caller is not authorized to view the requested resource.


        While your authentication is valid, the authenticated user or token does not have permission to perform this action.

        '
    WebhookBadRequest:
      description: 'Caller provided invalid arguments. Please review the response for error

        details. Retrying with the same arguments will *not* work.

        '
    WebhookNotFound:
      description: The requested resource was not found.
  examples:
    CreateSubscriptionExample:
      summary: Example
      value:
        webhook_subscription:
          delivery_method:
            type: http_delivery_method
            url: https://example.com/receive_a_pagerduty_webhook
            custom_headers:
            - name: header-name
              value: header-value
          description: Sends PagerDuty v3 webhook events somewhere interesting.
          events:
          - incident.acknowledged
          - incident.annotated
          - incident.delegated
          - incident.escalated
          - incident.priority_updated
          - incident.reassigned
          - incident.reopened
          - incident.resolved
          - incident.responder.added
          - incident.responder.replied
          - incident.triggered
          - incident.unacknowledged
          filter:
            id: P393ZNQ
            type: service_reference
          type: webhook_subscription
    ListSubscriptionExample:
      summary: Example
      value:
        webhook_subscriptions:
        - delivery_method:
            id: PF9KMXH
            secret: null
            type: http_delivery_method
            url: https://example.com/receive_a_pagerduty_webhook
            custom_headers:
            - name: your-header-name
              value: -- redacted --
          description: Sends PagerDuty v3 webhook events somewhere interesting.
          events:
          - incident.acknowledged
          - incident.annotated
          - incident.delegated
          - incident.escalated
          - incident.priority_updated
          - incident.reassigned
          - incident.resolved
          - incident.responder.added
          - incident.responder.replied
          - incident.triggered
          - incident.unacknowledged
          filter:
            id: P393ZNQ
            type: service_reference
          id: PY1OL64
          type: webhook_subscription
          active: true
        limit: 25
        offset: 0
        total: null
        more: false
    PutSubscriptionExample:
      summary: Update Subscribed Events
      value:
        webhook_subscription:
          events:
          - incident.acknowledged
          - incident.annotated
          - incident.delegated
          - incident.escalated
          - incident.priority_updated
          - incident.reassigned
          - incident.reopened
          - incident.resolved
          - incident.responder.added
          - incident.responder.replied
          - incident.triggered
          - incident.unacknowledged
    GetSubscriptionExample:
      summary: Example
      value:
        webhook_subscription:
          delivery_method:
            id: PF9KMXH
            secret: null
            temporarily_disabled: false
            type: http_delivery_method
            url: https://example.com/receive_a_pagerduty_webhook
            custom_headers:
            - name: your-header-name
              value: -- redacted --
          description: Sends PagerDuty v3 webhook events somewhere interesting.
          events:
          - incident.acknowledged
          - incident.annotated
          - incident.delegated
          - incident.escalated
          - incident.priority_updated
          - incident.reassigned
          - incident.reopened
          - incident.resolved
          - incident.responder.added
          - incident.responder.replied
          - incident.triggered
          - incident.unacknowledged
          filter:
            id: P393ZNQ
            type: service_reference
          id: PY1OL64
          type: webhook_subscription
          active: true
  parameters:
    offset_offset:
      name: offset
      in: query
      required: false
      description: Offset to start pagination search results.
      schema:
        type: integer
    header_Accept:
      name: Accept
      description: The `Accept` header is used as a versioning header.
      in: header
      required: true
      schema:
        type: string
        default: application/vnd.pagerduty+json;version=2
    header_Content-Type:
      name: Content-Type
      in: header
      required: true
      schema:
        type: string
        default: application/json
        enum:
        - application/json
    webhooks_filter_type:
      name: filter_type
      in: query
      required: false
      description: The type of resource to filter upon.
      schema:
        enum:
        - service
        - team
        type: string
    id:
      name: id
      description: The ID of the resource.
      in: path
      required: true
      schema:
        type: string
    offset_total:
      name: total
      in: query
      required: false
      description: 'By default the `total` field in pagination responses is set to `null` to provide the fastest possible response times. Set `total` to `true` for this field to be populated.


        See our [Pagination Docs](https://developer.pagerduty.com/docs/rest-api-v2/pagination/) for more information.

        '
      schema:
        default: false
        type: boolean
    webhooks_filter_id:
      name: filter_id
      in: query
      required: false
      description: The id of the resource to filter upon.
      schema:
        type: string
    offset_limit:
      name: limit
      in: query
      required: false
      description: The number of results per page.
      schema:
        type: integer
  schemas:
    WebhookSubscription:
      type: object
      properties:
        id:
          type: string
          readOnly: true
        type:
          type: string
          description: The type indicating the schema of the object.
          default: webhook_subscription
          enum:
          - webhook_subscription
        active:
          type: boolean
          default: true
          description: Determines whether this subscription will produce webhook events.
        delivery_method:
          type: object
          properties:
            id:
              type: string
              readOnly: true
            secret:
              type: string
              description: The secret used to sign webhook payloads. Only provided on the initial create response.
              nullable: true
              readOnly: true
            temporarily_disabled:
              type: boolean
              description: Whether or not this webhook subscription is temporarily disabled. Becomes `true` if the delivery method URL is repeatedly rejected by the server.
            type:
              type: string
              description: Indicates the type of the delivery method.
              default: http_delivery_method
              enum:
              - http_delivery_method
            url:
              type: string
              description: The destination URL for webhook delivery.
              format: url
            custom_headers:
              type: array
              description: Optional headers to be set on this webhook subscription when sent. The header values are redacted in GET requests, but are not redacted on the webhook when delivered to the webhook's endpoint.
          required:
          - type
          - url
        description:
          type: string
          description: A short description of the webhook subscription.
        events:
          type: array
          description: The set of outbound event types the webhook will receive.
          minItems: 1
          uniqueItems: true
          items:
            type: string
        filter:
          type: object
          properties:
            id:
              type: string
              description: The id of the object being used as the filter.  This field is required for all filter types except account_reference.
            type:
              type: string
              description: The type of object being used as the filter.
              enum:
              - account_reference
              - service_reference
              - team_reference
          required:
          - type
      required:
      - type
      - delivery_method
      - events
      - filter
    WebhookSubscriptionUpdate:
      type: object
      properties:
        webhook_subscription:
          type: object
          properties:
            description:
              type: string
              description: A short description of the webhook subscription.
            events:
              type: array
              description: The set of outbound event types the subscription will receive.
              minItems: 1
              uniqueItems: true
              items:
                type: string
            filter:
              type: object
              properties:
                id:
                  type: string
                  description: The id of the object being used as the filter.  This field is required for all filter types except account_reference.
                type:
                  type: string
                  description: The type of object being used as the filter.
                  enum:
                  - account_reference
                  - service_reference
                  - team_reference
            active:
              type: boolean
              description: If true, a webhook will be sent. True is the default state. If false, a webhook will not be sent.
    Pagination:
      type: object
      properties:
        offset:
          type: integer
          description: Echoes offset pagination property.
          readOnly: true
        limit:
          type: integer
          description: Echoes limit pagination property.
          readOnly: true
        more:
          type: boolean
          description: Indicates if there are additional records to return
          readOnly: true
        total:
          type: integer
          description: The total number of records matching the given query.
          nullable: true
          readOnly: true
  securitySchemes:
    api_key:
      type: apiKey
      name: Authorization
      in: header
      description: The API Key with format `Token token=<API_KEY>`