CyberSource Manage Webhooks API

- Manage your webhooks. This will allow for you to update existing webhooks, test webhooks, or delete them.

OpenAPI Specification

cybersource-manage-webhooks-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  description: All CyberSource API specs merged together. These are available at https://developer.cybersource.com/api/reference/api-reference.html
  version: 0.0.1
  title: CyberSource Merged Spec bankAccountValidation Manage Webhooks API
host: apitest.cybersource.com
basePath: /
schemes:
- https
consumes:
- application/json;charset=utf-8
produces:
- application/hal+json;charset=utf-8
tags:
- name: Manage Webhooks
  description: '- Manage your webhooks. This will allow for you to update existing webhooks, test webhooks, or delete them.

    '
paths:
  /notification-subscriptions/v2/webhooks:
    get:
      tags:
      - Manage Webhooks
      summary: Get Details On All Created Webhooks
      description: Retrieve a list of all previously created webhooks.
      operationId: getWebhookSubscriptionsByOrg
      parameters:
      - name: organizationId
        in: query
        description: The Organization Identifier.
        type: string
        required: true
      - name: productId
        in: query
        description: The Product Identifier.
        type: string
        required: false
      - name: eventType
        in: query
        description: The Event Type.
        type: string
        required: false
      produces:
      - application/json;charset=utf-8
      consumes:
      - application/json;charset=utf-8
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: object
              properties:
                webhookId:
                  type: string
                  description: Webhook Id. This is generated by the server.
                organizationId:
                  type: string
                  description: Organization ID.
                products:
                  type: array
                  items:
                    type: object
                    properties:
                      productId:
                        type: string
                        description: Product ID.
                      eventTypes:
                        type: array
                        items:
                          type: string
                          description: Event types within the product that you would like subscriptions for.
                    example:
                      productId: tokenManagement
                      eventTypes:
                      - tms.networktoken.provisioned
                      - tms.networktoken.updated
                      - tms.networktoken.binding
                      - tms.accountupdater.enrollment
                      - tms.accountupdater.update
                webhookUrl:
                  type: string
                  description: The client's endpoint (URL) to receive webhooks.
                healthCheckUrl:
                  type: string
                  description: The client's health check endpoint (URL).
                status:
                  type: string
                  description: Webhook status.
                  default: INACTIVE
                name:
                  type: string
                  description: Client friendly webhook name.
                description:
                  type: string
                  description: Client friendly webhook description.
                retryPolicy:
                  type: object
                  description: 'Retry policy for the individual webhooks that are a part of your subscription. If a message fails to deliver, it will execute through this retry policy.


                    Automatic suspend and resume:


                    If you experience downtime and have `deactivateFlag = true` any new messages will be held in a "SUSPENDED" status.

                    When your healthCheckUrl returns healthy again, the subscription will automatically be re-enabled and your messages will be sent.

                    We will ping your healthCheckUrl routinely using a POST call with an empty payload to check availability.

                    If your endpoint returns an unhealthy status of != 200, we will check the healthCheckUrl at a more frequent rate until it is healthy again.


                    If you experience downtime and have `deactivateFlag = false` and your message exhausts all retry attempts the message will go to a "FAILED" status.

                    Support will be notified and will reach out to suggest you execute the "REPLAY" endpoint at a later date when your server is healthy.



                    Reference the below values for formulas and calculations related to the frequency of retries depending on algorithm and configuration.

                    '
                  properties:
                    algorithm:
                      type: string
                      default: ARITHMETIC
                      description: 'This is used to calculate the Retry Sequence.


                        Sample calculations using firstRetry=10, interval=30, maxNumberOfRetries=3

                        Arithmetic = a+r(n-1)

                        Retry 1 - 10 minutes

                        Retry 2 - 10+30x1 = 40 minutes

                        Retry 3 - 10+30x2 = 70 minutes


                        Geometric = ar^(n-1)

                        Retry 1 - 10 minutes

                        Retry 2 - 10x30^1 = 300 minutes

                        Retry 3 - 10x30^2 = 9,000 minutes

                        '
                    firstRetry:
                      type: integer
                      description: When to initiate first retry, after the initial call failed. (in mins).
                      default: 1
                    interval:
                      type: integer
                      description: The interval between retries (in mins).
                      default: 1
                    numberOfRetries:
                      type: integer
                      description: The number of retries per sequence.
                      default: 3
                    deactivateFlag:
                      type: string
                      description: 'Deactivate the subscription if your retries fail to deliver.


                        If this is set to `true`, the automatic suspend and resume feature will occur.

                        This would prevent new webhooks from attempting to deliver and to queue up until your healthCheckUrl returns 200 again, then all messages will be sent.


                        If this is set to `false`, new individual messages will continue to retry and exhaust all failures, but the subscription will stay active.

                        '
                    repeatSequenceCount:
                      type: integer
                      description: 'The number of times to repeat the complete retry sequence.

                        0 => don''t repeat the retry sequence

                        1 => repeat the retry sequence once (R1, R2, R3)+ (R1, R2, R3)

                        2 => repeat the retry sequence twice (R1, R2, R3) + (R1, R2, R3) + (R1, R2, R3)

                        '
                      default: 0
                    repeatSequenceWaitTime:
                      type: integer
                      description: 'The time to wait to before repeating the complete retry sequence.

                        Amount of time to wait between each sequence.

                        Sample calculation using repeatSequenceWaitTime=10

                        (R1, R2, R3) + (10) + (R1, R2, R3) + (10) + (R1, R2, R3)

                        '
                      default: 0
                    additionalAttributes:
                      description: Additional data, if any.
                      type: array
                      items:
                        type: object
                        additionalProperties:
                          type: string
                securityPolicy:
                  type: object
                  description: The security option to authenticate with your API or client server.
                  properties:
                    securityType:
                      type: string
                      description: "Security Policy of the client server. \nPossible values:\n- key\n- oAuth\n- oAuth_JWT"
                    config:
                      description: Optional configuration object for if your API or server requires oAuth for an incoming webhook.
                      type: object
                      properties:
                        oAuthURL:
                          type: string
                          description: Client direct endpoint to the oAuth server.
                        oAuthTokenType:
                          type: string
                          description: "Token type for the oAuth config. \nPossible values:\n- Bearer"
                        additionalConfig:
                          description: Additional, free form configuration data.
                          type: object
                          properties:
                            aud:
                              type: string
                            client_id:
                              type: string
                            keyId:
                              type: string
                            scope:
                              type: string
                createdOn:
                  type: string
                  description: Date on which webhook was created/registered.
                notificationScope:
                  type: string
                  description: "The webhook scope. 1. SELF The Webhook is used to deliver webhooks for only this Organization (or Merchant). 2. DESCENDANTS The Webhook is used to deliver webhooks for this Organization and its children. This field is optional. \n \nPossible values:\n- SELF\n- DESCENDANTS"
                  default: DESCENDANTS
              example:
                webhookId: b555a545-58a9-47c7-aef9-10a8e17f201a
                organizationId: <INSERT ORGANIZATION ID HERE>
                products:
                - productId: tokenManagement
                  eventTypes:
                  - tms.networktoken.provisioned
                  - tms.networktoken.updated
                  - tms.networktoken.binding
                  - tms.accountupdater.enrollment
                  - tms.accountupdater.update
                - productId: invoicing
                  eventTypes:
                  - invoicing.customer.invoice.paid
                  - invoicing.customer.invoice.send
                webhookUrl: https://example.com:443/cybs
                healthCheckUrl: https://example.com:443/cybs/healthcheck
                status: INACTIVE
                name: My Webhook Subscription
                description: Webhook Subscription
                retryPolicy:
                  algorithm: Geometric
                  firstRetry: 3
                  interval: 5
                  numberOfRetries: 4
                  deactivateFlag: true
                securityPolicy:
                  securityType: oAuth
                  config:
                    oAuthURL: https://MyWebhookServer.com:8443/oAuthToken
                    oAuthTokenType: Bearer
                    additionalConfig:
                      aud: idp.api.myServer.com
                      client_id: 650538A1-7AB0-AD3A-51AB-932ABC57AD70
                      keyId: y-daaaAVyF0176M7-eAZ34pR9Ts
                      scope: merchantacq:rte:write
                createdOn: '2021-02-25T23:25:11.000Z'
                notificationScope: SELF
        '401':
          description: Unauthorized
        '500':
          description: Server error
      x-devcenter-metaData:
        categoryTag: Webhooks
        developerGuides: https://developer.cybersource.com/docs/cybs/en-us/webhooks/implementation/all/rest/webhooks/wh-fg-intro.html
  /notification-subscriptions/v2/webhooks/{webhookId}:
    get:
      tags:
      - Manage Webhooks
      summary: Get Details On a Single Webhook
      description: Retrieve the details of a specific webhook by supplying the webhook ID in the path.
      operationId: getWebhookSubscriptionById
      parameters:
      - name: webhookId
        in: path
        type: string
        description: The webhook Identifier
        required: true
      produces:
      - application/json;charset=utf-8
      consumes:
      - application/json;charset=utf-8
      responses:
        '200':
          description: Ok
          schema:
            type: object
            properties:
              webhookId:
                type: string
                description: Webhook Id. This is generated by the server.
              organizationId:
                type: string
                description: Organization ID.
              products:
                type: array
                items:
                  type: object
                  properties:
                    productId:
                      type: string
                      description: Product ID.
                    eventTypes:
                      type: array
                      items:
                        type: string
                        description: Event types within the product that you would like subscriptions for.
                  example:
                    productId: tokenManagement
                    eventTypes:
                    - tms.networktoken.provisioned
                    - tms.networktoken.updated
                    - tms.networktoken.binding
                    - tms.accountupdater.enrollment
                    - tms.accountupdater.update
              webhookUrl:
                type: string
                description: The client's endpoint (URL) to receive webhooks.
              healthCheckUrl:
                type: string
                description: The client's health check endpoint (URL).
              status:
                type: string
                description: Webhook status.
                default: INACTIVE
              name:
                type: string
                description: Client friendly webhook name.
              description:
                type: string
                description: Client friendly webhook description.
              retryPolicy:
                type: object
                description: 'Retry policy for the individual webhooks that are a part of your subscription. If a message fails to deliver, it will execute through this retry policy.


                  Automatic suspend and resume:


                  If you experience downtime and have `deactivateFlag = true` any new messages will be held in a "SUSPENDED" status.

                  When your healthCheckUrl returns healthy again, the subscription will automatically be re-enabled and your messages will be sent.

                  We will ping your healthCheckUrl routinely using a POST call with an empty payload to check availability.

                  If your endpoint returns an unhealthy status of != 200, we will check the healthCheckUrl at a more frequent rate until it is healthy again.


                  If you experience downtime and have `deactivateFlag = false` and your message exhausts all retry attempts the message will go to a "FAILED" status.

                  Support will be notified and will reach out to suggest you execute the "REPLAY" endpoint at a later date when your server is healthy.



                  Reference the below values for formulas and calculations related to the frequency of retries depending on algorithm and configuration.

                  '
                properties:
                  algorithm:
                    type: string
                    default: ARITHMETIC
                    description: 'This is used to calculate the Retry Sequence.


                      Sample calculations using firstRetry=10, interval=30, maxNumberOfRetries=3

                      Arithmetic = a+r(n-1)

                      Retry 1 - 10 minutes

                      Retry 2 - 10+30x1 = 40 minutes

                      Retry 3 - 10+30x2 = 70 minutes


                      Geometric = ar^(n-1)

                      Retry 1 - 10 minutes

                      Retry 2 - 10x30^1 = 300 minutes

                      Retry 3 - 10x30^2 = 9,000 minutes

                      '
                  firstRetry:
                    type: integer
                    description: When to initiate first retry, after the initial call failed. (in mins).
                    default: 1
                  interval:
                    type: integer
                    description: The interval between retries (in mins).
                    default: 1
                  numberOfRetries:
                    type: integer
                    description: The number of retries per sequence.
                    default: 3
                  deactivateFlag:
                    type: string
                    description: 'Deactivate the subscription if your retries fail to deliver.


                      If this is set to `true`, the automatic suspend and resume feature will occur.

                      This would prevent new webhooks from attempting to deliver and to queue up until your healthCheckUrl returns 200 again, then all messages will be sent.


                      If this is set to `false`, new individual messages will continue to retry and exhaust all failures, but the subscription will stay active.

                      '
                  repeatSequenceCount:
                    type: integer
                    description: 'The number of times to repeat the complete retry sequence.

                      0 => don''t repeat the retry sequence

                      1 => repeat the retry sequence once (R1, R2, R3)+ (R1, R2, R3)

                      2 => repeat the retry sequence twice (R1, R2, R3) + (R1, R2, R3) + (R1, R2, R3)

                      '
                    default: 0
                  repeatSequenceWaitTime:
                    type: integer
                    description: 'The time to wait to before repeating the complete retry sequence.

                      Amount of time to wait between each sequence.

                      Sample calculation using repeatSequenceWaitTime=10

                      (R1, R2, R3) + (10) + (R1, R2, R3) + (10) + (R1, R2, R3)

                      '
                    default: 0
                  additionalAttributes:
                    description: Additional data, if any.
                    type: array
                    items:
                      type: object
                      additionalProperties:
                        type: string
              securityPolicy:
                type: object
                description: The security option to authenticate with your API or client server.
                properties:
                  securityType:
                    type: string
                    description: "Security Policy of the client server. \nPossible values:\n- key\n- oAuth\n- oAuth_JWT"
                  config:
                    description: Optional configuration object for if your API or server requires oAuth for an incoming webhook.
                    type: object
                    properties:
                      oAuthURL:
                        type: string
                        description: Client direct endpoint to the oAuth server.
                      oAuthTokenType:
                        type: string
                        description: "Token type for the oAuth config. \nPossible values:\n- Bearer"
                      additionalConfig:
                        description: Additional, free form configuration data.
                        type: object
                        properties:
                          aud:
                            type: string
                          client_id:
                            type: string
                          keyId:
                            type: string
                          scope:
                            type: string
              createdOn:
                type: string
                description: Date on which webhook was created/registered.
              notificationScope:
                type: string
                description: "The webhook scope. 1. SELF The Webhook is used to deliver webhooks for only this Organization (or Merchant). 2. DESCENDANTS The Webhook is used to deliver webhooks for this Organization and its children. This field is optional. \n \nPossible values:\n- SELF\n- DESCENDANTS"
                default: DESCENDANTS
            example:
              webhookId: b555a545-58a9-47c7-aef9-10a8e17f201a
              organizationId: <INSERT ORGANIZATION ID HERE>
              products:
              - productId: tokenManagement
                eventTypes:
                - tms.networktoken.provisioned
                - tms.networktoken.updated
                - tms.networktoken.binding
                - tms.accountupdater.enrollment
                - tms.accountupdater.update
              - productId: invoicing
                eventTypes:
                - invoicing.customer.invoice.paid
                - invoicing.customer.invoice.send
              webhookUrl: https://example.com:443/cybs
              healthCheckUrl: https://example.com:443/cybs/healthcheck
              status: INACTIVE
              name: My Webhook Subscription
              description: Webhook Subscription
              retryPolicy:
                algorithm: Geometric
                firstRetry: 3
                interval: 5
                numberOfRetries: 4
                deactivateFlag: true
              securityPolicy:
                securityType: oAuth
                config:
                  oAuthURL: https://MyWebhookServer.com:8443/oAuthToken
                  oAuthTokenType: Bearer
                  additionalConfig:
                    aud: idp.api.myServer.com
                    client_id: 650538A1-7AB0-AD3A-51AB-932ABC57AD70
                    keyId: y-daaaAVyF0176M7-eAZ34pR9Ts
                    scope: merchantacq:rte:write
              createdOn: '2021-02-25T23:25:11.000Z'
              notificationScope: SELF
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '500':
          description: Server error
      x-devcenter-metaData:
        categoryTag: Webhooks
        developerGuides: https://developer.cybersource.com/docs/cybs/en-us/webhooks/implementation/all/rest/webhooks/wh-fg-intro.html
    patch:
      tags:
      - Manage Webhooks
      summary: Update a Webhook Subscription
      description: Update a Webhook Subscription.
      parameters:
      - name: webhookId
        in: path
        type: string
        description: The Webhook Identifier.
        required: true
      - name: updateWebhook
        in: body
        description: The webhook payload or changes to apply.
        schema:
          type: object
          properties:
            name:
              type: string
              description: Client friendly webhook name.
            organizationId:
              type: string
              description: Organization Id.
            description:
              type: string
              description: Client friendly webhook description.
            products:
              type: array
              items:
                type: object
                properties:
                  productId:
                    type: string
                    description: Product ID.
                  eventTypes:
                    type: array
                    items:
                      type: string
                      description: Event types within the product that you would like subscriptions for.
                example:
                  productId: tokenManagement
                  eventTypes:
                  - tms.networktoken.provisioned
                  - tms.networktoken.updated
                  - tms.networktoken.binding
                  - tms.accountupdater.enrollment
                  - tms.accountupdater.update
            webhookUrl:
              type: string
              description: The client's endpoint (URL) to receive webhooks.
            notificationScope:
              type: string
              description: "The webhook scope. 1. SELF The Webhook is used to deliver webhooks for only this Organization (or Merchant). 2. DESCENDANTS The Webhook is used to deliver webhooks for this Organization and its children. This field is optional. \n \nPossible values:\n- SELF\n- DESCENDANTS"
              default: DESCENDANTS
            healthCheckUrl:
              type: string
              description: The client's health check endpoint (URL).
            securityPolicy:
              type: object
              description: The security option to authenticate with your API or client server.
              properties:
                securityType:
                  type: string
                  description: "Security Policy of the client server. \nPossible values:\n- key\n- oAuth\n- oAuth_JWT"
                config:
                  description: Optional configuration object for if your API or server requires oAuth for an incoming webhook.
                  type: object
                  properties:
                    oAuthURL:
                      type: string
                      description: Client direct endpoint to the oAuth server.
                    oAuthTokenType:
                      type: string
                      description: "Token type for the oAuth config. \nPossible values:\n- Bearer"
                    additionalConfig:
                      description: Additional, free form configuration data.
                      type: object
                      properties:
                        aud:
                          type: string
                        client_id:
                          type: string
                        keyId:
                          type: string
                        scope:
                          type: string
          example:
            name: Updated Billing Subscription
            webhookUrl: https://newwebhooks.com
      produces:
      - application/json;charset=utf-8
      consumes:
      - application/json;charset=utf-8
      responses:
        '200':
          description: Updated
          schema:
            type: object
            properties:
              webhookId:
                type: string
                description: Webhook Id. This is generated by the server.
              organizationId:
                type: string
                description: Organization ID.
              products:
                type: array
                items:
                  type: object
                  properties:
                    productId:
                      type: string
                      description: Product ID.
                    eventTypes:
                      type: array
                      items:
                        type: string
                        description: Event types within the product that you would like subscriptions for.
                  example:
                    productId: tokenManagement
                    eventTypes:
                    - tms.networktoken.provisioned
                    - tms.networktoken.updated
                    - tms.networktoken.binding
                    - tms.accountupdater.enrollment
                    - tms.accountupdater.update
              webhookUrl:
                type: string
                description: The client's endpoint (URL) to receive webhooks.
              healthCheckUrl:
                type: string
                description: The client's health check endpoint (URL).
              status:
                type: string
                description: Webhook status.
                default: INACTIVE
              name:
                type: string
                description: Client friendly webhook name.
              description:
                type: string
                description: Client friendly webhook description.
              retryPolicy:
                type: object
                description: 'Retry policy for the individual webhooks that are a part of your subscription. If a message fails to deliver, it will execute through this retry policy.


                  Automatic suspend and resume:


                  If you experience downtime and have `deactivateFlag = true` any new messages will be held in a "SUSPENDED" status.

                  When your healthCheckUrl returns healthy again, the subscription will automatically be re-enabled and your messages will be sent.

                  We will ping your healthCheckUrl routinely using a POST call with an empty payload to check availability.

                  If your endpoint returns an unhealthy status of != 200, we will check the healthCheckUrl at a more frequent rate until it is healthy again.


                  If you experience downtime and have `deactivateFlag = false` and your message exhausts all retry attempts the message will go to a "FAILED" status.

                  Support will be notified and will reach out to suggest you execute the "REPLAY" endpoint at a later date when your server is healthy.



                  Reference the below values for formulas and calculations related to the frequency of retries depending on algorithm and configuration.

                  '
                properties:
                  algorithm:
                    type: string
                    default: ARITHMETIC
                    description: 'This is used to calculate the Retry Sequence.


                      Sample calculations using firstRetry=10, interval=30, maxNumberOfRetries=3

                      Arithmetic = a+r(n-1)

                      Retry 1 - 10 minutes

                      Retry 2 - 10+30x1 = 40 minutes

                      Retry 3 - 10+30x2 = 70 minutes


                      Geometric = ar^(n-1)

                      Retry 1 - 10 minutes

                      Retry 2 - 10x30^1 = 300 minutes

                      Retry 3 - 10x30^2 = 9,000 minutes

                      '
                  firstRetry:
                    type: integer
                    description: When to initiate first retry, after the initial call failed. (in mins).
                    default: 1
                  interval:
                    type: integer
                    description: The interval between retries (in mins).
                    default: 1
                  numberOfRetries:
                    type: integer
                    description: The number of retries per sequence.
                    default: 3
                  deactivateFlag:
                    type: string
                    description: 'Deactivate the subscription if your retries fail to deliver.


                      If this is set to `true`, the automatic suspend and resume feature will occur.

                      This would prevent new webhooks from attempting to deliver and to queue up until your healthCheckUrl returns 200 again, then all messages will be sent.


                      If this is set to `false`, new individual messages will continue to retry and exhaust all failures, but the subscription will stay active.

                      '
                  repeatSequenceCount:
                    type: integer
                    description: 'The number of times to repeat the complete retry sequence.

                      0 => don''t repeat the retry sequence

                      1 => repeat the retry sequence once (R1, R2, R3)+ (R1, R2, R3)

                      2 => repeat the retry sequence twice (R1, R2, R3) + (R1, R2, R3) + (R1, R2, R3)

                      '
                    default: 0
                  repeatSequenceWaitTime:
                    type: integer
                    description: 'The time to wait to before repeating the complete retry sequence.

                      Amount of time to wait between each sequence.

                      Sample calculation using repeatSequenceWaitTime=10

                      (R1, R2, R3) + (10) + (R1, R2, R3) + (10) + (R1, R2, R3)

                      '
                    default: 0
                  additionalAttributes:
                    description: Additional data, if any.
                    type: array
                    items:
                      type: object
                      additionalProperties:
                        type: string
              securityPolicy:
                type: object
                descrip

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cybersource/refs/heads/main/openapi/cybersource-manage-webhooks-api-openapi.yml