openapi: 3.0.3
info:
  title: Hava API
  description: Public and publishable interfaces for Hava. Business deployments use scoped publishable credentials; private administrative credentials must never be exposed to clients.
  version: "1.1"
servers:
  - url: https://hava.intellign.us
paths:
  /api/chat:
    post:
      summary: Send a message to the Hava application
      responses:
        "200": { description: Hava response }
  /api/business/chat:
    post:
      summary: Stream a message through a published Hava Business deployment
      description: Used by Hava's website runtime and headless clients. Responses are streamed. A deployment ID and scoped publishable key are required.
      parameters:
        - in: header
          name: X-Hava-Key
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [deploymentId, message]
              properties:
                deploymentId: { type: string }
                message: { type: string }
                history:
                  type: array
                  items:
                    type: object
                    properties:
                      role: { type: string, enum: [user, assistant] }
                      content: { type: string }
      responses:
        "200": { description: Streamed Hava response }
        "401": { description: Invalid publishable key }
        "403": { description: Origin or deployment access denied }
  /api/business/deployment:
    get:
      summary: Resolve public presentation data for a Hava Business deployment
      parameters:
        - in: query
          name: deploymentId
          required: true
          schema: { type: string }
        - in: header
          name: X-Hava-Key
          required: true
          schema: { type: string }
      responses:
        "200": { description: Publishable deployment configuration }
        "401": { description: Invalid publishable key }
