Canal webhooks API
The webhooks API from Canal — 2 operation(s) for webhooks.
The webhooks API from Canal — 2 operation(s) for webhooks.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/canal-webhooks-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Rokt Catalog csv Webhooks API
version: 1.0.1
description: Integrate with Rokt Catalog
servers:
- url: https://api.shopcanal.com/platform
description: Rokt Catalog Storefront Public API
tags:
- name: webhooks
paths:
/webhooks/:
get:
operationId: webhooks_list
description: '
Retrieve a paginated list of all webhook subscriptions currently registered and active for the authenticated application (identified by the API credentials used in the request).
The response (`RegisteredWebhookSerializer`, paginated) includes the unique Rokt Catalog `ID` (UUID), the subscribed `topic`, and the target `address` (URL) for each registered webhook.
Results are returned using cursor-based pagination (`PlatformPagination`).
'
parameters:
- name: cursor
required: false
in: query
description: The pagination cursor value.
schema:
type: string
tags:
- webhooks
security:
- platformAppId: []
platformAppToken: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedRegisteredWebhookList'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
post:
operationId: webhooks_create
description: '
Register a new endpoint URL to receive notifications (webhooks) from Rokt Catalog when specific events occur related to your store.
The request body (`CreateUpdateWebhookSerializer`) requires:
`topic`: A string representing the event type you want to subscribe to (e.g., `product/update`, `order/cancel`, `fulfillment/update`). See Catalog documentation for the full list of available topics.
`address`: The HTTPS URL of your application''s endpoint that will receive the webhook POST requests from Catalog.
**Process:** Catalog validates the topic and creates a webhook subscription record associated with your application''s integration settings. When an event matching the `topic` occurs for a resource linked to your store (e.g., an order associated with your shop is cancelled), Catalog will send an HTTP POST request containing the relevant event payload (JSON format) to the registered `address`.
A successful registration returns `201 Created` with the details of the new subscription (`RegisteredWebhookSerializer`), including its unique Catalog `ID` (UUID).
'
tags:
- webhooks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdateWebhook'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CreateUpdateWebhook'
multipart/form-data:
schema:
$ref: '#/components/schemas/CreateUpdateWebhook'
required: true
security:
- platformAppId: []
platformAppToken: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredWebhook'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
/webhooks/{id}/:
get:
operationId: webhooks_retrieve
description: '
Retrieve the details for a single, specific webhook subscription, identified by its Rokt Catalog `ID` (UUID) provided in the URL path.
Access is restricted to subscriptions belonging to the authenticated application.
The response (`RegisteredWebhookSerializer`) includes the `id`, `topic`, and `address`.
If the provided `ID` is invalid or does not correspond to a webhook registered by your application, a `404 Not Found` error is returned.
'
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- webhooks
security:
- platformAppId: []
platformAppToken: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredWebhook'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
put:
operationId: webhooks_update
description: '
Update the configuration of an existing webhook subscription. Identify the subscription by its Rokt Catalog `ID` (UUID) in the URL path.
The request body (`CreateUpdateWebhookSerializer`) can include the new `topic` and/or `address` you want to set. Partial updates are allowed (only include the fields you want to change).
**Validation:** If provided, the `topic` must be one of the valid `WEBHOOK_TOPICS`.
A successful update returns `200 OK` with the complete, updated details of the webhook subscription (`RegisteredWebhookSerializer`).
'
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- webhooks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdateWebhook'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CreateUpdateWebhook'
multipart/form-data:
schema:
$ref: '#/components/schemas/CreateUpdateWebhook'
required: true
security:
- platformAppId: []
platformAppToken: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredWebhook'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
patch:
operationId: webhooks_partial_update
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- webhooks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedRegisteredWebhook'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedRegisteredWebhook'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedRegisteredWebhook'
security:
- platformAppId: []
platformAppToken: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredWebhook'
description: ''
delete:
operationId: webhooks_destroy
description: '
Permanently remove an existing webhook subscription, identified by its Rokt Catalog `ID` (UUID) in the URL path.
Access is restricted to subscriptions belonging to the authenticated application.
Once deleted, Catalog will immediately stop sending notifications for the associated `topic` to the registered `address`.
**Warning:** This action is **irreversible**. To resume receiving notifications, you must create a new subscription.
A successful deletion returns an HTTP `200 OK` status with an empty response body.
'
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- webhooks
security:
- platformAppId: []
platformAppToken: []
responses:
'200':
description: No response body
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: ''
components:
schemas:
Error:
type: object
properties:
message:
type: string
detail: {}
PatchedRegisteredWebhook:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
topic:
$ref: '#/components/schemas/TopicEnum'
address:
type: string
maxLength: 512
updated_at:
type: string
format: date-time
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
PaginatedRegisteredWebhookList:
type: object
required:
- results
properties:
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?cursor=cD00ODY%3D"
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?cursor=cj0xJnA9NDg3
results:
type: array
items:
$ref: '#/components/schemas/RegisteredWebhook'
TopicEnum:
enum:
- order/create
- order/update
- order/cancel
- product/create
- product/update
- fulfillment/create
- fulfillment/update
type: string
description: '* `order/create` - order/create
* `order/update` - order/update
* `order/cancel` - order/cancel
* `product/create` - product/create
* `product/update` - product/update
* `fulfillment/create` - fulfillment/create
* `fulfillment/update` - fulfillment/update'
CreateUpdateWebhook:
type: object
properties:
topic:
type: string
address:
type: string
required:
- address
- topic
RegisteredWebhook:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
topic:
$ref: '#/components/schemas/TopicEnum'
address:
type: string
maxLength: 512
updated_at:
type: string
format: date-time
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
required:
- address
- created_at
- id
- topic
- updated_at
securitySchemes:
basicAuth:
type: http
scheme: basic
platformAppId:
type: apiKey
in: header
name: X-CANAL-APP-ID
platformAppToken:
type: apiKey
in: header
name: X-CANAL-APP-TOKEN