{"openapi":"3.1.0","info":{"title":"AlleEindtermen API","version":"1.3.0","description":"Alle gepubliceerde VO-programma’s, inclusief algemene vakken, profielvakken en keuzevakken. Het overzicht filtert niet op selecteerbaarheid. Bronstatus is geen wettelijke geldigheid. Herkomst en eventuele correcties staan per programma in het antwoord. Raadpleeg /api-docs/. Inhoudelijk gelijke actuele GL/TL-programma’s worden één keer aangeboden. Beide oorspronkelijke detail-IDs blijven bereikbaar. Niveaufilters omvatten gezamenlijke programma’s."},"servers":[{"url":"https://alleeindtermen.nl"}],"paths":{"/api/v1/vo/programs":{"get":{"operationId":"listPrograms","parameters":[{"name":"niveau","in":"query","schema":{"type":"string"},"description":"vmbo-gl/tl is het gezamenlijke aanbod van GL en TL. Individuele GL/TL-filters bevatten ook gezamenlijke programma’s; GL-only profielen komen niet bij TL."},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["count","programs"],"properties":{"count":{"type":"integer"},"programs":{"type":"array","items":{"$ref":"#/components/schemas/Program"}}}}]}}}},"304":{"description":"Ongewijzigd; geen responsebody"},"400":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"parameters":[{"name":"niveau","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Dezelfde headers als GET, zonder body"},"304":{"description":"Ongewijzigd"},"404":{"description":"Niet gevonden"}}},"options":{"parameters":[],"responses":{"204":{"description":"CORS preflight"}}}},"/api/v1/vo/programs/{id}":{"get":{"operationId":"getProgram","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["program"],"properties":{"program":{"$ref":"#/components/schemas/ProgramDetail"}}}]}}}},"304":{"description":"Ongewijzigd; geen responsebody"},"400":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"JSON antwoord","headers":{"ETag":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Dezelfde headers als GET, zonder body"},"304":{"description":"Ongewijzigd"},"404":{"description":"Niet gevonden"}}},"options":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"204":{"description":"CORS preflight"}}}}},"components":{"schemas":{"Envelope":{"type":"object","required":["type","version","updatedAt","peildatum","sourceCommit","sourceCommits"],"properties":{"type":{"type":"string","enum":["vo"]},"version":{"type":"string","enum":["1"]},"updatedAt":{"type":"string","format":"date-time"},"peildatum":{"type":"string"},"sourceCommit":{"type":["string","null"],"description":"SLO-broncommit indien aanwezig; null voor een rechtstreeks wettelijke aanvulling. De inhoudsbron en checksum staan in herkomst."},"sourceCommits":{"type":"object","additionalProperties":{"type":["string","null"]},"description":"Vastgelegde broncommits per SLO-dataset."},"algemeneVoorwaarden":{"type":"array","description":"Onderwijstype- of leerwegvoorwaarden die geen zelfstandig examenvak zijn, met inhoud en bronbewijs.","items":{"type":"object","additionalProperties":true}},"bronbeperkingen":{"type":"array","description":"Vastgestelde gaten of tegenstrijdigheden in de officiële bronnen; geen zelf aangevulde eindtermen.","items":{"type":"object","additionalProperties":true}}}},"Program":{"type":"object","required":["id","titel","status","wettelijkeStatus","selecteerbaar","niveaus","apiUrl","herkomst","bronCommit","aantalEindtermen"],"properties":{"id":{"type":"string"},"titel":{"type":"string"},"status":{"type":"string"},"wettelijkeStatus":{"type":"string"},"selecteerbaar":{"type":"boolean","description":"Toepassingsstatus; false sluit een programma niet uit van deze API."},"niveaus":{"type":"array","items":{"type":"string"}},"apiUrl":{"type":"string"},"domeinen":{"type":"array","items":{"type":"object"}},"eindtermen":{"type":"array","items":{"$ref":"#/components/schemas/Term"}},"herkomst":{"$ref":"#/components/schemas/Provenance"},"bronCommit":{"type":["string","null"]},"aantalEindtermen":{"type":"integer","minimum":0},"programmaSoort":{"type":"string","description":"Onder meer profielvak of keuzevak voor beroepsgerichte programma’s."},"examenToepassing":{"$ref":"#/components/schemas/ExamApplicability"},"canonicalId":{"type":"string","description":"Bestaande GL-ID voor een inhoudelijk gelijk GL/TL-paar; dezelfde waarde in beide details."},"equivalentProgramIds":{"type":"array","items":{"type":"string"},"description":"Beide bestaande en bereikbaar blijvende programma-IDs van het gecontroleerde GL/TL-paar."},"bronNiveau":{"type":"string","description":"Oorspronkelijke leerweg van het record; herkomst en codetabelbewijs blijven bij deze bron horen."}}},"Error":{"type":"object","required":["version","error"],"properties":{"version":{"type":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"Provenance":{"type":"object","required":["dataset","versie","commit","bronUrl","geraadpleegdOp","verificatie","correcties"],"properties":{"dataset":{"type":"string"},"versie":{"type":["string","null"],"description":"Bronrelease indien beschikbaar; de commit identificeert de exacte bronversie."},"commit":{"type":["string","null"]},"bronUrl":{"type":"string","format":"uri"},"geraadpleegdOp":{"type":"string","format":"date"},"verificatie":{"type":"object","required":["status","gecontroleerdOp","toelichting"],"properties":{"status":{"type":"string"},"gecontroleerdOp":{"type":["string","null"],"format":"date"},"toelichting":{"type":"string"}}},"correcties":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Afzonderlijk vastgelegde correcties; een lege lijst betekent geen vastgelegde correctie, niet automatisch volledige wettelijke verificatie."}}},"Term":{"type":"object","properties":{"id":{"type":"string"},"titel":{"type":"string"},"bronInhoud":{"type":"object","description":"Bewaarde oorspronkelijke broninhoud, ook wanneer een correctie is toegepast.","additionalProperties":true},"bronCorrectie":{"type":["object","array"],"description":"Onderbouwing van een correctie op deze eindterm, indien aanwezig."},"uitwerkingInleiding":{"type":"string","description":"Letterlijke inleiding uit de publicatie. Behoud deze om bijvoorbeeld keuzevrijheid in opsommingen correct weer te geven."}},"additionalProperties":true},"ProgramDetail":{"allOf":[{"$ref":"#/components/schemas/Program"},{"type":"object","required":["domeinen","eindtermen"]}]},"ExamApplicability":{"type":"object","description":"Toepasselijk examenjaar, afzonderlijk van publicatiejaar. Verwachte invoering is geen vastgestelde geldigheid.","required":["status","bronnen"],"properties":{"status":{"type":"string","enum":["geldend","verwacht","niet-vastgesteld","controle-open"]},"examenjaren":{"type":"array","items":{"type":"integer"},"description":"Expliciet gecontroleerde examenjaren; geen doorlopende geldigheid afleiden."},"eersteExamenjaar":{"type":"integer","description":"Alleen bij verwacht: gepland eerste examenjaar, onder voorbehoud."},"gecontroleerdOp":{"type":"string","format":"date"},"bronnen":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"titel":{"type":"string"}}}},"toelichting":{"type":"string"},"cohortLabel":{"type":"string","description":"Beperking tot het startcohort; samen met het examenjaar tonen indien aanwezig."},"routeLabel":{"type":"string","description":"Essentiële afwijkende examenroute, zoals schoolroute/PvB. Samen met het examenjaar tonen."}}}}}}