OSR:API/V2/API V2 naar V3 wijzigingen: verschil tussen versies

Uit Kennisnet Developers Documentatie
< OSR:API‎ | V2
Naar navigatie springen Naar zoeken springen
kGeen bewerkingssamenvatting
 
(45 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
== Wijzigingen van de OSR API V2 naar V3 ==
== Wijzigingen van de OSR API V2 naar V3 ==
 
<br>
===Achtergrond===
<p>
<p>
Met de introductie van versie 3 van de OSR API zijn er verschillende wijzigingen doorgevoerd ten opzichte van versie 2.<br>
Het OSR wordt aangepast zodat schoolbesturen ook op bestuursniveau hun systemen kunnen mandateren.<br><br>
Deze documentatie geeft een overzicht van de belangrijkste veranderingen, inclusief nieuwe functionaliteiten, verwijderde of aangepaste endpoints<br>
Er kan per dienst worden ingesteld of mandaten per school of per bestuur worden vastgelegd. Voor deze uitbreiding wordt een nieuwe versie (3) van de OSR API ontwikkeld.  
en verbeteringen op het gebied van beveiliging en prestaties.
</p>
</p>
<br>
<p>
<p>
Deze pagina is bedoeld voor ontwikkelaars en technische beheerders die werken met de OSR API en hun implementaties willen upgraden naar de nieuwste versie.<br>
Deze pagina is bedoeld voor ontwikkelaars en technische beheerders die werken met de OSR API en hun implementaties willen upgraden naar de nieuwste versie.<br>
Door de wijzigingen tijdig te begrijpen en door te voeren, zorg je ervoor dat je applicaties compatibel blijven en profiteren van de nieuwste optimalisaties.
Door de wijzigingen tijdig te begrijpen en door te voeren, zorg je ervoor dat je applicaties compatibel blijven en profiteren van de nieuwste optimalisaties.
</p>
<br>
===Inhoud en impact===
<p>
Met de introductie van deze nieuwe versie worden er verschillende wijzigingen doorgevoerd ten opzichte van de huidige versie (2).<br>
Onderstaande documentatie geeft een overzicht van de belangrijkste veranderingen, inclusief nieuwe functionaliteiten, verwijderde<br>
of aangepaste endpoints en verbeteringen.<br>
<br>
Op hoofdlijnen is de impact beperkt en gaat het met name om het hernoemen van velden en locaties om de API duidelijker en overzichtelijker te maken.<br>
Bovendien sluit deze hiermee beter aan bij vastgestelde standaarden op het gebied van API ontwikkeling.
</p>
</p>
<br>
<br>
Regel 15: Regel 24:
Bekijk hieronder de gedetailleerde wijzigingen en aanbevelingen voor een soepele migratie.
Bekijk hieronder de gedetailleerde wijzigingen en aanbevelingen voor een soepele migratie.
</p>
</p>
<br>


 
==Wijzigingen per API endpoint==
<br>
{|class="wikitable"
{|class="wikitable"
! style="text-align:left;"| Type wijzigingen
! style="text-align:left;"| URI
! style="text-align:left;"| URI
! style="text-align:left;"| Wijzigingen API V3
! style="text-align:left;"| Wijzigingen API V3
|-
|-
| GET /boards/{id}
| <span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">URI</span><span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /boards/{bgeCode}
|  
|  
* Parameter "{id} wordt "bgeCode"
* URI-parameter "{id}" wordt "{bgeCode}"
* Responseveld "number" wordt "bge_code"
* Responseveld "number" wordt "bgeCode"
|-
|-
| POST /endpoints
| <span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
| Bij gebruik van het token van een mandaat, welke op bestuursniveau is aangemaakt geeft de API terug:
| <span style="color:white;font-weight:bold;background-color:#49cc90;padding:6px 15px;border-radius:3px;">POST</span> /endpoints
HTTP 400: The given service version does not allow endpoint registrations 
|  
* Bij gebruik van het token van een mandaat, welke op bestuursniveau is aangemaakt geeft de API terug:
** HTTP 400: The given service version does not allow endpoint registrations 
|-
|-
| GET /endpoints
| <span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
| Bij gebruik van de versie naamruimte van een dienst, welke alleen mandaten op bestuursniveau toestaat geeft de API een HTTP 200 met lege lijst terug. 
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /endpoints
|  
* Bij gebruik van de versie naamruimte van een dienst, welke alleen mandaten op bestuursniveau toestaat geeft de API terug:
** HTTP 200: (lege lijst)
|-
|-
| <span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">URI </span>
|  
|  
GET /endpoints/{id}<br>
<span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;line-height:2.2em">GET</span> /endpoints/{uuid}<br>
PUT /endpoints/{id}<br>
<span style="color:white;font-weight:bold;background-color:#fca130;padding:6px 15px;border-radius:3px;line-height:2.2em">PUT</span> /endpoints/{uuid}<br>
DELETE /endpoints/{id}
<span style="color:white;font-weight:bold;background-color:#f93e3e;padding:6px 15px;border-radius:3px;line-height:2.2em">DELETE</span> /endpoints/{uuid}
| URI-parameter "{id}" wordt omgezet naar "{uuid}"
|  
* URI-parameter "{id}" wordt "{uuid}"
|-
| <span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">URI</span><span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</SPAN> /endpoints/available-routing-id
|
* Deze vervangt het API endpoint "GET available_routing_id" (overgang naar hyphen-seperated URIs)<br>
* Bij gebruik van de versie naamruimte van een dienst, welke alleen mandaten op bestuursniveau toestaat geeft de API een HTTP 200 met lege lijst terug<br>
|-
|-
|GET /endpoints/available-routing-id
| <span style="background-color:#cd8b1a;color:white;padding:0.5em;margin-right:0.5em;border-radius:3px;">Nieuw</span>
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</SPAN> /health
|
|
* Deze vervangt het API endpoint "GET available_routing_id".<br>
* Dit API endpoint geeft aan of de OSR API bereikbaar is en juist functioneert
* Bij gebruik van de versie naamruimte van een dienst, welke alleen mandaten op bestuursniveau toestaat geeft de API een HTTP 200 met lege lijst terug.<br>
* Hoofdstatus "UP" en "DOWN" voorziet in de generieke status
|-
|<span style="background-color:#cd8b1a;color:white;padding:0.5em;margin-right:0.5em;border-radius:3px;">Nieuw</span>
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /mandates/services/{serviceCode}/boards
|
* Dit API endpoint geeft een lijst van besturen terug,<br>waarvan de API-gebruiker (leverancier) op bestuursniveau mandaten heeft ontvangen
|-
|<span style="background-color:#cd8b1a;color:white;padding:0.5em;margin-right:0.5em;border-radius:3px;">Nieuw</span>
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /mandates/services/{serviceCode}/boards/{bgeCode}/suppliers/{supplierOin}
|
* Dit API endpoint geeft alleen mandaten op bestuursniveau terug in de response
* Parameter "boardBgeCode" wordt gebruikt om het schoolbestuur te identificeren
* Responseveld _links.board { "href": "string" } bevat een link naar het bij het mandaat behorende schoolbestuur
|-
|<span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">URI</span><span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /mandates/services/{serviceCode}/schools
|
* Deze vervangt het API endpoint "GET /school-mandates" en geeft een lijst van scholen terug,<br>waarvan de API-gebruiker (leverancier) op schoolniveau mandaten heeft ontvangen
* "school_oa_id" komt niet meer voor in responses
* Responseveld "school_brin" wordt "schoolOieCode"
|-
|-
|GET /mandates/services/{serviceCode}/schools/{schoolOin}/suppliers/{supplierOin}
|<span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">URI</span><span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Parameters</span><span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /mandates/services/{serviceCode}/schools/{oieCode}/suppliers/{supplierOin}
|  
|  
* Deze vervangt het API endpoint "GET /mandates"
* Deze vervangt het API endpoint "GET /mandates"
* Dit API endpoint geeft alleen mandaten op schoolniveau terug in de response;
* Geeft alleen mandaten op schoolniveau terug in de response
* De parameter "service_version_namespace" is verwijderd;
* Parameter "service_version_namespace" wordt verwijderd ("serviceCode" volstaat voor het vaststellen van de dienst).
* De parameters "serviceCode", "schoolOin" en "supplierOin" zijn verplicht en verplaatst naar de URI.
* De parameters voor de dienst, school en leveranciers zijn gestandaardiseerd en verplaatst naar de URI
|-
|-
|GET /mandates/services/{serviceCode}/boards/{bgeCode}/suppliers/{supplierOin}
|<span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">URI</span><span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
|<span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /mandates/{uuid}
|  
|  
* Dit is een <span style="text-decoration:underline">nieuw</span> API endpoint, welke alleen mandaten op bestuursniveau in de response teruggeeft;
* URI-parameter "{id}" wordt "{uuid}"
* De parameter "boardBgeCode" wordt gebruikt om het schoolbestuur te identificeren;
* Geeft zowel mandaten op school- als bestuursniveau terug
* Responseveld _links.board { "href": "string" } bevat een link naar het bij het mandaat behorende schoolbestuur.
* Responseveld _links.board { "href": "string" } bevat een link naar het bij het mandaat behorende schoolbestuur
* Responseveld "_links.board" is altijd gevuld, zowel bij een mandaat op school- als bestuursniveau
* Responseveld "_links.school" geeft uiteraard alleen een waarde bij een mandaat op schoolniveau, anders is deze null
|-
|-
| GET /mandates/{uuid}
|<span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Parameters</span><span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /schools
|  
|  
* URI-parameter "{id}" wordt omgezet naar "{uuid}";
* "oa_id" komt niet meer voor als parameter en in responses
* Zowel mandaten op school- als bestuursniveau worden teruggeven;
* Responseveld "brin" wordt "oieCode"
* Responseveld _links.board { "href": "string" } bevat een link naar het bij het mandaat behorende schoolbestuur;
* Responseveld "_links.board" is altijd gevuld, zowel bij een mandaat op school- als bestuursniveau;
* Responseveld "_links.school" geeft uiteraard alleen een waarde bij een mandaat op schoolniveau, anders is deze null.
|-
|-
|GET /schools<br>
|<span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Parameters</span><span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
GET /schools/{id}
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /schools/{oieCode}
| "oa_id" komt niet meer voor als parameter en in responses.
|
* URI-parameter "{id}" wordt "{oieCode}"
* "oa_id" komt niet meer voor als parameter en in responses
* Responseveld "brin" wordt "oieCode"
|-
|-
| GET /school-mandates
|<span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Parameters</span>
| "school_oa_id" komt niet meer voor in responses.
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /services/{uuid}
|  
* URI-parameter "{id}" wordt "{uuid}"
|-
|-
|GET /services/{uuid}
|<span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Parameters</span>
| URI-parameter "{id}" wordt omgezet naar "{uuid}"
| <span style="color:white;font-weight:bold;background-color:#61affe;padding:6px 15px;border-radius:3px;">GET</span> /service-versions/{uuid}
|  
* URI-parameter "{id}" wordt "{uuid}"
|-
|-
| GET /service-versions/{uuid}
|<span style="background-color:lightgrey;padding:0.5em;margin-right:0.5em;border-radius:3px;">Responses</span>
| URI-parameter "{id}" wordt omgezet naar "{uuid}"
| <span style="color:white;font-weight:bold;background-color:#49cc90;padding:6px 15px;border-radius:3px;">POST</span> /service-versions/copy-endpoints-from-service-version
|-
|  
| POST /service-versions/copy-endpoints-from-service-version
* Als de parameters "serviceVersionNamespaceToCopyTo" óf "serviceVersionNamespaceToCopyFrom" betrekking hebben op een dienst welke alleen mandaten op bestuursniveau toestaat geeft de API terug:
| Als de parameters "serviceVersionNamespaceToCopyTo" óf "serviceVersionNamespaceToCopyFrom" betrekking hebben op een dienst welke alleen mandaten op bestuursniveau toestaat geeft de API terug:
** HTTP 400: The given service version(s) do not allow endpoint registrations
* HTTP 400: The given service version(s) do not allow endpoint registrations
|}
|}
==Algemene aandachtspunten==
<br>
* Alle responsevelden worden in V3 teruggegeven in camelCase in plaats van snake_case in V2;
* Het is aanvankelijk niet mogelijk om endpoints aan te maken voor mandaten op bestuursniveau.<br>Dit omdat de eerste diensten die hier gebruik van maken dit nog niet nodig gaan hebben;
* De API-documentatie (Swagger) zal op een nieuwe URL beschikbaar worden gesteld, waarbij het mogelijk is te schakelen tussen API versies.

Huidige versie van 25 mrt 2025 om 16:19

Wijzigingen van de OSR API V2 naar V3


Achtergrond

Het OSR wordt aangepast zodat schoolbesturen ook op bestuursniveau hun systemen kunnen mandateren.

Er kan per dienst worden ingesteld of mandaten per school of per bestuur worden vastgelegd. Voor deze uitbreiding wordt een nieuwe versie (3) van de OSR API ontwikkeld.

Deze pagina is bedoeld voor ontwikkelaars en technische beheerders die werken met de OSR API en hun implementaties willen upgraden naar de nieuwste versie.
Door de wijzigingen tijdig te begrijpen en door te voeren, zorg je ervoor dat je applicaties compatibel blijven en profiteren van de nieuwste optimalisaties.


Inhoud en impact

Met de introductie van deze nieuwe versie worden er verschillende wijzigingen doorgevoerd ten opzichte van de huidige versie (2).
Onderstaande documentatie geeft een overzicht van de belangrijkste veranderingen, inclusief nieuwe functionaliteiten, verwijderde
of aangepaste endpoints en verbeteringen.

Op hoofdlijnen is de impact beperkt en gaat het met name om het hernoemen van velden en locaties om de API duidelijker en overzichtelijker te maken.
Bovendien sluit deze hiermee beter aan bij vastgestelde standaarden op het gebied van API ontwikkeling.


Bekijk hieronder de gedetailleerde wijzigingen en aanbevelingen voor een soepele migratie.


Wijzigingen per API endpoint


Type wijzigingen URI Wijzigingen API V3
URIResponses GET /boards/{bgeCode}
  • URI-parameter "{id}" wordt "{bgeCode}"
  • Responseveld "number" wordt "bgeCode"
Responses POST /endpoints
  • Bij gebruik van het token van een mandaat, welke op bestuursniveau is aangemaakt geeft de API terug:
    • HTTP 400: The given service version does not allow endpoint registrations 
Responses GET /endpoints
  • Bij gebruik van de versie naamruimte van een dienst, welke alleen mandaten op bestuursniveau toestaat geeft de API terug:
    • HTTP 200: (lege lijst)
URI

GET /endpoints/{uuid}
PUT /endpoints/{uuid}
DELETE /endpoints/{uuid}

  • URI-parameter "{id}" wordt "{uuid}"
URIResponses GET /endpoints/available-routing-id
  • Deze vervangt het API endpoint "GET available_routing_id" (overgang naar hyphen-seperated URIs)
  • Bij gebruik van de versie naamruimte van een dienst, welke alleen mandaten op bestuursniveau toestaat geeft de API een HTTP 200 met lege lijst terug
Nieuw GET /health
  • Dit API endpoint geeft aan of de OSR API bereikbaar is en juist functioneert
  • Hoofdstatus "UP" en "DOWN" voorziet in de generieke status
Nieuw GET /mandates/services/{serviceCode}/boards
  • Dit API endpoint geeft een lijst van besturen terug,
    waarvan de API-gebruiker (leverancier) op bestuursniveau mandaten heeft ontvangen
Nieuw GET /mandates/services/{serviceCode}/boards/{bgeCode}/suppliers/{supplierOin}
  • Dit API endpoint geeft alleen mandaten op bestuursniveau terug in de response
  • Parameter "boardBgeCode" wordt gebruikt om het schoolbestuur te identificeren
  • Responseveld _links.board { "href": "string" } bevat een link naar het bij het mandaat behorende schoolbestuur
URIResponses GET /mandates/services/{serviceCode}/schools
  • Deze vervangt het API endpoint "GET /school-mandates" en geeft een lijst van scholen terug,
    waarvan de API-gebruiker (leverancier) op schoolniveau mandaten heeft ontvangen
  • "school_oa_id" komt niet meer voor in responses
  • Responseveld "school_brin" wordt "schoolOieCode"
URIParametersResponses GET /mandates/services/{serviceCode}/schools/{oieCode}/suppliers/{supplierOin}
  • Deze vervangt het API endpoint "GET /mandates"
  • Geeft alleen mandaten op schoolniveau terug in de response
  • Parameter "service_version_namespace" wordt verwijderd ("serviceCode" volstaat voor het vaststellen van de dienst).
  • De parameters voor de dienst, school en leveranciers zijn gestandaardiseerd en verplaatst naar de URI
URIResponses GET /mandates/{uuid}
  • URI-parameter "{id}" wordt "{uuid}"
  • Geeft zowel mandaten op school- als bestuursniveau terug
  • Responseveld _links.board { "href": "string" } bevat een link naar het bij het mandaat behorende schoolbestuur
  • Responseveld "_links.board" is altijd gevuld, zowel bij een mandaat op school- als bestuursniveau
  • Responseveld "_links.school" geeft uiteraard alleen een waarde bij een mandaat op schoolniveau, anders is deze null
ParametersResponses GET /schools
  • "oa_id" komt niet meer voor als parameter en in responses
  • Responseveld "brin" wordt "oieCode"
ParametersResponses GET /schools/{oieCode}
  • URI-parameter "{id}" wordt "{oieCode}"
  • "oa_id" komt niet meer voor als parameter en in responses
  • Responseveld "brin" wordt "oieCode"
Parameters GET /services/{uuid}
  • URI-parameter "{id}" wordt "{uuid}"
Parameters GET /service-versions/{uuid}
  • URI-parameter "{id}" wordt "{uuid}"
Responses POST /service-versions/copy-endpoints-from-service-version
  • Als de parameters "serviceVersionNamespaceToCopyTo" óf "serviceVersionNamespaceToCopyFrom" betrekking hebben op een dienst welke alleen mandaten op bestuursniveau toestaat geeft de API terug:
    • HTTP 400: The given service version(s) do not allow endpoint registrations

Algemene aandachtspunten


  • Alle responsevelden worden in V3 teruggegeven in camelCase in plaats van snake_case in V2;
  • Het is aanvankelijk niet mogelijk om endpoints aan te maken voor mandaten op bestuursniveau.
    Dit omdat de eerste diensten die hier gebruik van maken dit nog niet nodig gaan hebben;
  • De API-documentatie (Swagger) zal op een nieuwe URL beschikbaar worden gesteld, waarbij het mogelijk is te schakelen tussen API versies.