{
  "openapi": "3.1.0",
  "info": {
    "title": "Fynqo Public API",
    "version": "1.0.0",
    "description": "Public read-only endpoints. The Cracks Index dataset is CC-BY-4.0. The knowledge-graph endpoints serve schema.org JSON-LD.",
    "contact": {
      "url": "https://fynqo.app/contact",
      "email": "info@fynqo.app"
    },
    "license": {
      "name": "CC-BY-4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    }
  },
  "servers": [
    {
      "url": "https://api.fynqo.app",
      "description": "API host"
    },
    {
      "url": "https://fynqo.app",
      "description": "Static endpoints (llms.txt, ttl, microblog, ...)"
    }
  ],
  "paths": {
    "/api/cracks/index": {
      "get": {
        "summary": "Full Cracks Index dataset (all regions, all indicators)",
        "responses": {
          "200": {
            "description": "JSON dataset, CC-BY-4.0",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/api/cracks/region/{code}": {
      "get": {
        "summary": "Cracks Index for a single region (country/EU NUTS/NL gemeente)",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "description": "ISO-3166-alpha-3, NUTS code or CBS gemeente-code",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Region detail with 6 indicators + composite score",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "Region not found"
          }
        }
      }
    },
    "/api/cracks/methodology": {
      "get": {
        "summary": "Methodology, sources and refresh-cadence for the Cracks Index",
        "responses": {
          "200": {
            "description": "Methodology document",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "summary": "LLM discovery manifest (concise)",
        "responses": {
          "200": {
            "description": "Plain-text llms.txt per llmstxt.org spec",
            "content": {
              "text/plain": {}
            }
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "summary": "LLM discovery manifest (full content corpus)",
        "responses": {
          "200": {
            "description": "Plain-text expanded corpus for LLM ingestion",
            "content": {
              "text/plain": {}
            }
          }
        }
      }
    },
    "/fynqo-graph.ttl": {
      "get": {
        "summary": "Fynqo Knowledge Graph as Turtle (RDF)",
        "responses": {
          "200": {
            "description": "Knowledge graph: entities + portals",
            "content": {
              "text/turtle": {}
            }
          }
        }
      }
    },
    "/datasets/cracks.dcat.ttl": {
      "get": {
        "summary": "DCAT description of the Cracks Index dataset",
        "responses": {
          "200": {
            "description": "DCAT/Turtle dataset metadata",
            "content": {
              "text/turtle": {}
            }
          }
        }
      }
    },
    "/oai": {
      "get": {
        "summary": "OAI-PMH 2.0 endpoint for harvesting metadata",
        "parameters": [
          {
            "name": "verb",
            "in": "query",
            "required": false,
            "description": "OAI-PMH verb (Identify, ListRecords, GetRecord, ...)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OAI-PMH XML response",
            "content": {
              "application/xml": {}
            }
          }
        }
      }
    },
    "/.well-known/answers/{portal}.json": {
      "get": {
        "summary": "AnswerManifest for an individual Fynqo portal (anti-hallucination)",
        "parameters": [
          {
            "name": "portal",
            "in": "path",
            "required": true,
            "description": "Portal slug (e.g. zzp, gemeente, schuldhulp)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "AnswerManifest JSON (schema_version 1)",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/microblog/{entity}": {
      "get": {
        "summary": "Microblog post for a knowledge-graph entity",
        "parameters": [
          {
            "name": "entity",
            "in": "path",
            "required": true,
            "description": "Entity slug from the Fynqo Knowledge Graph",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "HTML page with schema.org JSON-LD",
            "content": {
              "text/html": {}
            }
          }
        }
      }
    }
  }
}