Delivery API
Titel | Delivery API |
Status | In ontwikkeling ROSA-Architectuurscan BEsluitvorming implementatie in beheer |
Versie | Documentatie: 0.9.1 |
schemaVersion: 0.9.1 | |
Datum | 27 September 2024 |
Auteur | Werkgroep Verwerven en in gebruik nemen |
Acties |
|
De Delivery API wordt gebruikt om informatie over leveringsorders te delen in het Afsprakenstelsel Edu-V. Deze API wordt aangeboden als onderdeel van de gegevensdienst leveringsorders met de Bestelomgeving leermiddelen als Verzender.
De technische specificatie bestaat uit:
Samenvatting
Gegevensdienst | Leveringsorders |
Scopes |
|
Berichten | |
Bevestigings-berichten | |
Objecten |
|
Verzender en Bron |
|
Ontvanger |
|
Afnemer |
|
Endpoints | Bestelomgeving leermiddelen
Aanspraakmanager
|
Bericht: DeliveryOrderRequest
Het DeliveryOrderRequest object wordt door de Bestelomgeving leermiddelen verstuurd naar de Aanspraakmanager. In de object is een requestReferenceId opgenomen die wordt bepaald door de Bestelomgeving leermiddelen. Dit stelt de Bestelomgeving leermiddelen in staat om het bevestigingsbericht van de Aanspraakmanager terug te relateren aan het verstuurde DeliveryOrderRequest bericht.
Veld | Type | Format | Omschrijving | Voorbeeld | O/V | Vullingsregel |
deliveryOrder | string | uuid | Referentienummer voor het versturen van de leveringsorder. | eacb81ef-c9d5-4bd8-a624-4088bee04b73 | V | Dit nummer wordt gebruikt door de event mediator om een logboek bij te houden van verzonden en ontvangen meldingen en terugmeldingen met betrekking tot een unieke deliveryOrderId. |
deliveryOrder | object | deliveryOrder | De specificatie van de leveringsorder zoals verworven door een Besteller | Zie object deliveryOrder | V | Â |
object DeliveryOrder
Het object deliveryOrder beschrijft de leveringsorder van een bestelling die bij een Bestelomgeving is geplaatst. Hierbij wordt onderscheid gemaakt tussen de School of de Particulier (Individual) als Besteller. In de leveringsorder wordt de relatie gelegd tussen het product, de Besteller en conform de aanspraakvariant de specificatie van de autorisatieregels. Daarnaast heeft iedere leveringsorder een status. De waarden uit een leveringsorder mogen niet gewijzigd worden (ook niet voor foutcorrecties). Indien de leveringsorder niet correct is dan wordt deze geannuleerd en wordt er een nieuwe leveringsorder gestuurd.
Veld | Type | Format | Omschrijving | Voorbeeld | O/V | Vullingsregel |
deliveryOrderId | string | uuid | Unieke identifier voor deze leveringsorder | 24e39454-5360-4ba4-819f-03e59b8dd679 | V | Waarde mag niet gewijzigd worden |
contractId | string | string | Optionele unieke identifier van een contract tussen de leverancier van het leermiddel en de leverancier die de verwerving verzorgt. | 2022-12-v1 | O | Waarde mag niet gewijzigd worden. |
buyer | object | Buyer | Een onderwijsorganisatie of particulier die het product heeft verworven. | Zie object Buyer | V | Waarde mag niet gewijzigd worden. Betreft een verwijzing naar een onderwijsorganisatie of een particulier. |
productId | string | string | Referentie naar de Productbeschrijving in de Catalogue API van het leermiddel dat is verworven door Besteller | 871792713 | V | Een leveringsorder verwijst naar exact 1 Product-Beschrijving Waarde mag niet gewijzigd worden |
deliveryType | string | ENUM | De levervariant beschrijft de wijze waarop de aanspraakmanager de aanspraken dient toe te kennen. | V | Waarde mag niet gewijzigd worden. | |
deliverySpecification | object | Delivery | Op basis van de deliveryType worden de autorisatiekenmerken voor toekenning van aanspraken opgenomen in de deliverySpecification | V | deliverySpecification is afhankelijk van de gekozen levervariant. Waarde mag niet gewijzigd worden. | |
portals | array | string | Een lijst met identifiers van Leermiddelenportalen waar de toegangslink voor het product geplaatst moeten worden. | Â | O | Â |
startDate | string | date | Datum vanaf wanneer het product in gebruik genomen kan worden. Dit is de start van de activatieperiode | 2022-08-01 | V | Waarde mag niet gewijzigd worden |
activationUntilDate | string | date | Datum tot wanneer het product in gebruik genomen kan worden. Hierna is de activatieperiode verlopen | 2023-07-31 | V | Waarde mag niet gewijzigd worden |
endDate | string | date | Datum dat de leveringsorder geannuleerd. | 2022-09-28 | O | De endDate wordt gevuld zodra de status wijzigt naar Cancelled. Waarde mag niet gewijzigd worden |
status | string | ENUM | De status waarin de leveringsorder zich bevindt. |
| V | Status wordt toegekend conform de levenscyclus van de leveringsorder en het bijbehorende proces. |
dateCreated | string | datetime | Datum en tijdstip waarop de entiteit is aangemaakt | 2017-07-21T17:32:28Z | V | Â |
dateLastModified | string | datetime | Tijdstempel waarop één of meerdere van de hierboven genoemde attributen het laatst zijn gewijzigd | 2022-08-11T15:31:12Z | V |  |
object: Buyer
Het object Buyer bevat informatie over de Besteller van de leermiddelen. In het Edu-V afsprakenstelsel hanteren we twee bestellers: onderwijsorganisaties en particulieren. Het object wordt dan ook gevuld met een referentie naar een onderwijsorganisatie of een particulier.
De referentie naar een onderwijsorganisatie is uniform gespecificeerd voor alle APIs en terug te vinden op de pagina Technische specificatie digitale identiteiten – referentie onderwijsorganisatie.
De referentie naar een particulier is uitgewerkt in onderstaande tabel.
Veld | Type | Format | Omschrijving | Voorbeeld | O/V | Vullingsregel |
displayName | string | string | De naam van de klant die het product heeft verworven bij de Bestelomgeving leermiddelen. | Jan Janssen | O | Â |
string | Het mailadres van de klant die het product heeft verworven. | jan@janssen.nl | O | Â |
objecten: deliveryType en deliverySpecification
In de leveringsorder is de levervariant opgenomen. Deze levervariant bevat informatie voor de Aanspraakmanager om aanspraken toe te kennen aan eindgebruikers. We hanteren de volgende levervarianten:
Levervariant | Besteller | Autorisatieregel | Type levervariant |
| Onderwijsorganisatie | Alle onderwijsdeelnemers van de school. | Open |
| Onderwijsorganisatie | Alle onderwijsdeelnemers die ingeschreven zijn op een gespecificeerd opleidingsjaar. | Open |
| Onderwijsorganisatie | Alle onderwijsdeelnemers die een gespecificeerd vak volgen. | Open |
| Onderwijsorganisatie | Alle onderwijsdeelnemers die ingeroosterd zijn in een gespecificeerde stamklas of lesgroep. | Open |
| Onderwijsorganisatie | De gespecificeerde onderwijsdeelnemer. | Individueel |
| Onderwijsorganisatie | De gespecificeerde onderwijsmedewerker. | Individueel |
| Onderwijsorganisatie | De eindgebruiker die een gespecificeerde en niet gebruikte activatiecode gebruikt. | Individueel |
| Particulier | De gespecificeerde onderwijsdeelnemer. | Individueel |
| Particulier | De eindgebruiker die een gespecificeerde en niet gebruikte activatiecode gebruikt. | Individueel |
Voor ieder van de levervarianten (deliveryType) geldt een eigen leverspecificatie (deliverySpecification) die opgenomen dient te zijn in de leveringsorder. De velden worden weergegeven in onderstaande tabel.
deliveryType | deliverySpecification |
| |
totalQuantity: aantal producten dat door onderwijsorganisatie is besteld. | |
| |
studyYears: een array met de volgende informatie:
| |
totalQuantity: aantal producten dat door onderwijsorganisatie is besteld. | |
| |
subjects: een array met de volgende informatie:
| |
totalQuantity: aantal producten dat door onderwijsorganisatie is besteld. | |
| |
groups: een array met de volgende informatie:
| |
totalQuantity: aantal producten dat door onderwijsorganisatie is besteld. | |
| |
students: een array met referenties naar een eindgebruiker | |
| |
employees: een array met referenties naar een eindgebruiker | |
| |
activationCodes: een array met activatiecodes. | |
| student: een referentie naar een eindgebruiker |
| activationCode: een activatiecode |
Bevestigingsbericht: DeliveryOrderConfirmation
Een Aanspraakmanager reageert op een DeliveryOrderRequest bericht met een DeliveryOrderConfirmation bevestigingsbericht. In dit bevestigingsbericht wordt de requestReferenceId die door de Bestelomgeving leermiddelen is aangemaakt opgenomen. In aanvulling hierop wordt optioneel de informatie uit de delivery order ook bevestigd. Door een tijdstempel op te nemen kan dit bevestigingsbericht worden gezien als een formele afspraak tussen beide leveranciers.
De Aanspraakmanager verstuurt voor iedere stap die is uitgevoerd een nieuwe DeliveryOrderConfirmation naar de Bestelomgeving leermiddelen. In deze reeks van berichten wijzigt de status van orderen naar entitled naar provisioned naar link-ready en licensed. Indien tussentijds de DeliveryOrder wordt geannuleerd of geblokkeerd dan verandert de status naar respectievelijk cancelled en blocked.
Veld | Type | Format | Omschrijving | Voorbeeld | O/V | Vullingsregel |
deliveryOrder | string | uuid | De referentie van de Bestelomgeving leermiddelen waarop dit bevestigingsbericht een antwoord is. | eacb81ef-c9d5-4bd8-a624-4088bee04b73 | V | Â |
deliveryOrder | string | uuid | De referentie van de Aanspraakmanager voor dit bevestigingsbericht | 3437e98f-855d-4f29-9092-7ba311228920 | V | Â |
deliveryOrderId | string | uuid | Verwijzing naar de unieke identifier voor de leveringsorder | 24e39454-5360-4ba4-819f-03e59b8dd679 | V | Â |
productId | string | string | Verwijzing naar de unieke identifier voor het product | 871792713 | V | Â |
processed | string | datetime | Tijdstip waarop het leveringsorder verzoek is verwerkt door de Aanspraakmanager | 2017-07-21T17:32:28Z | V | Â |
newStatus | string | ENUM | De nieuwe status van de leveringsorder |
| V | De status wordt gekozen afhankelijk van de stap in het leverproces. |
newTotalQuantity | integer | integer | De nieuwe waarde voor quantity wordt door de Aanspraakmanager geconformeerd aan de Bestelomgeving leermiddelen, indien deze in het bericht gewijzigd was. | 90 | O | Deze waarde wordt door de Aanspraakmanager gevuld indien de waarde van de leveringsorder is gewijzigd door de Bestelomgeving leermiddelen. |
success | boolean | boolean | Indicatie of de Aanspraakmanager het (wijzigings)bericht heeft kunnen verwerken | True | V | False indien de Ontvanger niet akkoord is of er een fout is opgetreden. |
status | integer | ENUM | Status | 0 (=OK) | V | |
statusMessage | string | string | Toelichting op status | - | O |
Event mediator: Bestelomgeving leermiddelen
De Event mediator van de Delivery API van de Bestelomgeving leermiddelen hanteert asynchrone uitwisselingen bij het verzenden van DeliveryOrders naar de Aanspraakmanager en het ontvangen van DeliveryOrderConfirmations bevestigingsberichten vanuit de Aanspraakmanager. In onderstaande tabel wordt aangeven op welke wijze deze Asynchrone uitwisseling ingericht kan worden.
Proces | Trigger | Actie | Output | Registratie |
Leveren van digitaal leermiddel    | Digitale leermiddelen uit bestelling in Bestelomgeving leermiddelen dient geleverd te worden. | Genereren DeliveryOrders met status | Versturen DeliveryOrder in DeliveryOrderRequest bericht naar Aanspraakmanager | deliveryOrderRequest bericht deliveryOrderReferenceId |
DeliveryOrderConfirmation | Wijzigen status DeliveryOrder naar | Â | deliveryOrderReceiveId van Aanspraakmanager EntitlementConfirmation bevestigingsbericht van Aanspraakmanager | |
DeliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager met foutcode | Notificeren support van Bestelomgeving leermiddelen | Versturen Supportbericht inclusief foutcode | deliveryOrderReceiveId van Aanspraakmanager deliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager | |
Annuleren levering van digitaal leermiddel    | Annulering van een levering van digitale leermiddelen uit een bestelling Er is gecontroleerd door de Bestelomgeving leermiddelen dat de status Een deliveryOrder die | Wjizigen status DeliveryOrder naar | Versturen DeliveryOrderRequest bericht met gewijzigde DeliveryOrder naar Aanspraakmanager | deliveryOrderRequest bericht deliveryOrderReferenceId |
DeliveryOrderConfirmation | Definitief wijzigen status DeliveryOrder naar | Â | deliveryOrderReceiveId van Aanspraakmanager deliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager | |
DeliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager met foutcode | Notificeren support van Bestelomgeving leermiddelen | Versturen Supportbericht inclusief foutcode | deliveryOrderReceiveId van Aanspraakmanager deliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager | |
Wijzigen aantal te leveren digitale leermiddelen   | Wijziging van het aantal op een bestelling van digitale leermiddelen met een open leveringsvariant.
| Wijzigen waarde op | Versturen DeliveryOrderRequest bericht met gewijzigde waarde op | deliveryOrderRequest bericht deliveryOrderReferenceId |
DeliveryOrderConfirmation | Definitief wijzigen waarde | Â | deliveryOrderReceiveId van Aanspraakmanager deliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager | |
DeliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager met foutcode | Notificeren support van Bestelomgeving leermiddelen | Versturen Supportbericht inclusief foutcode | deliveryOrderReceiveId van Aanspraakmanager deliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager | |
In gebruik nemen digitaal leermiddel | DeliveryOrderConfirmation | Definitief wijzigen status DeliveryOrder naar | Â | deliveryOrderReceiveId van Aanspraakmanager deliveryOrderConfirmation bevestigingsbericht van Aanspraakmanager |
Event processor: Aanspraakmanager
De Event processor van de Delivery API van de Aanspraakmanager reageert op meldingen ontvangen van de Bestelomgeving leermiddelen door het asynchroon verwerken van verzoeken en het terugmelden van het verwerkingsresultaat. In onderstaande tabel wordt aangeven op welke wijze deze Asynchrone uitwisseling ingericht kan worden.
Proces | Trigger | Actie | Output | Registratie |
Leveren van digitaal leermiddel   | DeliveryOrder in DeliveryOrderRequest bericht met status | Verwerken van DeliveryOrder conform deliveryType en deliverySpecification Genereren DeliveryOrderConfirmation bevestigingsbericht met newStatus | Versturen DeliveryOrder | DeliveryOrderRequest bericht van Bestelomgeving leermiddelen deliveryOrderReferenceId DeliveryOrderConfirmation bevestigingsbericht entitlementReceiveId voor newStatus |
Annuleren levering van digitaal leermiddel | DeliveryOrder in DeliveryOrderRequest bericht met status | Verwerken van annulering van DeliveryOrder Genereren DeliveryOrderConfirmation bevestigingsbericht met newStatus | Versturen DeliveryOrderConfirmation bevestigingsbericht naar Bestelomgeving leermiddelen met newStatus | DeliveryOrderRequest bericht van Aanspraakmanager deliveryOrderReferenceId DeliveryOrderConfirmation bevestigingsbericht deliveryOrderReceiveId voor newStatus |
Wijzigen aantal te leveren digitale leermiddelen | DeliveryOrder in DeliveryOrderRequest bericht met nieuwe waarde voor | Verwerken van gewijzigde Genereren DeliveryOrderConfirmation bevestigingsbericht met nieuwe waarde voor | Versturen DeliveryOrderConfirmation bevestigingsbericht naar Aanspraakmanager met | DeliveryOrderRequest bericht van Aanspraakmanager DeliveryOrderReferenceId DeliveryOrderConfirmation bevestigingsbericht deliveryOrderReceiveId voor newTotalQuantity |
Status- en foutcodes
Voor alle APIs uit het Afsprakenstelsel Edu-V zijn de status- en foutcodes beschreven op de pagina Status- en foutcodes. Hierbij is onderscheid gemaakt in algemene en voor de API specifieke status- en foutcodes.
Technisch: API specificatie
Release notes
0.0.1: Objecten overgenomen en Delivery API YAML uitgewerkt.
0.0.2: Objecten en koppelvlakspecificatie bijgewerkt op basis van nieuwe versie conceptueel model.
Leveringsorders bevatten een levervariant (deliveryType) en de voor de variant van toepassing zijnde specificatie (deliverySpecification).
Levervarianten kunnen open of individueel zijn en gebaseerd zijn op een onderwijsorganisatie of particulier als besteller.
Leveringsorders bevatten informatie over de besteller.
Non-happy flows zijn het annuleren van een levering van een digitaal leermiddel en het wijzigen van het aantal op een leveringsorder met een open leveringsvariant.
Er zijn GET endpoints toegevoegd voor het Leermiddelendashboard
Er zijn GET endpoints toegevoegd voor het Leermiddelenportaal om leveringsorders op te vragen voor een specifieke school.
Er zijn GET endpoints toegevoegd voor de Aanspraakmanager en de Licentieregistratie om leveringsorders op basis van een contractId op te vragen.
De scopes zijn aangepast met een specifieke scope voor de gegevensafnemende referentiecomponenten: Aanspraakmanager, Licentieregistratie, Leermiddelendashboard en Leermiddelenportaal.
0.0.3: YAML file bijgewerkt op basis van nieuwe versie objecten en koppelvlakspecificatie.
0.0.4: Er zijn wijzigingen verwerkt:
Wijzigen in de architectuur:
Attribuut schemaVersion is verwijderd uit de objecten.
Query parameter schemaVersion is verwijderd uit de koppelvlakken.
Query parameter edu_org_id is verwijderd uit de koppelvlakken waar consent voor nodig is.
Query parameters orgMasterId, orgId en orgIdType zijn toegevoegd om informatie over een onderwijsaanbieder op te vragen.
Primaire en secundaire identifiers voor onderwijsaanbieders en eindgebruikers bijgewerkt.
Feedback vanuit de werkgroep Verwerven en in gebruik nemen:
Attribuut portals is toegevoegd aan een deliveryOrder.
0.0.5: Typo’s in de YAML.
0.0.6: / achter endpoints weggehaald
0.9.0: Het Bestuurlijk Overleg heeft tijdens de bijeenkomst van 27 juni 2024 het Afsprakenstelsel Edu-V als versie 0.9.0 goedgekeurd voor implementatie.
0.9.1: Wijzigingen naar aanleiding van RFC’s:
Op basis van RFC002 is de scope aangepast met een prefix
eduv.
. Dit stelt leveranciers in staat om onderscheid te maken tussen gegevensuitwisselingen met leveranciers binnen en buiten het Edu-V afsprakenstelsel.De parameters voor paginering zijn uit de koppelvlakspecificatie verwijderd. Binnen het afsprakenstelsel zijn de afspraken hierover beschreven op de pagina paginering, sorteren en rate limiting.
De Vestigingserkenning is als secundaire identifier voor een onderwijsaanbieder verwijderd uit de koppelvlakspecificatie.