{
  "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": {},
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Organization API key, sent as `Authorization: Bearer boom_org_...`."
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string"
          },
          "suggestions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Fuzzy-matched alternatives (on unknown-type 404s)."
          }
        }
      }
    },
    "parameters": {
      "Limit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "schema": {
          "type": "integer",
          "default": 100,
          "minimum": 1,
          "maximum": 1000
        },
        "description": "Page size. Defaults to 100, max 1000."
      },
      "Cursor": {
        "name": "cursor",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "Opaque pagination cursor from a prior response's `next_cursor`. Omit for the first page."
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Invalid Content-Type, malformed JSON, or schema validation failure",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": {
                "code": "invalid_json",
                "message": "Invalid JSON body: Expected ',' or '}' after property value at position 16"
              }
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Missing or invalid API key",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": "Missing or malformed Authorization header"
            }
          }
        }
      },
      "RateLimited": {
        "description": "Rate limit exceeded. See Retry-After and X-RateLimit-* headers for the ceiling that applied.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
        "error": {
          "code": "rate_limited",
          "message": "Rate limit exceeded. Retry after the indicated delay."
        }
      }
          }
        }
      },
      "ServerError": {
        "description": "Unexpected server error (never leaks internals)",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": "Internal server error"
            }
          }
        }
      }
    }
  }
}
