{
  "openapi": "3.1.0",
  "info": {
    "title": "ISMS Copilot marketing public feeds",
    "version": "1.0.0",
    "summary": "Curl-open JSON on www.ismscopilot.com/api/public for coding agents.",
    "description": "These GET feeds already live on the marketing origin under /api/public. They are the machine-readable product truth advertised in /llms.txt. They do not execute chat, Account MCP, or the model API. Product how-to lives at https://docs.ismscopilot.com. The model API base is https://api.ismscopilot.com/v1 (documented separately at https://docs.ismscopilot.com/docs/api). Breaking changes to these feeds ship as a new path prefix (/v2), not by silently changing /v1.",
    "contact": {
      "name": "ISMS Copilot",
      "email": "privacy@ismscopilot.com",
      "url": "https://www.ismscopilot.com/about"
    },
    "license": {
      "name": "Proprietary"
    }
  },
  "servers": [
    {
      "url": "https://www.ismscopilot.com",
      "description": "Production marketing origin"
    }
  ],
  "tags": [
    {
      "name": "public-feeds",
      "description": "Unauthenticated GET JSON already published under /api/public. Responses send X-Robots-Tag: noindex."
    }
  ],
  "security": [],
  "paths": {
    "/api/public/frameworks/v1": {
      "get": {
        "operationId": "listPublicFrameworksV1",
        "tags": ["public-feeds"],
        "summary": "Public framework catalog snapshot",
        "description": "Versioned snapshot of frameworks listed on /frameworks. Fields are already public on the hub. Region-aggregator entries are excluded. Breaking changes go to /v2.",
        "responses": {
          "200": {
            "description": "Catalog",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicFrameworksV1" }
              }
            }
          }
        }
      }
    },
    "/api/public/connect/v1": {
      "get": {
        "operationId": "getAccountMcpConnectV1",
        "tags": ["public-feeds"],
        "summary": "Account MCP connect protocol",
        "description": "Machine-readable Account MCP connect protocol (endpoint, PAT scopes, mode=fast vs think, async get_reply). Markdown body is content/agent-connect.md.",
        "responses": {
          "200": {
            "description": "Connect protocol",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicMarkdownFeedV1" }
              }
            }
          }
        }
      }
    },
    "/api/public/agents/v1": {
      "get": {
        "operationId": "getAgentsProductV1",
        "tags": ["public-feeds"],
        "summary": "Agents product status",
        "description": "Live Account MCP / agents product truth. Not a waitlist. Markdown body is content/agent-product.md.",
        "responses": {
          "200": {
            "description": "Agents product",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicMarkdownFeedV1" }
              }
            }
          }
        }
      }
    },
    "/api/public/api/v1": {
      "get": {
        "operationId": "getApiProductV1",
        "tags": ["public-feeds"],
        "summary": "Model API product status",
        "description": "Live OpenAI-compatible model API (sk-isms) product truth, including Zero Data Retention for request content. Markdown body is content/agent-api-product.md. This feed describes the API; it is not the API itself.",
        "responses": {
          "200": {
            "description": "API product",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicMarkdownFeedV1" }
              }
            }
          }
        }
      }
    },
    "/api/public/embed/v1": {
      "get": {
        "operationId": "getEmbedProductV1",
        "tags": ["public-feeds"],
        "summary": "Embed / Assistants product status",
        "description": "Live embed widget truth: loader, auth planes, dual retention paths, free tier, honest limits. Markdown body is content/agent-embed-product.md.",
        "responses": {
          "200": {
            "description": "Embed product",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicMarkdownFeedV1" }
              }
            }
          }
        }
      }
    },
    "/api/public/pricing/v1": {
      "get": {
        "operationId": "getPricingSummaryV1",
        "tags": ["public-feeds"],
        "summary": "Plan table snapshot",
        "description": "Machine-readable plan summary for agents. Not a legal offer. In-app checkout wins on drift. Markdown body is content/agent-pricing.md.",
        "responses": {
          "200": {
            "description": "Pricing snapshot",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicMarkdownFeedV1" }
              }
            }
          }
        }
      }
    },
    "/api/public/changelog/v1": {
      "get": {
        "operationId": "getChatChangelogV1",
        "tags": ["public-feeds"],
        "summary": "Chat product changelog",
        "description": "User-facing chat ships as markdown JSON. Mirror of content/product-changelog.md.",
        "responses": {
          "200": {
            "description": "Changelog",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicMarkdownFeedV1" }
              }
            }
          }
        }
      }
    },
    "/api/public/platform-changelog/v1": {
      "get": {
        "operationId": "getPlatformChangelogV1",
        "tags": ["public-feeds"],
        "summary": "Platform changelog",
        "description": "API + embed + platform console ships as markdown JSON. Mirror of content/platform-changelog.md.",
        "responses": {
          "200": {
            "description": "Platform changelog",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicMarkdownFeedV1" }
              }
            }
          }
        }
      }
    },
    "/api/public/logged-out-landings/v1": {
      "get": {
        "operationId": "getLoggedOutLandingsV1",
        "tags": ["public-feeds"],
        "summary": "Logged-out chat landing copy",
        "description": "Public landing copy snapshot for chat.ismscopilot.com logged-out surfaces. READ only. Does not open chat POST wallet paths.",
        "responses": {
          "200": {
            "description": "Landing snapshot",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PublicLoggedOutLandingsV1" }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "PublicMarkdownFeedV1": {
        "type": "object",
        "additionalProperties": true,
        "required": ["generatedAt", "source", "contract", "markdown"],
        "properties": {
          "generatedAt": { "type": "string", "format": "date-time" },
          "source": { "type": "string", "const": "ismscopilot-marketing" },
          "contract": { "type": "string", "const": "v1" },
          "product": { "type": "string" },
          "status": { "type": "string" },
          "canonicalHumanPage": { "type": "string", "format": "uri" },
          "docsPage": { "type": "string", "format": "uri" },
          "note": { "type": "string" },
          "markdown": {
            "type": "string",
            "description": "Curated markdown body from content/agent-*.md or changelog files."
          },
          "byteLength": { "type": "integer" }
        }
      },
      "PublicFrameworksV1": {
        "type": "object",
        "required": ["generatedAt", "source", "contract", "count", "frameworks"],
        "properties": {
          "generatedAt": { "type": "string", "format": "date-time" },
          "source": { "type": "string", "const": "ismscopilot-marketing" },
          "contract": { "type": "string", "const": "v1" },
          "count": { "type": "integer" },
          "frameworks": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PublicFramework" }
          }
        }
      },
      "PublicFramework": {
        "type": "object",
        "required": ["slug", "name", "fullName", "region", "regionLabel", "jurisdictions", "domain", "supportLevel", "keywords"],
        "properties": {
          "slug": { "type": "string" },
          "name": { "type": "string" },
          "fullName": { "type": "string" },
          "region": { "type": "string" },
          "regionLabel": { "type": "string" },
          "jurisdictions": { "type": "array", "items": { "type": "string" } },
          "domain": { "type": "array", "items": { "type": "string" } },
          "supportLevel": { "type": "string" },
          "keywords": { "type": "array", "items": { "type": "string" } }
        }
      },
      "PublicLoggedOutLandingsV1": {
        "type": "object",
        "additionalProperties": true,
        "required": ["servedAt", "source"],
        "properties": {
          "servedAt": { "type": "string", "format": "date-time" },
          "source": { "type": "string", "const": "ismscopilot-marketing" },
          "snapshotSource": { "type": "string" }
        }
      }
    }
  }
}
