Canal webhooks API

The webhooks API from Canal — 2 operation(s) for webhooks.

Operations 6

GET /webhooks/ #
POST /webhooks/ #
GET /webhooks/{id}/ #
PUT /webhooks/{id}/ #
PATCH /webhooks/{id}/ #
DELETE /webhooks/{id}/ #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/canal-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

canal-webhooks-api-openapi.yml Raw ↑
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