GSMA · AsyncAPI Specification
Gsma Webhooks
Version
View Spec
View on GitHub
TelecommunicationsUnited KingdomStandardsTrade AssociationNetwork APIsCAMARAOpen GatewayMobile Network OperatorsIdentity VerificationSIM SwapMobile MoneyeSIM5GAnti-FraudSpecificationAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-07-25'
method: derived
source: callbacks[] declared in the harvested OpenAPI documents
spec_type: null
asyncapi_published: false
note: The GSMA publishes no AsyncAPI document and operates no event broker — it is a specification publisher, not an
endpoint operator. Five of the eighteen harvested specifications do declare a real, machine-readable webhook surface
as OpenAPI callbacks[], captured below. The four Open Gateway specs deliver CloudEvents 1.0 notifications by HTTP POST
to a consumer-supplied sink URL, authenticated with the notificationsBearerAuth scheme and a sinkCredential supplied
on the subscribing request. The Mobile Money API delivers its asynchronous results by HTTP PUT to the URL the client
passes in the X-Callback-URL header. Nothing here was invented; every entry maps to a callback object in a saved spec.
delivery:
- programme: GSMA Open Gateway (CAMARA)
style: CloudEvents 1.0 over HTTP POST
sink: '{$request.body#/sink}'
credential: sinkCredential on the request body
auth_scheme: notificationsBearerAuth (http bearer)
- programme: GSMA Mobile Money API
style: HTTP PUT of the completed resource (or error object)
sink: '{$request.header.X-Callback-URL}'
correlation: X-CorrelationID supplied by the client on the originating request
fallback: Asynchronous with polling — GET /requeststates/{serverCorrelationId}
surface_count: 5
surfaces:
- api: Mobile Money API
spec: openapi/gsma-mobile-money-api-openapi.yml
callback_count: 58
event_types: null
callbacks:
- callback: transactionsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsSuccessPUT
summary: Transaction Success Callback
triggered_by: POST /transactions
- callback: transactionsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsFailurePUT
summary: Transaction Failure Callback
triggered_by: POST /transactions
- callback: transactionsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsTransactionTypeSuccessPUT
summary: Transaction Success Callback
triggered_by: POST /transactions/type/{transactionType}
- callback: transactionsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsTransactionTypeFailurePUT
summary: Transaction Failure Callback
triggered_by: POST /transactions/type/{transactionType}
- callback: transactionsUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsTransactionsUpdatePUT
summary: Transactions Update Success Callback
triggered_by: PATCH /transactions/{transactionReference}
- callback: transactionsUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsTransactionsUpdateFailurePUT
summary: Transaction Update Failure Callback
triggered_by: PATCH /transactions/{transactionReference}
- callback: reversalsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsTransactionReferenceReversalsSuccessPUT
summary: Reversal Callback
triggered_by: POST /transactions/{transactionReference}/reversals
- callback: reversalsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsTransactionReferenceReversalfailurePUT
summary: Reversal Failure Callback
triggered_by: POST /transactions/{transactionReference}/reversals
- callback: batchTransactionsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsBatchTransactionsSuccessPUT
summary: Batch Transactions Callback
triggered_by: POST /batchtransactions
- callback: batchTransactionsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsBatchTransactionsFailurePUT
summary: Batch Transaction Failure Callback
triggered_by: POST /batchtransactions
- callback: batchTransactionsUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsBatchTransactionsUpdatePUT
summary: Batch Transactions Update Success Callback
triggered_by: PATCH /batchtransactions/{batchId}
- callback: batchTransactionsUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: transactionsBatchTransactionsUpdateFailurePUT
summary: Batch Transaction Update Failure Callback
triggered_by: PATCH /batchtransactions/{batchId}
- callback: accountsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountsSuccessPUT
summary: Account Success Callback
triggered_by: POST /accounts/{identityType}
- callback: accountsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountsFailurePUT
summary: Account Failure Callback
triggered_by: POST /accounts/{identityType}
- callback: accountsUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountsUpdateAccountIdSuccessPUT
summary: Account Update Success Callback
triggered_by: PATCH /accounts/{accountId}
- callback: accountsUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountsUpdateAccountIdFailurePUT
summary: Account Update Failure Callback
triggered_by: PATCH /accounts/{accountId}
- callback: accountsUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountsUpdateIdentifierTypeIdentifierSuccessPUT
summary: Account Update Success Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}
- callback: accountsUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountsUpdateIdentifierTypeIdentifierFailurePUT
summary: Account Update Failure Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}
- callback: accountIdentitiesUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountIdentitiesUpdateAccountIdSuccessPUT
summary: Account Identity Update Success Callback
triggered_by: PATCH /accounts/{accountId}/identities/{identityId}
- callback: accountIdentitiesUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountIdentitiesUpdateAccountIdFailurePUT
summary: Account Identities Update Failure Callback
triggered_by: PATCH /accounts/{accountId}/identities/{identityId}
- callback: accountsUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountIdentitiesUpdateIdentifierTypeIdentifierSuccessPUT
summary: Account Identity Update Success Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}/identities/{identityId}
- callback: accountIdentitiesUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: accountIdentitiesUpdateIdentifierTypeIdentifierFailurePUT
summary: Account Identity Update Failure Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}/identities/{identityId}
- callback: billsPaymentsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsSuccessPUT
summary: Bill Payments Success Callback
triggered_by: POST /accounts/{accountId}/bills/{billReference}/payments
- callback: billsPaymentsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsFailurePUT
summary: Bill Payments Failure Callback
triggered_by: POST /accounts/{accountId}/bills/{billReference}/payments
- callback: billsPaymentsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsIdentifierTypeIdentifierSuccessPUT
summary: Bill Payments Success Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/bills/{billReference}/payments
- callback: billsPaymentsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsIdentifierTypeIdentifierFailurePUT
summary: Bill Payments Failure Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/bills/{billReference}/payments
- callback: billsPaymentsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsReferenceSuccessPUT
summary: Bill Payments Success Callback
triggered_by: POST /bills/{billReference}/payments
- callback: billsPaymentsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsReferenceFailurePUT
summary: Bill Payments Failure Callback
triggered_by: POST /bills/{billReference}/payments
- callback: billsPaymentsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsSuccessPUT
summary: Bill Payments Success Callback
triggered_by: POST /accounts/{accountId}/bills/payments
- callback: billsPaymentsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsFailurePUT
summary: Bill Payments Failure Callback
triggered_by: POST /accounts/{accountId}/bills/payments
- callback: billsPaymentsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsIdentifierTypeIdentifierSuccessPUT
summary: Bill Payments Success Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/bills/payments
- callback: billsPaymentsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: billsPaymentsIdentifierTypeIdentifierFailurePUT
summary: Bill Payments Failure Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/bills/payments
- callback: debitMandatesSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: debitMandatesAccountIdSuccessPUT
summary: Debit Mandates Success Callback
triggered_by: POST /accounts/{accountId}/debitmandates
- callback: debitMandatesFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: debitMandatesAccountIdFailurePUT
summary: Debit Mandates Failure Callback
triggered_by: POST /accounts/{accountId}/debitmandates
- callback: debitMandatesSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: debitMandatesIdentifierTypeIdentifierSuccessPUT
summary: Debit Mandates Success Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/debitmandates
- callback: debitMandatesFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: debitMandatesIdentifierTypeIdentifierFailurePUT
summary: Debit Mandates Failure Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/debitmandates
- callback: debitMandatesUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: debitMandateUpdateAccountIdSuccessPUT
summary: Debit Mandate Update Success Callback
triggered_by: PATCH /accounts/{accountId}/debitmandates/{debitMandateReference}
- callback: debitMandateUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: debitMandateUpdateAccountIdFailurePUT
summary: Debit Mandate Update Failure Callback
triggered_by: PATCH /accounts/{accountId}/debitmandates/{debitMandateReference}
- callback: debitMandatesUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: debitMandateUpdateIdentifierTypeIdentifierSuccessPUT
summary: Debit Mandate Update Success Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}/debitmandates/{debitMandateReference}
- callback: debitMandateUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: debitMandateUpdateIdentifierTypeIdentifierFailurePUT
summary: Debit Mandate Update Failure Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}/debitmandates/{debitMandateReference}
- callback: linksSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: linksAccountIdSuccessPUT
summary: Links Success Callback
triggered_by: POST /accounts/{accountId}/links
- callback: linksFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: linksAccountIdFailurePUT
summary: Links Failure Callback
triggered_by: POST /accounts/{accountId}/links
- callback: linksSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: linksIdentifierTypeIdentifierSuccessPUT
summary: Links Success Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/links
- callback: linksFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: linksIdentifierTypeIdentifierFailurePUT
summary: Links Failure Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/links
- callback: linksUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: linkUpdateAccountIdSuccessPUT
summary: Account Link Update Success Callback
triggered_by: PATCH /accounts/{accountId}/links/{linkReference}
- callback: linkUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: linkUpdateAccountIdFailurePUT
summary: Account Link Update Failure Callback
triggered_by: PATCH /accounts/{accountId}/links/{linkReference}
- callback: linksUpdateSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: linkUpdateIdentifierTypeIdentifierSuccessPUT
summary: Account Link Update Success Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}/links/{linkReference}
- callback: linkUpdateFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: linkUpdateIdentifierTypeIdentifierFailurePUT
summary: Account Link Update Failure Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}/links/{linkReference}
- callback: quotationsSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: quotationsSuccessPUT
summary: Quotations Success Callback
triggered_by: POST /quotations
- callback: quotationsFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: quotationsFailurePUT
summary: Quotations Failure Callback
triggered_by: POST /quotations
- callback: authorisationCodesSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: authorisationCodesAccountIdSuccessPUT
summary: Authorisation Codes Success Callback
triggered_by: POST /accounts/{accountId}/authorisationcodes
- callback: authorisationCodesFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: authorisationCodesAccountIdFailurePUT
summary: Authorisation Codes Failure Callback
triggered_by: POST /accounts/{accountId}/authorisationcodes
- callback: authorisationCodesSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: authorisationCodesIdentifierTypeIdentifierSuccessPUT
summary: Authorisation Codes Success Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/authorisationcodes
- callback: authorisationCodesFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: authorisationCodesIdentifierTypeIdentifierFailurePUT
summary: Authorisation Codes Failure Callback
triggered_by: POST /accounts/{identifierType}/{identifier}/authorisationcodes
- callback: authorisationCodesSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: authorisationCodeUpdateAccountIdSuccessPUT
summary: Authorisation Code Update Success Callback
triggered_by: PATCH /accounts/{accountId}/authorisationcodes/{authorisationCode}
- callback: authorisationCodesFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: authorisationCodeAccountIdFailurePUT
summary: Authorisation Code Update Failure Callback
triggered_by: PATCH /accounts/{accountId}/authorisationcodes/{authorisationCode}
- callback: authorisationCodesSuccessEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: authorisationCodeUpdateIdentifierTypeIdentifierSuccessPUT
summary: Authorisation Code Update Success Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}/authorisationcodes/{authorisationCode}
- callback: authorisationCodesFailureEvent
sink_expression: '{$request.header.X-Callback-URL}'
method: PUT
operationId: authorisationCodeIdentifierTypeIdentifierFailurePUT
summary: Authorisation Code Update Failure Callback
triggered_by: PATCH /accounts/{identifierType}/{identifier}/authorisationcodes/{authorisationCode}
- api: Carrier Billing
spec: openapi/gsma-open-gateway-carrier-billing-openapi.yml
callback_count: 2
event_types:
- org.camaraproject.carrier-billing.v0.payment-cancelled
- org.camaraproject.carrier-billing.v0.payment-completed
- org.camaraproject.carrier-billing.v0.payment-denied
- org.camaraproject.carrier-billing.v0.payment-pending-validation
- org.camaraproject.carrier-billing.v0.payment-reserved
callbacks:
- callback: notifications
sink_expression: '{$request.body#/sink}'
method: POST
operationId: createPaymentNotification
summary: Carrier Billing payment notifications
triggered_by: POST /payments
- callback: notifications
sink_expression: '{$request.body#/sink}'
method: POST
operationId: preparePaymentNotification
summary: Carrier Billing payment notifications
triggered_by: POST /payments/prepare
- api: Carrier Billing Refund
spec: openapi/gsma-open-gateway-carrier-billing-refund-openapi.yml
callback_count: 1
event_types:
- org.camaraproject.carrier-billing-refund.v0.refund-completed
- org.camaraproject.carrier-billing-refund.v0.refund-denied
- org.camaraproject.carrier-billing-refund.v0.refund-in-bill
- org.camaraproject.carrier-billing.v0.payment-reserved
callbacks:
- callback: notifications
sink_expression: '{$request.body#/sink}'
method: POST
operationId: createRefundNotification
summary: Carrier Billing refund notifications
triggered_by: POST /payments/{paymentId}/refunds
- api: Population Density Data
spec: openapi/gsma-open-gateway-population-density-data-openapi.yml
callback_count: 1
event_types: null
callbacks:
- callback: populationDensityDataCallback
sink_expression: '{$request.body#/sink}'
method: POST
operationId: postNotification
summary: Population Density Data callback
triggered_by: POST /retrieve
- api: Quality-On-Demand
spec: openapi/gsma-open-gateway-quality-on-demand-openapi.yml
callback_count: 1
event_types:
- org.camaraproject.quality-on-demand.v0.qos-status-changed
callbacks:
- callback: notifications
sink_expression: '{$request.body#/sink}'
method: POST
operationId: postNotification
summary: Session notifications callback
triggered_by: POST /sessions