-
Notifications
You must be signed in to change notification settings - Fork 121
Closed
Labels
Description
!!! ACHTUNG: es gibt zu diesem Ticket einen PR in ALLEN wagons !!! (github verlinkt leider nur die ersten 10)
Als Person oder Applikation welche die JSON:API konsumiert
möchte ich die Contactable Eigenschaften der Gruppe abrufen,
um diese in hitobito als primäre Datenquelle zu behandeln.
Neu sollen social accounts, additional emails und phone numbers auch im Gruppen-Endpoint der JSON:API exponiert werden.
Mockup
GET /api/groups?include=additional_emails,social_accounts,phone_numbers
{
"data": [
{
"id": "1",
"type": "groups",
"attributes": {
// ...
},
"relationships": {
"phone_numbers": {
"data": [
{
"type": "phone_numbers",
"id": "12345"
}
]
},
"social_accounts": {
"data": []
},
"additional_emails": {
"data": []
},
// ...
}
},
// ...
],
"included": [
{
"id": "12345",
"type": "phone_numbers",
"attributes": {
"label": "Privat",
"public": true,
"contactable_id": 1,
"contactable_type": "Group",
"number": "+41 44 123 45 67"
}
},
"links": {
"self": "/api/groups?include=additional_emails,social_accounts,phone_numbers&page%5Bnumber%5D=1\u0026page%5Bsize%5D=20",
"first": "/api/groups?include=additional_emails,social_accounts,phone_numbers&page%5Bnumber%5D=1\u0026page%5Bsize%5D=20",
"last": "/api/groups?include=additional_emails,social_accounts,phone_numbers&page%5Bnumber%5D=50\u0026page%5Bsize%5D=20",
"next": "/api/groups?include=additional_emails,social_accounts,phone_numbers&page%5Bnumber%5D=2\u0026page%5Bsize%5D=20"
},
"meta": {}
}
Tech-Spec
- Bei Personen exponieren wir diese Relations bereits, daher kann viel von der PersonResource abgeschaut werden
- Die Berechtigungen fürs Lesen der related Entities werden in JsonApi::ContactAccountAbility berechnet, diese müssen ebenfalls erweitert werden
- In diesem Ticket implementieren wir nur das Lesen dieser Daten auf Gruppen. Gruppen können bisher in der JSON:API noch nicht bearbeitet werden, daher müssen auch ihre Social Accounts etc. nicht bearbeitet werden können
- Diese Änderung wird Auswirkungen auf die OpenAPI Spec haben, daher wird eine Änderung in jedem Wagon am Schema nötig sein
- Die Relations sollen in der Liste von Gruppen und natürlich auch beim Abrufen einer einzelnen Gruppe ausgegeben werden
ToDo
- Relations in GroupResource einfügen, analog PersonResource
- Berechtigungen in JsonApi::ContactAccountAbility erweitern
- API Specs für Groups Endpoints erweitern
- Graphiti Schema in Core und allen Wagons aktualisieren
- Wenn deployed, Stefan (und letztlich Hannes Lau) informieren
!!! ACHTUNG: es gibt zu diesem Ticket einen PR in ALLEN wagons !!! (github verlinkt leider nur die ersten 10)