{
  "openapi": "3.1.0",
  "info": {
    "title": "AI Librarians public website API",
    "version": "1.0.0",
    "description": "Public discovery and community services. Member actions require Firebase authentication and authorization."
  },
  "servers": [
    {
      "url": "https://www.ai-librarians.org"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "summary": "Community homepage; Accept: text/markdown or text/html",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_homepage",
        "description": "Community homepage; Accept: text/markdown or text/html",
        "security": []
      },
      "head": {
        "summary": "Community homepage; Accept: text/markdown or text/html (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_homepage",
        "description": "Community homepage; Accept: text/markdown or text/html (headers only)",
        "security": []
      }
    },
    "/api/github": {
      "get": {
        "summary": "Public GitHub organization repositories",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "org",
                    "repos"
                  ],
                  "properties": {
                    "org": {
                      "type": "string"
                    },
                    "repos": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Repository"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_api_github",
        "description": "Public GitHub organization repositories",
        "security": []
      },
      "head": {
        "summary": "Public GitHub organization repositories (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_api_github",
        "description": "Public GitHub organization repositories (headers only)",
        "security": []
      }
    },
    "/sitemap.xml": {
      "get": {
        "summary": "Public page sitemap",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_sitemap_xml",
        "description": "Public page sitemap",
        "security": []
      },
      "head": {
        "summary": "Public page sitemap (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_sitemap_xml",
        "description": "Public page sitemap (headers only)",
        "security": []
      }
    },
    "/rss.xml": {
      "get": {
        "summary": "Published blog RSS feed",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_rss_xml",
        "description": "Published blog RSS feed",
        "security": []
      },
      "head": {
        "summary": "Published blog RSS feed (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_rss_xml",
        "description": "Published blog RSS feed (headers only)",
        "security": []
      }
    },
    "/github-releases.xml": {
      "get": {
        "summary": "Public GitHub releases RSS feed",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_github-releases_xml",
        "description": "Public GitHub releases RSS feed",
        "security": []
      },
      "head": {
        "summary": "Public GitHub releases RSS feed (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_github-releases_xml",
        "description": "Public GitHub releases RSS feed (headers only)",
        "security": []
      }
    },
    "/api/sitemap": {
      "get": {
        "summary": "Public page sitemap",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_api_sitemap",
        "description": "Public page sitemap",
        "security": []
      },
      "head": {
        "summary": "Public page sitemap (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_api_sitemap",
        "description": "Public page sitemap (headers only)",
        "security": []
      }
    },
    "/api/rss": {
      "get": {
        "summary": "Published blog RSS feed",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_api_rss",
        "description": "Published blog RSS feed",
        "security": []
      },
      "head": {
        "summary": "Published blog RSS feed (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_api_rss",
        "description": "Published blog RSS feed (headers only)",
        "security": []
      }
    },
    "/api/github-releases": {
      "get": {
        "summary": "Public GitHub releases RSS feed",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_api_github-releases",
        "description": "Public GitHub releases RSS feed",
        "security": []
      },
      "head": {
        "summary": "Public GitHub releases RSS feed (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_api_github-releases",
        "description": "Public GitHub releases RSS feed (headers only)",
        "security": []
      }
    },
    "/feed": {
      "get": {
        "summary": "Published blog RSS feed",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "get_feed",
        "description": "Published blog RSS feed",
        "security": []
      },
      "head": {
        "summary": "Published blog RSS feed (headers only)",
        "responses": {
          "200": {
            "description": "Same headers as GET, without a response body"
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "operationId": "head_feed",
        "description": "Published blog RSS feed (headers only)",
        "security": []
      }
    },
    "/api/community-advisor": {
      "post": {
        "summary": "Public community advisor; SSE data contains JSON events",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "messages"
                ],
                "properties": {
                  "messages": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "object",
                      "required": [
                        "role",
                        "content"
                      ],
                      "properties": {
                        "role": {
                          "type": "string",
                          "enum": [
                            "user",
                            "assistant",
                            "model"
                          ]
                        },
                        "content": {
                          "type": "string",
                          "minLength": 1
                        }
                      }
                    }
                  },
                  "pageContext": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      },
                      "excerpt": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "operationId": "post_api_community-advisor",
        "description": "Public community advisor; SSE data contains JSON events"
      },
      "options": {
        "operationId": "advisor_options",
        "description": "Preflight response",
        "responses": {
          "204": {
            "description": "No content"
          }
        }
      }
    },
    "/api/github-intake": {
      "post": {
        "summary": "Submit a GitHub issue as an approved Commons member",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "403": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "title",
                  "details"
                ],
                "properties": {
                  "title": {
                    "type": "string"
                  },
                  "details": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string"
                  },
                  "link": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "FirebaseBearer": []
          }
        ],
        "operationId": "post_api_github-intake",
        "description": "Submit a GitHub issue as an approved Commons member"
      }
    },
    "/api/notify-approval": {
      "post": {
        "summary": "Send an approval welcome email as a Commons admin",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "403": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "503": {
            "description": "Request or service error; includes a resolution hint",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "email"
                ],
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "FirebaseBearer": []
          }
        ],
        "operationId": "post_api_notify-approval",
        "description": "Send an approval welcome email as a Commons admin"
      }
    },
    "/api": {
      "get": {
        "operationId": "get_api_directory",
        "summary": "Discover the AI Librarians public API",
        "description": "Public endpoint directory with documentation links. No authentication or API key required.",
        "security": [],
        "responses": {
          "200": {
            "description": "Public API directory",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiDiscovery"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      },
      "head": {
        "operationId": "head_api_directory",
        "summary": "API directory response headers",
        "description": "Same headers as GET without a response body.",
        "security": [],
        "responses": {
          "200": {
            "description": "API directory response headers"
          }
        }
      }
    },
    "/api/discovery": {
      "get": {
        "operationId": "get_api_discovery_alias",
        "summary": "Discover the AI Librarians public API",
        "description": "Public endpoint directory with documentation links. No authentication or API key required.",
        "security": [],
        "responses": {
          "200": {
            "description": "Public API directory",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiDiscovery"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      },
      "head": {
        "operationId": "head_api_discovery_alias",
        "summary": "API directory response headers",
        "description": "Same headers as GET without a response body.",
        "security": [],
        "responses": {
          "200": {
            "description": "API directory response headers"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "required": [
          "error",
          "code",
          "message",
          "resolution",
          "status"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "resolution": {
            "type": "string"
          }
        }
      },
      "Repository": {
        "type": "object",
        "required": [
          "name",
          "fullName",
          "url",
          "description",
          "homepage",
          "topics",
          "language",
          "stars",
          "openIssues",
          "pushedAt"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "fullName": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "description": {
            "type": "string"
          },
          "homepage": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "pushedAt": {
            "type": "string"
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "stars": {
            "type": "integer",
            "minimum": 0
          },
          "openIssues": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "ApiDiscovery": {
        "type": "object",
        "required": [
          "name",
          "version",
          "description",
          "url",
          "documentation",
          "openapi",
          "authentication",
          "endpoints"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "documentation": {
            "type": "string"
          },
          "openapi": {
            "type": "string"
          },
          "authentication": {
            "type": "string"
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "method",
                "path",
                "description",
                "contentType"
              ],
              "properties": {
                "method": {
                  "type": "string"
                },
                "path": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "contentType": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "securitySchemes": {
      "FirebaseBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Firebase ID token"
      }
    }
  },
  "externalDocs": {
    "description": "Developer portal with quickstart and read-only sandbox",
    "url": "https://www.ai-librarians.org/developers"
  }
}
