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

# Set trigger

> Configure how people enter the journey by updating its ENTRY node: manual, segment (needs segmentId), or cdp_event (needs eventName), with an optional frequency cap.



## OpenAPI

````yaml /api-reference/openapi.json patch /api/v1/journeys/{journeyId}/trigger
openapi: 3.1.0
info:
  title: Boom API
  version: 1.0.0
  description: >-
    Boom's public REST API — one uniform surface over every platform capability.
    CDP: upsert people and custom objects, define object and relationship types,
    link and unlink relationships, and record behavioral events — one record per
    request or up to 1000 per request via the `/batch` endpoints. Segments: read
    (list, read, membership) and full authoring — discover the filterable
    catalog, validate a filter, create and update segments, preview match
    counts, and trigger evaluation. Initiatives: create and configure outreach
    initiatives, link WhatsApp templates, drive the lifecycle (launch, cancel,
    archive), and read collected-data summaries. Participants: enroll people
    into an active initiative, track their status, read conversation
    transcripts, and stop outreach. Journeys: read-only access to always-on
    message flows and their metrics. WhatsApp templates: list your WhatsApp
    numbers and list, read, and create message templates. The same capabilities
    are exposed as MCP tools with identical schemas.
servers:
  - url: https://www.useboom.ai
    description: Production
  - url: https://dev.useboom.ai
    description: Development (sandbox — use a development organization API key)
security:
  - bearerAuth: []
paths:
  /api/v1/journeys/{journeyId}/trigger:
    patch:
      tags:
        - Journeys
      summary: Set trigger
      description: >-
        Configure how people enter the journey by updating its ENTRY node:
        manual, segment (needs segmentId), or cdp_event (needs eventName), with
        an optional frequency cap.
      operationId: journeys_set_trigger
      parameters:
        - name: journeyId
          in: path
          required: true
          schema:
            $schema: https://json-schema.org/draft/2020-12/schema
            type: string
            minLength: 1
            description: >-
              A draft journey id, or the initiative id (resolves to its current
              draft).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: https://json-schema.org/draft/2020-12/schema
              type: object
              properties:
                triggerType:
                  type: string
                  enum:
                    - manual
                    - segment
                    - cdp_event
                  description: How people enter the journey.
                segmentId:
                  description: Required for segment triggers.
                  type: string
                segmentName:
                  type: string
                eventName:
                  description: Required for cdp_event triggers.
                  type: string
                maxEnrollments:
                  description: Frequency cap; both-or-neither with enrollmentWindow.
                  type: integer
                  minimum: 1
                  maximum: 9007199254740991
                enrollmentWindow:
                  description: Frequency-cap window, e.g. '7d'.
                  type: string
              required:
                - triggerType
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  id:
                    type: string
                    description: Journey (workflow version) id.
                  initiativeId:
                    type: string
                    description: The initiative this journey belongs to.
                  status:
                    type: string
                    enum:
                      - DRAFT
                      - PUBLISHED
                      - STOPPED
                    description: >-
                      DRAFT (editable), PUBLISHED (live, frozen), or STOPPED
                      (retired).
                  version:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                    description: Version number within the initiative.
                  definition:
                    type: object
                    properties:
                      id:
                        description: >-
                          Journey id; carried for round-trip ergonomics.
                          Optional on create.
                        type: string
                      name:
                        type: string
                        minLength: 1
                        description: Journey name.
                      metadata:
                        type: object
                        properties:
                          initiativeType:
                            type: string
                          version:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          cancelOnEvents:
                            description: >-
                              Cancel an in-flight run when any of these events
                              arrive.
                            type: object
                            properties:
                              eventNames:
                                type: array
                                items:
                                  type: string
                            required:
                              - eventNames
                            additionalProperties: false
                        additionalProperties: false
                        description: Optional journey-level metadata.
                      actions:
                        minItems: 1
                        type: array
                        items:
                          oneOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: ENTRY
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    description:
                                      type: string
                                    triggerType:
                                      description: >-
                                        How people enter: manual (added by an
                                        operator or API call), segment (on
                                        entering a segment), or cdp_event (when
                                        an event is received). Defaults to
                                        manual.
                                      type: string
                                      enum:
                                        - manual
                                        - segment
                                        - cdp_event
                                    segmentId:
                                      description: >-
                                        Segment id — required when triggerType
                                        is segment.
                                      type: string
                                    segmentName:
                                      description: Cached segment display name (optional).
                                      type: string
                                    eventName:
                                      description: >-
                                        CDP event name — required when
                                        triggerType is cdp_event.
                                      type: string
                                    maxEnrollments:
                                      description: >-
                                        Frequency cap: max enrollments per
                                        person within enrollmentWindow.
                                        Both-or-neither with enrollmentWindow.
                                      type: integer
                                      minimum: 1
                                      maximum: 9007199254740991
                                    enrollmentWindow:
                                      description: Rolling window for the frequency cap.
                                      type: string
                                  additionalProperties: false
                                  description: >-
                                    Trigger node config. Exactly one ENTRY node
                                    per journey.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: SEND_MESSAGE
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    templateId:
                                      description: >-
                                        Approved WhatsApp template id. Resolve
                                        ids from the catalog.
                                      type: string
                                    templateName:
                                      type: string
                                    channel:
                                      description: >-
                                        Send channel. Only whatsapp is live
                                        today.
                                      type: string
                                      enum:
                                        - whatsapp
                                        - sms
                                        - email
                                    templateBindings:
                                      description: >-
                                        Map of template placeholder → variable
                                        reference.
                                      type: object
                                      propertyNames:
                                        type: string
                                      additionalProperties:
                                        type: string
                                    channelId:
                                      description: >-
                                        Sending WhatsApp channel (WABA) id.
                                        Required before publishing.
                                      type: string
                                    sendImmediately:
                                      description: >-
                                        Deprecated business-hours gate; prefer a
                                        preceding DELAY.
                                      type: boolean
                                  additionalProperties: false
                                  description: Sends a WhatsApp template.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: CONVERSATION_BLOCK
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    goal:
                                      type: string
                                    maxTimeout:
                                      description: >-
                                        How long to wait for a reply before
                                        timing out.
                                      type: string
                                    mode:
                                      type: string
                                      enum:
                                        - AGENT
                                        - ESCALATE
                                    outputs:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          label:
                                            type: string
                                          type:
                                            type: string
                                            enum:
                                              - string
                                              - number
                                              - date
                                              - boolean
                                              - json
                                          description:
                                            type: string
                                          builtin:
                                            type: boolean
                                        required:
                                          - id
                                          - label
                                          - type
                                          - builtin
                                        additionalProperties: false
                                  additionalProperties: false
                                  description: >-
                                    Legacy combined wait + AI conversation
                                    block.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: WAIT_FOR_REPLY
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    maxTimeout:
                                      description: >-
                                        How long to wait for the first reply
                                        before timing out.
                                      type: string
                                  additionalProperties: false
                                  description: Waits for the person to reply.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: MANAGE_CONVERSATION
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    mode:
                                      description: >-
                                        AGENT (AI-led) or ESCALATE (human
                                        handoff). Defaults to AGENT.
                                      type: string
                                      enum:
                                        - AGENT
                                        - ESCALATE
                                    inactivityTimeout:
                                      description: >-
                                        Rolling idle window (e.g. '12h'), resets
                                        on each inbound message. After this much
                                        silence the node routes INACTIVE
                                        (extracts, does not close). Range
                                        1h–24h; requires the
                                        journey-inactivity-timeout flag.
                                      type: string
                                  additionalProperties: false
                                  description: Runs the AI-led conversation.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: DISPATCH_EVENT
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    eventName:
                                      type: string
                                      minLength: 1
                                      description: >-
                                        CDP event name to record. Must match the
                                        CDP name pattern.
                                    properties:
                                      description: >-
                                        Literal string values, or { var: path }
                                        bindings resolved to typed values at
                                        dispatch time.
                                      type: object
                                      propertyNames:
                                        type: string
                                      additionalProperties:
                                        anyOf:
                                          - type: string
                                          - type: object
                                            properties:
                                              var:
                                                type: string
                                            required:
                                              - var
                                            additionalProperties: false
                                    description:
                                      type: string
                                  required:
                                    - eventName
                                  additionalProperties: false
                                  description: Records a CDP event for the person.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: DELAY
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    mode:
                                      description: >-
                                        How the wait is measured. Defaults to
                                        duration.
                                      type: string
                                      enum:
                                        - duration
                                        - until_date
                                        - until_weekday
                                    duration:
                                      description: For mode duration.
                                      type: string
                                    targetAt:
                                      description: ISO 8601 instant, for mode until_date.
                                      type: string
                                    weekdays:
                                      description: >-
                                        ISO weekdays 1=Mon..7=Sun, for mode
                                        until_weekday.
                                      type: array
                                      items:
                                        type: integer
                                        minimum: 1
                                        maximum: 7
                                    windowStartMinutes:
                                      type: integer
                                      minimum: 0
                                      maximum: 1439
                                    windowEndMinutes:
                                      type: integer
                                      minimum: 0
                                      maximum: 1439
                                    timezone:
                                      description: >-
                                        IANA timezone. Load-bearing for
                                        until_weekday.
                                      type: string
                                    description:
                                      type: string
                                  additionalProperties: false
                                  description: Pauses the run.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: DECISION
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    logic:
                                      type: string
                                      enum:
                                        - AND
                                        - OR
                                    conditions:
                                      type: array
                                      items:
                                        oneOf:
                                          - type: object
                                            properties:
                                              kind:
                                                type: string
                                                const: value
                                              selectionPath:
                                                type: string
                                                description: >-
                                                  Dot-path into the run, e.g.
                                                  workflowState.totalPrice.
                                              operator:
                                                type: string
                                                enum:
                                                  - eq
                                                  - neq
                                                  - gt
                                                  - lt
                                                  - contains
                                                  - isSet
                                              value:
                                                type: string
                                            required:
                                              - kind
                                              - selectionPath
                                              - operator
                                              - value
                                            additionalProperties: false
                                          - type: object
                                            properties:
                                              kind:
                                                type: string
                                                const: event
                                              eventName:
                                                type: string
                                              subjectSelectionPath:
                                                type: string
                                              occurred:
                                                type: boolean
                                            required:
                                              - kind
                                              - eventName
                                              - subjectSelectionPath
                                              - occurred
                                            additionalProperties: false
                                          - type: object
                                            properties:
                                              kind:
                                                type: string
                                                const: cdp_predicate
                                              term:
                                                type: object
                                                propertyNames:
                                                  type: string
                                                additionalProperties: {}
                                                description: >-
                                                  A single live person/computed predicate
                                                  term. See journeys_authoring_catalog for
                                                  its shape.
                                            required:
                                              - kind
                                              - term
                                            additionalProperties: false
                                          - type: object
                                            properties:
                                              kind:
                                                type: string
                                                const: cdp_object
                                              objectType:
                                                type: string
                                              matchAttr:
                                                type: string
                                              matchSelectionPath:
                                                type: string
                                              exists:
                                                type: boolean
                                            required:
                                              - kind
                                              - objectType
                                              - matchAttr
                                              - matchSelectionPath
                                              - exists
                                            additionalProperties: false
                                        description: One decision condition.
                                    description:
                                      type: string
                                  required:
                                    - logic
                                    - conditions
                                  additionalProperties: false
                                  description: Two-way branch. Emits YES / NO.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: CASE
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    selectionPath:
                                      type: string
                                      description: >-
                                        Person attribute (attributes.*) or
                                        extracted field (engagement.extracted.*)
                                        to switch on.
                                    branches:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                            description: >-
                                              Stable branch id; edge handle is
                                              case:<id>.
                                          value:
                                            type: string
                                            description: Value matched. Unique within the node.
                                          label:
                                            type: string
                                        required:
                                          - id
                                          - value
                                        additionalProperties: false
                                      description: >-
                                        Up to 10 branches. A case:default handle
                                        is always required.
                                    description:
                                      type: string
                                  required:
                                    - selectionPath
                                    - branches
                                  additionalProperties: false
                                  description: N-way switch on a person attribute.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: HTTP_REQUEST
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    method:
                                      type: string
                                      enum:
                                        - GET
                                        - POST
                                        - PUT
                                        - PATCH
                                        - DELETE
                                      description: HTTP method.
                                    url:
                                      type: string
                                      minLength: 1
                                      description: >-
                                        Target URL. Supports {{variable}}
                                        placeholders.
                                    headers:
                                      description: Request headers as key/value pairs.
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          key:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                          - key
                                          - value
                                        additionalProperties: false
                                    body:
                                      description: Request body. mode none sends no body.
                                      type: object
                                      properties:
                                        mode:
                                          type: string
                                          enum:
                                            - none
                                            - json
                                            - raw
                                        content:
                                          type: string
                                        contentType:
                                          type: string
                                      required:
                                        - mode
                                      additionalProperties: false
                                    credentialId:
                                      description: >-
                                        Deprecated/legacy: HttpCredential row id
                                        used to authenticate the request. Prefer
                                        credentialKey.
                                      type: string
                                    credentialKey:
                                      description: >-
                                        Logical credential key; the pinned
                                        environment selects the secret.
                                      type: string
                                    timeoutMs:
                                      description: >-
                                        Request timeout in milliseconds. Max
                                        30000 (30s).
                                      type: integer
                                      exclusiveMinimum: 0
                                      maximum: 30000
                                    maxAttempts:
                                      description: Max attempts including the first. Max 5.
                                      type: integer
                                      exclusiveMinimum: 0
                                      maximum: 5
                                    documentUrlTtlSeconds:
                                      description: >-
                                        TTL (seconds, ≤86400) for presigned
                                        engagement.documents URLs this node
                                        emits. Default 86400.
                                      type: integer
                                      exclusiveMinimum: 0
                                      maximum: 86400
                                  required:
                                    - method
                                    - url
                                  additionalProperties: false
                                  description: >-
                                    Calls an external HTTP endpoint. Emits
                                    SUCCESS or FAILED.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                            - type: object
                              properties:
                                id:
                                  type: string
                                  minLength: 1
                                  description: Node id, unique within the journey.
                                kind:
                                  type: string
                                  const: EXIT
                                name:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    The label shown on the canvas. Required
                                    before publishing.
                                position:
                                  type: object
                                  properties:
                                    x:
                                      type: number
                                    'y':
                                      type: number
                                  required:
                                    - x
                                    - 'y'
                                  additionalProperties: false
                                  description: >-
                                    Explicit canvas position. Omit it and the
                                    server auto-lays-out the graph top-down;
                                    only set it to preserve a hand-arranged
                                    layout.
                                inputs:
                                  type: object
                                  properties:
                                    outcome:
                                      type: string
                                    nextInitiativeId:
                                      description: Chain into another initiative on exit.
                                      type: string
                                  additionalProperties: false
                                  description: Terminal node.
                              required:
                                - id
                                - kind
                              additionalProperties: false
                        description: >-
                          The nodes. Exactly one ENTRY and at least one EXIT are
                          required to publish.
                      edges:
                        type: array
                        items:
                          type: object
                          properties:
                            from:
                              type: string
                              description: Source node id.
                            to:
                              type: string
                              description: Target node id.
                            sourceHandle:
                              type: string
                              description: >-
                                The emitted signal that activates this edge
                                (e.g. SENT, REPLIED, YES, case:<id>). A handle
                                may wire to at most one node.
                            metadata:
                              type: object
                              properties:
                                signalCategory:
                                  type: string
                                  enum:
                                    - lifecycle
                                    - system
                                signalDescription:
                                  type: string
                              additionalProperties: false
                          required:
                            - from
                            - to
                            - sourceHandle
                          additionalProperties: false
                          description: >-
                            A connection: node `from` routes to `to` when it
                            emits `sourceHandle`.
                        description: The connections between node handles.
                    required:
                      - name
                      - actions
                      - edges
                    additionalProperties: false
                    description: The full journey graph.
                required:
                  - id
                  - initiativeId
                  - status
                  - version
                  - definition
                additionalProperties: false
        '400':
          description: Validation failed or the request cannot proceed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Stable machine-readable error code (snake_case).
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - error
        '401':
          description: Missing, malformed, or revoked API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Stable machine-readable error code (snake_case).
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - error
        '404':
          description: The resource does not exist in this organization.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Stable machine-readable error code (snake_case).
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - error
        '409':
          description: >-
            Conflicts with the current state (duplicates, wrong lifecycle
            state).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Stable machine-readable error code (snake_case).
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - error
        '422':
          description: The request is well-formed but semantically invalid.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Stable machine-readable error code (snake_case).
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - error
        '429':
          description: Rate limit exceeded — retry after `Retry-After`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Stable machine-readable error code (snake_case).
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - error
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Stable machine-readable error code (snake_case).
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - error
        '503':
          description: Transient error — retry with a narrower request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Stable machine-readable error code (snake_case).
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - error
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Organization API key, sent as `Authorization: Bearer boom_org_...`.'

````