RRZE-Webteam / rrze-faudir

Plugin zur Darstellung des Personen- und Einrichtungsverzeichnis der FAU in Websites
GNU General Public License v3.0
0 stars 0 forks source link

API-Abfragen: Ermittlung von Personen aus Organisationen #36

Open xwolfde opened 2 months ago

xwolfde commented 2 months ago

Umsetzungshinweise zur Ermittlung von Personeneinträgen über eine Kostenstelle (FAUORG-Nummer) oder einer Gruppen-Identifier.

Personen sind einer Organisation oder eine Gruppe unterhalb der Organisation zugeordnet. Eine Person kann auch zu mehreren Gruppen auch verschiedener Organisationen zugeordnet sein. Beispielsweise ist Wolfgang Wiese in den Gruppen "Wissenschaftliche Mitarbeiter" und "Mitarbeiter ABteilung A&I" des RRZE.

Wenn an alle Personen einer Gruppe über die API erhalten möchte, muss man zunächst den Identifier der Gruppe erfragen. Üblicherweise kennen Nutzer des Plugins jedoch nur ihre Kostenstelle (Nummerischer Wert mit 10 Zahlen. Die Kostenstellen wird oft auch als FAU-ORG Nummer bezeichnet.). Das RRZE ist bspw. der Kostenstellennummer 1011120000 zugeordnet. Der Identifier der API für diese Organisation ist jedoch sehr wahrscheinlich den Anwendern unbekannt :)

Eine API Query (vgl. https://api.fau.de/doc, über /oganizations/ mit der Kostenstellennumer als SUchparameter mit q=1011120000 würde folgende Rückgabe liefern:

{
  "data": [
    {
      "@context": {
        "@vocab": "https://schema.org/",
        "@base": "https://api.fau.de/pub/v2/vz/"
      },
      "@type": "Organization",
      "@id": "organiziations/a51724f62c",
      "identifier": "a51724f62c",
      "disambiguatingDescription": "1011120000",
      "name": "Regionales Rechenzentrum Erlangen (RRZE)",
      "alternateName": "RRZE"
    },
    {
      "@context": {
        "@vocab": "https://schema.org/",
        "@base": "https://api.fau.de/pub/v2/vz/"
      },
      "@type": "CollegeOrUniversity",
      "@id": "organiziations/2dfcca88b4",
      "identifier": "2dfcca88b4",
      "disambiguatingDescription": "0000000000",
      "name": "Friedrich-Alexander-Universität Erlangen-Nürnberg",
      "alternateName": "Universität Erl.-Nbg."
    }
  ],
  "pagination": {
   ..
  }
}

Hier erhält man den "identifier": "a51724f62c" Alternativ könnte man auch nach der Bezeichnung suchen. Hier ist jedoch mit mehreren Rückgaben zu rechnen. Gleichwohl macht dies ggf. Sinn wenn man nach untergruppen oder Abteilungen sucht und man die Kostenstelle für diese nicht hat oder eine solche nicht existiert.

Mit Hilfe des Identifiers für die Gruppe bzw die Organisation kann nun eine Query auf die darin enthaltenen Personen durchgeführt werden. Hierzu kann eine Query in /persons durchgeführt werden. Beispielsweise eine lq-Suche nach memberOf.identifier=a51724f62c