Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Als ontwikkelaar wil ik bij het opvragen van entiteit ook eigenschappen van gerelateerde entiteiten opnemen #389

Closed
18 tasks
JohanBoer opened this issue Sep 11, 2018 · 10 comments
Assignees
Labels
Convenience Uitbreidingen op de API's voor het gemak van consumers, met name gericht op minder calls expand Prio M Prioriteit Medium
Milestone

Comments

@JohanBoer
Copy link

JohanBoer commented Sep 11, 2018

...zodat het aantal calls wordt beperkt in de situatie dat er veel voorkomende combinaties van elementen uit verschillende gerelateerde entiteiten zijn.

Definition of ready

  • Iedereen in het team begrijpt de user story
  • Is klein genoeg (maximaal 1/5 van sprint)
  • Product Owner akkoord
  • Voorzien van acceptatiecriteria (duidelijk en testbaar)
  • Voorzien van Definition of Done (duidelijk en testbaar)
  • Voorzien van taken
  • Vastgelegd Github en in geplaatst in kolom ready

Definition of done

  • er is een voorbeeld van hoe dit in een OAS 3.0 specificatie wordt opgenomen
  • de gemaakte ontwerpkeuzes zijn gedocumenteerd
    [ ] er zijn geen (nieuwe) conflicten met ontwerp keuzes in BIP
  • de specificatie is gepubliceerd leesbaar
  • de DSO URI- en API-strategie worden gevolgd

Acceptatiecriteria
Uit de algemene uitgangspunten:

  • Voldoet aan RGBZ 2.0
  • Voldoet aan GEMMA 2.0

Taken

  • Visie op geneste entiteiten formuleren [verantwoordelijke]
  • Discussie voeren (waar nodig)
  • Voorbeeldspecificatie OAS3 opstellen [verantwoordelijke]
  • Genereren/opstellen van OAS 3.0 [verantwoordelijke]
  • Vastleggen \design Decission [verantwoordelijke]
@JohanBoer
Copy link
Author

In de API's die binnen het project "Bevragingen ingeschreven persoon" worden elementen van gerelateerde entiteiten "embedded" opgenomen volgens JSON Hal. Als we geen JSON Hal gaan toepassen gaan we dan gebruik maken van geneste entiteiten ?
In de huidige API van Gemma-zaken zie ik daar geen voorbeeld van aangezien van alle gerelateerde entiteiten alleen de links worden opgenomen in de response.
Ik ben benieuwd hoe binnen het project Gemma-Zaken tegen het nesten van entiteiten wordt aangekeken.

@TCIMEddy TCIMEddy added the Overleg nodig Elke vier weken is er dinsdag overleg. Issues met dit label kunnen behandeld worden. label Sep 14, 2018
@sergei-maertens
Copy link
Collaborator

sergei-maertens commented Sep 17, 2018

Dit is binnen gemma-zaken nog niet concreet geimplementeerd, maar we volgen hier wel de DSO API-strategie (API-10)

Resources ondersteunen “lazy” en “eager” laden van relaties
Resources die een n-op-n relatie kennen ondersteunen zowel het teruggeven van identificaties van
gerelateerde resources (lazy loading) als het teruggeven van de resources zelf (eager loading).

Voorbeeld:

GET /aanvragen/12?expand=aanvrager.naam,bevoegd_gezag

Doordat we JSON Hal hier niet zo fijn vinden, worden deze resources dan inline genest.

Concreet kan dat dus worden:

GET /api/v1/zaken/1234?expand=status

{
    "identificatie": "1234",
    "bronorganisatie": "56789",
    "status": {
        "url": "...",
        "statusType": "https://ztc/api/v1/statustypen/123456789",
        ...
    }
}

Zonder de expand parameter, krijg je hier een URL terug in plaats van een embedded object.

Merk op dat deze relaties niet altijd ge-expand kunnen worden. Binnen een zaak het zaaktype expanden bijvoorbeeld kan niet omdat dit een referentie is naar een component uit een andere API (ZRC vs. ZTC).

@sergei-maertens
Copy link
Collaborator

Nog even wat research gedaan, maar deze verschillende shapes van responses uitdrukken op basis van GET parameters is zo te zien niet mogelijk in OAS 3.0, zie OAI/OpenAPI-Specification#56

@sergei-maertens
Copy link
Collaborator

Mogelijks is oneOf een uitweg, maar dan moet er ook een discriminator waarde + key toegevoegd worden, wat het weer complexer maakt... want de discriminator in dit geval is de volledige expand parameter waarde (waarbij volgorde niet uitmaakt).

Denk dat dit een gevalletje worden basis opnemen in API spec + expand gedrag opnemen in standaard.md en correct implementeren in referentie-implementatie ter verduidelijking.

@joeribekker
Copy link
Collaborator

Besloten tijdens overleg d.d. 17 september 2018

We implementeren expand zonder HAL. In de documentatie moet dit naar voren komen EN er moet vermeld worden dat expand de OpenAPI elementen worden veranderd (lees: de spec klopt niet meer want er staat opeens een object waar eerst een linkje stond).

@joeribekker joeribekker added Verhef tot ontwerp keuze and removed Overleg nodig Elke vier weken is er dinsdag overleg. Issues met dit label kunnen behandeld worden. labels Sep 17, 2018
@ehotting ehotting changed the title Als ontwikkelaar wil ik bij het opvragen vn een entiteit ook eigenschappen van gerelateerde entiteiten opnemen Als ontwikkelaar wil ik bij het opvragen van entiteit ook eigenschappen van gerelateerde entiteiten opnemen Oct 2, 2018
@ehotting ehotting added the Prio H Prioriteit Hoog label Oct 2, 2018
@ehotting
Copy link
Member

ehotting commented Oct 2, 2018

Design choice met behoorlijke impact, s.v.p. uitwerken en afronden in afstemming met RSGB team

@TCIMEddy
Copy link
Contributor

@joeribekker @Hugo-ter-Doest Weten jullie de status?

@TCIMEddy
Copy link
Contributor

TCIMEddy commented Mar 1, 2019

@joeribekker @Hugo-ter-Doest Goed punt maar ik weet niet of we dit moeten en kunnen realiseren.

@Hugo-ter-Doest
Copy link
Contributor

Ik stel voor: label convenience maken, en later samen met andere gelijksoortige uitbreidingen voor gemak bepalen wat ermee te doen.

@Hugo-ter-Doest Hugo-ter-Doest added Convenience Uitbreidingen op de API's voor het gemak van consumers, met name gericht op minder calls Punten: M and removed Verhef tot ontwerp keuze Prio H Prioriteit Hoog labels Mar 1, 2019
@Hugo-ter-Doest Hugo-ter-Doest added Prio M Prioriteit Medium and removed Punten: M labels May 3, 2019
@michielverhoef
Copy link
Collaborator

opgenomen in Zaken API 1.5.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Convenience Uitbreidingen op de API's voor het gemak van consumers, met name gericht op minder calls expand Prio M Prioriteit Medium
Projects
None yet
Development

No branches or pull requests

7 participants