CyberSource Manage Webhooks API
- Manage your webhooks. This will allow for you to update existing webhooks, test webhooks, or delete them.
- Manage your webhooks. This will allow for you to update existing webhooks, test webhooks, or delete them.
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