{
  "openapi": "3.1.0",
  "info": {
    "title": "Dzaleka Online Services Public API",
    "version": "1.0.0",
    "description": "Machine-readable description of the public endpoints exposed by Dzaleka Online Services."
  },
  "servers": [
    {
      "url": "https://services.dzaleka.com",
      "description": "Production"
    }
  ],
  "externalDocs": {
    "description": "Human-readable API documentation",
    "url": "https://services.dzaleka.com/api-docs"
  },
  "tags": [
    {
      "name": "Collections",
      "description": "Published collection endpoints."
    },
    {
      "name": "Encyclopedia",
      "description": "Read-only Dzaleka Encyclopedia records, search, and facets."
    },
    {
      "name": "Search",
      "description": "Search, index, and query endpoints."
    },
    {
      "name": "Feeds",
      "description": "Syndication endpoints."
    },
    {
      "name": "Data",
      "description": "Dashboard and snapshot endpoints."
    },
    {
      "name": "Actions",
      "description": "Submission and export endpoints."
    },
    {
      "name": "Discovery",
      "description": "Agent and API discovery endpoints."
    }
  ],
  "paths": {
    "/api/services": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List published services",
        "description": "Returns published service organisations and support listings.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List published services with optional metadata",
        "description": "Returns published service organisations and support listings. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list published services",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/resources": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List published resources",
        "description": "Returns published resources, documents, and downloads.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List published resources with optional metadata",
        "description": "Returns published resources, documents, and downloads. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list published resources",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/events": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List published events",
        "description": "Returns published community events and activity listings.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List published events with optional metadata",
        "description": "Returns published community events and activity listings. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list published events",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/photos": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List published photos",
        "description": "Returns photo gallery items and related metadata.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List published photos with optional metadata",
        "description": "Returns photo gallery items and related metadata. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list published photos",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List published jobs",
        "description": "Returns published job listings and opportunity notices.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List published jobs with optional metadata",
        "description": "Returns published job listings and opportunity notices. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list published jobs",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/news": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List published news",
        "description": "Returns published news articles and updates.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List published news with optional metadata",
        "description": "Returns published news articles and updates. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list published news",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/courses": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List published courses",
        "description": "Returns published e-learning course records and learning resources.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List published courses with optional metadata",
        "description": "Returns published e-learning course records and learning resources. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list published courses",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/community-voices": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List community voices",
        "description": "Returns published community voice and story submissions.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List community voices with optional metadata",
        "description": "Returns published community voice and story submissions. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list community voices",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/profiles": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List skills exchange profiles",
        "description": "Returns published skills exchange profiles.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List skills exchange profiles with optional metadata",
        "description": "Returns published skills exchange profiles. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list skills exchange profiles",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/talents": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List talent profiles",
        "description": "Returns talent directory records exposed through the API.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List talent profiles with optional metadata",
        "description": "Returns talent directory records exposed through the API. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list talent profiles",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/marketplace": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List marketplace listings",
        "description": "Returns published marketplace product and service listings.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List marketplace listings with optional metadata",
        "description": "Returns published marketplace product and service listings. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list marketplace listings",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/stores": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List marketplace stores",
        "description": "Returns published marketplace store records.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List marketplace stores with optional metadata",
        "description": "Returns published marketplace store records. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list marketplace stores",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/rights": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List rights guidance",
        "description": "Returns rights and legal guidance entries from the rights navigator.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List rights guidance with optional metadata",
        "description": "Returns rights and legal guidance entries from the rights navigator. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list rights guidance",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/artists": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List artists",
        "description": "Returns published artist profiles used by the public art catalogue.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List artists with optional metadata",
        "description": "Returns published artist profiles used by the public art catalogue. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list artists",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/artworks": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List artworks",
        "description": "Returns published artwork records from the public art catalogue.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List artworks with optional metadata",
        "description": "Returns published artwork records from the public art catalogue. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list artworks",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/poets": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List poets",
        "description": "Returns poet profiles and creative directory entries.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List poets with optional metadata",
        "description": "Returns poet profiles and creative directory entries. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list poets",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/dancers": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List dancers",
        "description": "Returns dancer and dance crew profiles.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List dancers with optional metadata",
        "description": "Returns dancer and dance crew profiles. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list dancers",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/docs": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List documentation pages",
        "description": "Returns documentation pages from the docs content collection.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List documentation pages with optional metadata",
        "description": "Returns documentation pages from the docs content collection. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list documentation pages",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/pages": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List published pages",
        "description": "Returns published markdown reference pages served through the catch-all page route.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "List published pages with optional metadata",
        "description": "Returns published markdown reference pages served through the catch-all page route. Accepts an optional JSON body with export-style options such as includeMetadata and includeStats.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Collections"
        ],
        "summary": "CORS preflight for list published pages",
        "description": "Returns allowed methods and headers for the endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/encyclopedia": {
      "get": {
        "tags": [
          "Encyclopedia"
        ],
        "summary": "List and search encyclopedia entries",
        "description": "Returns filtered, sorted, and paginated Dzaleka Encyclopedia records.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Full-text search query."
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Exact entry category."
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Exact entry type."
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "reviewed",
                "developing"
              ]
            }
          },
          {
            "name": "featured",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "title",
                "updated"
              ]
            }
          },
          {
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Set to body to include Markdown bodies."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Encyclopedia"
        ],
        "summary": "CORS preflight for encyclopedia entries",
        "description": "Returns allowed methods and headers.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/encyclopedia/{slug}": {
      "get": {
        "tags": [
          "Encyclopedia"
        ],
        "summary": "Get an encyclopedia entry",
        "description": "Returns one complete entry as JSON or Schema.org JSON-LD.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "jsonld"
              ]
            },
            "description": "Return JSON-LD."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Encyclopedia"
        ],
        "summary": "CORS preflight for an encyclopedia entry",
        "description": "Returns allowed methods and headers.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/encyclopedia/suggest": {
      "get": {
        "tags": [
          "Encyclopedia"
        ],
        "summary": "Suggest encyclopedia entries",
        "description": "Returns lightweight ranked suggestions for search interfaces.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 20,
              "default": 8
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/encyclopedia/facets": {
      "get": {
        "tags": [
          "Encyclopedia"
        ],
        "summary": "Get encyclopedia facets",
        "description": "Returns entry counts by category, type, status, and initial letter.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/search": {
      "get": {
        "tags": [
          "Search"
        ],
        "summary": "Search across collections",
        "description": "Searches multiple public collections with rate limiting and short-lived caching.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Search"
        ],
        "summary": "CORS preflight for search",
        "description": "Returns allowed methods and headers for the search endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/search-index.json": {
      "get": {
        "tags": [
          "Search"
        ],
        "summary": "Fetch the public search index",
        "description": "Returns a flat public search index used by site search and lightweight integrations.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/rss": {
      "get": {
        "tags": [
          "Feeds"
        ],
        "summary": "Fetch the RSS feed",
        "description": "Returns the XML RSS feed for the latest news items.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/alerts": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Get emergency alerts",
        "description": "Returns curated high-priority alert items for crisis messaging and dashboards.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/population": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Get the population snapshot",
        "description": "Returns population totals, demographic split, nationality breakdown, and trend series.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/finance": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Get the finance snapshot",
        "description": "Returns the funding snapshot used by the public data dashboard.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/weather": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Get weather data",
        "description": "Returns current weather and forecast data, with a fallback if the upstream source is unavailable.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/weather-alerts": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Get weather alerts",
        "description": "Returns weather alert items for the weather page.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/geolocation": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Get coarse geolocation data",
        "description": "Returns coarse same-origin geolocation data or a safe unavailable response.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/charts": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Get prepared chart data",
        "description": "Returns chart series used by visual dashboard sections.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/analytics/pageviews": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Get pageview analytics",
        "description": "Returns a lightweight pageview total used by analytics widgets.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/export": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Describe export options",
        "description": "Returns export endpoint usage details and supported collections.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Export multiple collections",
        "description": "Exports multiple content collections in one JSON response.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Actions"
        ],
        "summary": "CORS preflight for export",
        "description": "Returns allowed methods and headers for the export endpoint.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/match-category": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Match a skills category",
        "description": "Accepts a skills category and returns a simple matching confirmation response.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/submit-voice": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Submit a community voice entry",
        "description": "Submits a community voice or story payload for follow-up review.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/send-booking-confirmation": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Send a visit booking confirmation",
        "description": "Processes a visit booking request and sends a booking confirmation email.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/status": {
      "get": {
        "tags": [
          "Discovery"
        ],
        "summary": "Get API status",
        "description": "Returns a lightweight health and discovery status document for the public API.",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    }
  }
}