{
  "openapi": "3.1.0",
  "info": {
    "title": "SceneScribe website API",
    "version": "1.0.0",
    "summary": "Public, read-only information about SceneScribe.",
    "description": "A small public API on scenescribe.pro with the website's status and public product information. No authentication. It does not give access to the SceneScribe platform or to any project data.",
    "contact": { "name": "SceneScribe", "email": "contact@scenescribe.pro", "url": "https://scenescribe.pro/docs/api/" }
  },
  "servers": [{ "url": "https://scenescribe.pro" }],
  "externalDocs": { "url": "https://scenescribe.pro/docs/api/" },
  "security": [],
  "paths": {
    "/api/status": {
      "get": {
        "operationId": "getStatus",
        "summary": "Health check",
        "responses": {
          "200": {
            "description": "The API is up.",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/Status" },
                "example": { "status": "ok", "service": "scenescribe.pro", "time": "2026-10-09T18:00:00.000Z" }
              }
            }
          }
        }
      }
    },
    "/api/info": {
      "get": {
        "operationId": "getInfo",
        "summary": "Public product information",
        "description": "What SceneScribe is, its development stage, the MVP window, languages, markets, contact addresses and site links. Same content as the About page.",
        "responses": {
          "200": {
            "description": "Product information.",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Info" } } }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Status": {
        "type": "object",
        "required": ["status", "service", "time"],
        "properties": {
          "status": { "type": "string", "enum": ["ok"] },
          "service": { "type": "string", "const": "scenescribe.pro" },
          "time": { "type": "string", "format": "date-time" }
        }
      },
      "Localized": {
        "type": "object",
        "required": ["en", "pt"],
        "properties": { "en": { "type": "string" }, "pt": { "type": "string" } }
      },
      "Info": {
        "type": "object",
        "required": ["name", "url", "description", "stage", "mvp", "languages", "contact"],
        "properties": {
          "name": { "type": "string" },
          "url": { "type": "string", "format": "uri" },
          "description": { "$ref": "#/components/schemas/Localized" },
          "mission": { "$ref": "#/components/schemas/Localized" },
          "audience": { "$ref": "#/components/schemas/Localized" },
          "stage": { "type": "string", "examples": ["in development"] },
          "mvp": {
            "type": "object",
            "properties": {
              "en": { "type": "string" },
              "pt": { "type": "string" },
              "window": { "type": "object", "properties": { "start": { "type": "string" }, "end": { "type": "string" } } },
              "audience": { "type": "string" }
            }
          },
          "publicSignup": { "type": "boolean" },
          "markets": { "type": "array", "items": { "type": "string" } },
          "marketOrder": { "$ref": "#/components/schemas/Localized" },
          "languages": { "type": "array", "items": { "type": "string" } },
          "contact": { "$ref": "#/components/schemas/Localized" },
          "pages": { "type": "object" },
          "llms": { "type": "object", "properties": { "summary": { "type": "string", "format": "uri" }, "full": { "type": "string", "format": "uri" } } },
          "api": { "type": "object" }
        }
      }
    }
  }
}
