Canal webhooks API
The webhooks API from Canal — 2 operation(s) for webhooks.
The webhooks API from Canal — 2 operation(s) for webhooks.
openapi: 3.0.3
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:
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
CreateUpdateWebhook:
type: object
properties:
topic:
type: string
address:
type: string
required:
- address
- topic
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'
PaginatedRegisteredWebhookList:
type: object
required:
- results
properties:
next:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?cursor=cD00ODY%3D"
previous:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?cursor=cj0xJnA9NDg3
results:
type: array
items:
$ref: '#/components/schemas/RegisteredWebhook'
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
Error:
type: object
properties:
message:
type: string
detail: {}
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