> ## Documentation Index
> Fetch the complete documentation index at: https://docs.closient.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List subscribable event types

> The full event catalog: every event type you may put in an endpoint's ``event_types``, what each one means, which envelope version introduced it, and which envelope versions exist. Subscribing to a value not listed here returns 422 rather than being silently accepted — so a typo costs you an error, never a subscription that quietly never fires.

``planned`` lists event types on the roadmap. They are **not** subscribable yet and are published only so you can see what is coming; each names the issue that will wire it.



## OpenAPI

````yaml /openapi/openapi-integrations.json get /integrations/api/v1/webhooks/event-types/
openapi: 3.1.0
info:
  title: Integrations API
  version: 1.0.0
  description: >
    Webhook endpoint management, event catalog, delivery tracking, and event
    replay.


    ## Authentication


    All endpoints require an API key passed via the `X-API-Key` HTTP header,
    unless otherwise noted.


    ```

    X-API-Key: csb_<body>_<checksum>

    ```


    Generate API keys in **Settings > API Keys** in your dashboard, or via the
    Account API.

    Session-based (cookie) authentication is also accepted for browser-based
    access.


    ## Rate Limits


    | Tier        | Requests / minute | Requests / day |

    |-------------|-------------------|----------------|

    | Default     | 300               | 10,000         |

    | Custom      | Contact us        | Contact us     |


    Rate-limit headers are included on every response so callers can
    self-throttle without

    hitting our 429s ("informed governor"):


    - `RateLimit-Policy` — every active window, e.g. `300;w=60, 10000;w=86400`

    - `RateLimit-Limit` — quota for the **most-restrictive** currently-active
    window

    - `RateLimit-Remaining` — requests left in that window

    - `RateLimit-Reset` — seconds until that window resets (relative; clock-skew
    safe)


    Legacy `X-RateLimit-*` aliases are also emitted for back-compat.
    `X-RateLimit-Reset`

    keeps the absolute Unix-timestamp shape to avoid breaking existing
    consumers.


    When rate-limited, you receive `429 Too Many Requests` with a
    `retry_after_seconds` field

    in the error envelope and a `Retry-After` header.


    ## Pagination


    List endpoints return paginated results in this envelope:


    ```json

    {
      "data": [...],
      "pagination": {
        "page": 1,
        "page_size": 25,
        "total_count": 342,
        "total_pages": 14,
        "has_next": true,
        "has_previous": false
      }
    }

    ```


    Use `?page=2&page_size=50` query parameters. Maximum page size is 100.


    ## Error Responses


    All errors conform to [RFC 9457 Problem
    Details](https://www.rfc-editor.org/rfc/rfc9457)

    with `Content-Type: application/problem+json`:


    ```json

    {
      "type": "https://closient.com/docs/errors/not_found",
      "title": "Not Found",
      "status": 404,
      "detail": "The requested resource was not found.",
      "error_code": "not_found",
      "retryable": false,
      "timestamp": "2026-03-31T12:00:00+00:00"
    }

    ```


    Common error codes: `unauthorized` (401), `forbidden` (403), `not_found`
    (404),

    `validation_error` (422), `rate_limited` (429), `internal_error` (500).
  termsOfService: https://www.closient.com/terms/
servers:
  - url: https://www.closient.com
security: []
tags:
  - name: Webhook Endpoints
    description: Register and manage webhook delivery endpoints.
  - name: Webhook Event Catalog
    description: >-
      Discover every subscribable event type and the envelope versions
      available.
  - name: Webhook Deliveries
    description: Track and replay webhook delivery attempts.
  - name: Webhook Events
    description: >-
      Durable event log with cursor-based replay, for recovering from a
      subscriber outage.
externalDocs:
  description: Closient Documentation
  url: https://docs.closient.com
paths:
  /integrations/api/v1/webhooks/event-types/:
    get:
      tags:
        - Webhook Event Catalog
      summary: List subscribable event types
      description: >-
        The full event catalog: every event type you may put in an endpoint's
        ``event_types``, what each one means, which envelope version introduced
        it, and which envelope versions exist. Subscribing to a value not listed
        here returns 422 rather than being silently accepted — so a typo costs
        you an error, never a subscription that quietly never fires.


        ``planned`` lists event types on the roadmap. They are **not**
        subscribable yet and are published only so you can see what is coming;
        each names the issue that will wire it.
      operationId: apps_integrations_webhooks_api_list_event_types_view
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCatalogResponseSchema'
      security:
        - APIKeyHeaderAuth: []
        - OAuthTokenAuth: []
        - SessionAuth: []
components:
  schemas:
    EventCatalogResponseSchema:
      description: Full catalog response for ``GET /webhooks/event-types/``.
      examples:
        - current_envelope_version: '2026-07-01'
          envelope_versions:
            - v1
            - '2026-07-01'
          events:
            - description: A recall affecting one of your products was opened.
              domain: recall
              event_type: recall.opened
              since: '2026-07-01'
              status: live
            - description: Superseded by the recall.* lifecycle.
              domain: catalog
              event_type: product.recalled
              since: v1
              status: deprecated
              superseded_by: recall.opened
          planned:
            - event_type: epcis.event_captured
              tracking_issue: C-4352
      properties:
        envelope_versions:
          description: >-
            Every envelope version an endpoint may be pinned to via
            ``api_version``.
          items:
            $ref: '#/components/schemas/EnvelopeVersionEnum'
          title: Envelope Versions
          type: array
        current_envelope_version:
          $ref: '#/components/schemas/EnvelopeVersionEnum'
          description: >-
            Version newly-created endpoints are pinned to. Existing endpoints
            are never moved to it.
        events:
          description: Every subscribable event type.
          items:
            $ref: '#/components/schemas/EventCatalogEntrySchema'
          title: Events
          type: array
        planned:
          description: >-
            Roadmap event types, not yet subscribable. See
            :class:`PlannedEventSchema`.
          items:
            $ref: '#/components/schemas/PlannedEventSchema'
          title: Planned
          type: array
      required:
        - envelope_versions
        - current_envelope_version
        - events
        - planned
      title: EventCatalogResponseSchema
      type: object
    EnvelopeVersionEnum:
      description: |-
        Payload-envelope versions an endpoint can be pinned to (C-4296).

        Mirrors :class:`apps.integrations.webhooks.catalog.EnvelopeVersion`.

        ``v1`` is the pre-catalog envelope, retained permanently because every
        endpoint created before C-4296 is pinned to it. ``2026-07-01`` is the
        current shape; versions are dated from here on.
      enum:
        - v1
        - '2026-07-01'
      title: EnvelopeVersionEnum
      type: string
    EventCatalogEntrySchema:
      description: >-
        One subscribable event type, as published by ``GET
        /webhooks/event-types/``.


        Typing ``event_type`` as :class:`WebhookEventTypeEnum` is what puts the

        whole catalog into the OpenAPI spec as an ``enum: [...]`` — a subscriber

        can discover every event they may subscribe to from the published spec

        alone, without asking us.
      examples:
        - description: A recall affecting one of your products was opened.
          domain: recall
          event_type: recall.opened
          since: '2026-07-01'
          status: live
      properties:
        event_type:
          $ref: '#/components/schemas/WebhookEventTypeEnum'
          description: >-
            Wire value. This is the exact string to put in an endpoint's
            ``event_types``.
        domain:
          $ref: '#/components/schemas/EventDomainEnum'
          description: >-
            Coarse grouping. Also usable as a subscription value on its own —
            subscribing to ``recall`` receives every ``recall.*`` event,
            including ones added later.
        status:
          $ref: '#/components/schemas/EventStatusEnum'
          description: >-
            ``live`` for events with a wired emitter; ``deprecated`` for values
            retained so pre-existing subscriptions keep validating. Both are
            subscribable; build new integrations against ``live`` only.
        since:
          $ref: '#/components/schemas/EnvelopeVersionEnum'
          description: >-
            Envelope version this event first shipped in. An endpoint pinned to
            an older version never receives it — which is the point of pinning,
            not a bug.
        description:
          description: One-sentence description of when this event fires.
          title: Description
          type: string
        superseded_by:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            For a deprecated entry, the event type to migrate to. ``null``
            otherwise.
          title: Superseded By
      required:
        - event_type
        - domain
        - status
        - since
        - description
      title: EventCatalogEntrySchema
      type: object
    PlannedEventSchema:
      description: >-
        A roadmap event type that is **not** yet subscribable.


        Published so the roadmap is discoverable, but deliberately excluded from

        :class:`WebhookEventTypeEnum`: accepting a subscription to an event with
        no

        emitter would be a subscription that silently never fires, and the

        subscriber would only find out at the moment they needed it.
      examples:
        - event_type: epcis.event_captured
          tracking_issue: C-4352
      properties:
        event_type:
          description: Wire value this event will use once its emitter ships.
          title: Event Type
          type: string
        tracking_issue:
          description: >-
            Linear issue that wires the emitter. Subscribing before then is
            rejected with 422.
          title: Tracking Issue
          type: string
      required:
        - event_type
        - tracking_issue
      title: PlannedEventSchema
      type: object
    WebhookEventTypeEnum:
      description: >-
        Every subscribable event type (C-4296).


        Mirrors :class:`apps.integrations.webhooks.catalog.WebhookEventType`.
        The

        two are asserted value-identical by

        ``test_webhook_catalog.py::TestCatalogIntegrity`` — this is the mirror
        the

        ``apps/CLAUDE.md`` API-empathy rule asks for, and typing the API's

        event-type fields as this enum is what puts the catalog in the published

        OpenAPI spec as ``enum: [...]`` instead of "any string".


        Members are named after the wire value with dots and hyphens replaced,
        but

        the **value** is the wire string and is what everything round-trips on.
      enum:
        - recall.opened
        - recall.amended
        - recall.expanded
        - recall.closed
        - signal.received
        - adverse_report.received
        - adverse_report.threshold_alert
        - serial_verification.flagged
        - test.ping
        - offer.updated
        - product.recalled
        - retailer.created
      title: WebhookEventTypeEnum
      type: string
    EventDomainEnum:
      description: >-
        Coarse catalog grouping (C-4296).


        Mirrors :class:`apps.integrations.webhooks.catalog.EventDomain`. Also

        usable as a subscription value on its own — subscribing to the domain

        prefix ``recall`` receives every ``recall.*`` event, including ones
        added

        after you subscribed.
      enum:
        - recall
        - signal
        - serial
        - catalog
        - system
      title: EventDomainEnum
      type: string
    EventStatusEnum:
      description: |-
        Lifecycle status of a catalog entry (C-4296).

        Mirrors :class:`apps.integrations.webhooks.catalog.EventStatus`. Both
        values are subscribable; only ``live`` is recommended for new
        integrations.
      enum:
        - live
        - deprecated
      title: EventStatusEnum
      type: string
  securitySchemes:
    APIKeyHeaderAuth:
      type: apiKey
      in: header
      name: X-API-Key
    OAuthTokenAuth:
      type: http
      scheme: bearer
    SessionAuth:
      type: apiKey
      in: cookie
      name: sessionid

````