{
  "openapi": "3.1.0",
  "info": {
    "title": "Netwerk voor Ondernemersvrijheid — publieke bronnen",
    "summary": "Openbaar leesbare, machineleesbare bronnen van ondernemersvrijheid.biz.",
    "description": "Netwerk voor Ondernemersvrijheid is een Nederlandstalig netwerk- en ontwikkelplatform voor mkb-ondernemers, geexploiteerd door BizzDom. Deze beschrijving dekt uitsluitend de openbare, ongeauthenticeerde bronnen die agents en crawlers mogen ophalen: de sitemaps, de crawlerinstructies, de sitebeschrijving voor taalmodellen, het blogoverzicht en losse blogartikelen. Persoonlijke werkomgevingen (profiel, scan, werkboek, netwerk) zijn afgeschermd en maken geen deel uit van deze API.",
    "version": "1.0.0",
    "termsOfService": "https://ondernemersvrijheid.biz/privacy.php",
    "contact": {
      "name": "BizzDom - Jean-Paul Urlings",
      "email": "jpu@bizzdom.biz",
      "url": "https://ondernemersvrijheid.biz/contact.php"
    },
    "license": {
      "name": "Alle rechten voorbehouden - vrij te lezen en te citeren met bronvermelding",
      "url": "https://ondernemersvrijheid.biz/over.php"
    }
  },
  "servers": [
    {
      "url": "https://ondernemersvrijheid.biz",
      "description": "Productie"
    }
  ],
  "tags": [
    { "name": "discovery", "description": "Bestanden waarmee crawlers en agents de site leren kennen." },
    { "name": "content", "description": "Openbaar leesbare redactionele content." }
  ],
  "paths": {
    "/robots.txt": {
      "get": {
        "tags": ["discovery"],
        "operationId": "getRobots",
        "summary": "Crawlerinstructies",
        "description": "Geeft aan welke paden crawlers en AI-agents mogen ophalen, en verwijst naar de sitemaps.",
        "responses": {
          "200": {
            "description": "Platte tekst volgens de robots exclusion standard.",
            "content": { "text/plain": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "tags": ["discovery"],
        "operationId": "getLlmsTxt",
        "summary": "Sitebeschrijving voor taalmodellen",
        "description": "Beschrijft in gestructureerde platte tekst wat het platform is, voor wie het bedoeld is, welke begrippen het hanteert en welke pagina's openbaar zijn.",
        "responses": {
          "200": {
            "description": "Markdown-achtige platte tekst.",
            "content": { "text/plain": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "tags": ["discovery"],
        "operationId": "getSitemap",
        "summary": "Statische sitemap",
        "description": "De vaste pagina's van de site: homepage, blogoverzicht en de vertrouwenspagina's.",
        "responses": {
          "200": {
            "description": "XML volgens het sitemaps.org 0.9-schema.",
            "content": { "application/xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/sitemap_blogs.php": {
      "get": {
        "tags": ["discovery"],
        "operationId": "getBlogSitemap",
        "summary": "Sitemap van alle blogartikelen",
        "description": "Wordt bij elke aanvraag opnieuw uit de database opgebouwd en bevat elk openbaar leesbaar artikel met zijn laatste wijzigingsdatum.",
        "responses": {
          "200": {
            "description": "XML volgens het sitemaps.org 0.9-schema.",
            "content": { "application/xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/.well-known/api-catalog": {
      "get": {
        "tags": ["discovery"],
        "operationId": "getApiCatalog",
        "summary": "API-catalogus (RFC 9727 linkset)",
        "description": "Machineleesbare index van de bronnen in deze beschrijving.",
        "responses": {
          "200": {
            "description": "Linkset volgens RFC 9264.",
            "content": { "application/linkset+json": { "schema": { "type": "object" } } }
          }
        }
      }
    },
    "/blogs.php": {
      "get": {
        "tags": ["content"],
        "operationId": "getBlogOverview",
        "summary": "Overzicht van alle blogartikelen",
        "description": "HTML-overzichtspagina met alle artikelen. Vrij toegankelijk, geen account nodig. Bevat JSON-LD van het type CollectionPage met een ItemList van de artikelen.",
        "responses": {
          "200": {
            "description": "HTML met ingesloten schema.org JSON-LD.",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/blog_detail.php": {
      "get": {
        "tags": ["content"],
        "operationId": "getBlogArticle",
        "summary": "Een enkel blogartikel",
        "description": "HTML-pagina van een artikel. Vrij te lezen zonder account. Bevat JSON-LD van het type BlogPosting met auteur, publicatiedatum en uitgever.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "Numeriek id van het artikel, zoals opgenomen in /sitemap_blogs.php.",
            "schema": { "type": "integer", "minimum": 1 },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "HTML met ingesloten schema.org JSON-LD.",
            "content": { "text/html": { "schema": { "type": "string" } } }
          },
          "404": {
            "description": "Het artikel bestaat niet (meer).",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    }
  },
  "components": {},
  "externalDocs": {
    "description": "Toelichting voor mensen",
    "url": "https://ondernemersvrijheid.biz/api-docs.html"
  }
}
