Thanks to visit codestin.com
Credit goes to github.com

Skip to content

GROUPS: Contactable Daten der Gruppe in Gruppen-API #2537

@carlobeltrame

Description

@carlobeltrame

!!! 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)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions