{
  "openapi": "3.1.0",
  "info": {
    "title": "tino.build public site API",
    "version": "1.0.0",
    "description": "Read-only public catalog for tino.build. No authentication. Does not expose admin tools (Eve, Maple, OpenWiki writes).",
    "contact": {
      "name": "Valentino Espinoza",
      "email": "xvalentino13@gmail.com",
      "url": "https://www.tino.build/contact"
    },
    "license": {
      "name": "Site terms via privacy page",
      "url": "https://www.tino.build/privacy"
    }
  },
  "servers": [
    {
      "url": "https://www.tino.build"
    }
  ],
  "paths": {
    "/api/v1/site": {
      "get": {
        "operationId": "getSiteOverview",
        "summary": "Site overview",
        "description": "Return what tino.build is, when to use it, and the public agent entrypoints.",
        "tags": [
          "site"
        ],
        "responses": {
          "200": {
            "description": "Site overview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteOverview"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/pages": {
      "get": {
        "operationId": "listPublicPages",
        "summary": "List public pages",
        "description": "List public pages agents can fetch as HTML or Markdown.",
        "tags": [
          "site"
        ],
        "responses": {
          "200": {
            "description": "Public page catalog",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicPages"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "getOpenApiDocument",
        "summary": "OpenAPI document",
        "description": "This OpenAPI 3.1 description of the public site API.",
        "tags": [
          "discovery"
        ],
        "responses": {
          "200": {
            "description": "OpenAPI document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "SiteOverview": {
        "type": "object",
        "required": [
          "name",
          "person",
          "origin",
          "whenToUse",
          "contactEmail",
          "github",
          "llmsTxt",
          "docs",
          "sitemap",
          "openapi",
          "publicMcp",
          "adminMcp"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "person": {
            "type": "string"
          },
          "origin": {
            "type": "string",
            "format": "uri"
          },
          "whenToUse": {
            "type": "string"
          },
          "contactEmail": {
            "type": "string",
            "format": "email"
          },
          "github": {
            "type": "string",
            "format": "uri"
          },
          "llmsTxt": {
            "type": "string",
            "format": "uri"
          },
          "docs": {
            "type": "string",
            "format": "uri"
          },
          "sitemap": {
            "type": "string",
            "format": "uri"
          },
          "openapi": {
            "type": "string",
            "format": "uri"
          },
          "publicMcp": {
            "type": "string",
            "format": "uri"
          },
          "adminMcp": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "PublicPage": {
        "type": "object",
        "required": [
          "path",
          "title",
          "url"
        ],
        "properties": {
          "path": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "PublicPages": {
        "type": "object",
        "required": [
          "pages",
          "sitemapPaths"
        ],
        "properties": {
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicPage"
            }
          },
          "sitemapPaths": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Problem": {
        "type": "object",
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "code",
          "suggestion"
        ],
        "properties": {
          "type": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "suggestion": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "site",
      "description": "Public catalog of the site"
    },
    {
      "name": "discovery",
      "description": "Machine-readable discovery documents"
    }
  ]
}
