openapi: 3.2.0 info: title: Gypsum Context Resources API description: '## Brand Context Management API Gypsum provides the messaging framework, personas, positioning, and brand context for VoyantIO integrations. ### Core Capabilities - **Context Endpoints** - Retrieve brand messaging, personas, products, use cases, and positioning - **ICP Management** - Ideal Customer Profile CRUD operations - **Campaign Management** - Marketing campaign tracking - **AI Chat** - Brand-aware conversational AI ### Authentication Most endpoints require `user_id` query parameter (Clerk organization ID). Demo access is available for testing. ### Base URL Production: `https://gypsum.voyant.io` Local: `http://localhost:3001`' version: 1.0.0 contact: name: VoyantIO url: https://voyant.io servers: - url: https://gypsum.voyant.io description: Production - url: http://localhost:3001 description: Local development tags: - name: resources description: Marketing resource management paths: /api/resources: get: tags: - resources summary: List Resources description: Retrieve all marketing resources. operationId: listResources parameters: - $ref: '#/components/parameters/userId' responses: '200': description: List of resources content: application/json: schema: type: object properties: resources: type: array items: $ref: '#/components/schemas/Resource' post: tags: - resources summary: Create Resource description: Create a new marketing resource. operationId: createResource parameters: - $ref: '#/components/parameters/userId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ResourceCreate' responses: '201': description: Resource created content: application/json: schema: $ref: '#/components/schemas/Resource' components: schemas: ResourceCreate: type: object required: - name - type properties: name: type: string type: type: string url: type: string description: type: string Resource: type: object properties: id: type: string name: type: string type: type: string url: type: string description: type: string created_at: type: string format: date-time parameters: userId: name: user_id in: query required: true schema: type: string description: Clerk organization ID (e.g., org_abc123)