{
  "openapi": "3.1.0",
  "info": {
    "title": "Brownyx Mind Public API",
    "version": "1.0.0",
    "description": "Static public API description for Brownyx Mind. Private and destructive endpoints require authentication and are not public capabilities."
  },
  "servers": [
    {
      "url": "https://mind.brownyx.com",
      "description": "Production API host"
    }
  ],
  "tags": [
    {
      "name": "system",
      "description": "Public operational health checks."
    },
    {
      "name": "public-art",
      "description": "Read-only curated public export endpoints for static art and demo surfaces."
    },
    {
      "name": "planned-authenticated-agent",
      "description": "Planned future scoped API-key agent actions; not anonymous public access."
    }
  ],
  "paths": {
    "/health": {
      "get": {
        "summary": "Backend health check",
        "tags": [
          "system"
        ],
        "responses": {
          "200": {
            "description": "Service is alive"
          }
        }
      }
    },
    "/api/public-art/health": {
      "get": {
        "summary": "Public-art export health",
        "tags": [
          "public-art"
        ],
        "responses": {
          "200": {
            "description": "Public-art export health state"
          }
        }
      }
    },
    "/api/public-art/state": {
      "get": {
        "summary": "Public export state",
        "tags": [
          "public-art"
        ],
        "responses": {
          "200": {
            "description": "Current public state"
          }
        }
      }
    },
    "/api/public-art/live": {
      "get": {
        "summary": "Latest public trace",
        "tags": [
          "public-art"
        ],
        "responses": {
          "200": {
            "description": "Latest public trace"
          },
          "404": {
            "description": "No public trace is available"
          }
        }
      }
    },
    "/api/public-art/feed": {
      "get": {
        "summary": "Public trace feed",
        "tags": [
          "public-art"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "trace_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public feed"
          }
        }
      }
    },
    "/api/public-art/sleep": {
      "get": {
        "summary": "Public sleep state",
        "tags": [
          "public-art"
        ],
        "responses": {
          "200": {
            "description": "Public sleep state"
          }
        }
      }
    },
    "/api/public-art/artifacts": {
      "get": {
        "summary": "Public artifact summaries",
        "tags": [
          "public-art"
        ],
        "responses": {
          "200": {
            "description": "Public artifact summaries"
          }
        }
      }
    },
    "/api/public-art/identity": {
      "get": {
        "summary": "Public temporal identity",
        "tags": [
          "public-art"
        ],
        "responses": {
          "200": {
            "description": "Public temporal identity"
          }
        }
      }
    },
    "/api/minds/{mind_id}/events": {
      "post": {
        "summary": "Submit event to a mind (planned authenticated agent skill)",
        "tags": [
          "planned-authenticated-agent"
        ],
        "description": "Planned future write-capable agent action. Requires a scoped Bearer API key, rate limiting, audit, and the normal Brownyx runtime policy/inhibition pipeline. This is not anonymous public access.",
        "security": [
          {
            "ScopedApiKey": [
              "minds:write"
            ]
          }
        ],
        "parameters": [
          {
            "name": "mind_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Event accepted for processing"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Missing required scope"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ScopedApiKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Scoped API key. Required for authenticated agent write capabilities."
      }
    }
  },
  "x-brownyx-boundaries": {
    "public": [
      "/health",
      "/api/public-art/*"
    ],
    "authenticated": [
      "/api/minds/*",
      "/api/admin/*",
      "/api/experiments/*",
      "/api/diagnostics/*"
    ],
    "planned_agent_write": [
      "authenticated event submission via scoped API key"
    ],
    "not_public": [
      "private memories",
      "private traces",
      "operator dashboard",
      "connected External Knowledge data",
      "internal logs"
    ]
  }
}
