Actors

Ein actor ist eine generische Repräsentation von Benutzer, Gruppen, Teams, Kontakte, Eingangskörbe und Gremien. Actors werden in verschiedenen Endpoints und für gewisse Felder (zum Beispiel Dossier Federführung) verwendet.

Die Daten eines actor können mit dem @actors Endpoint abgefragt werden. Dieser Endpoint erwartet als Pfad-Argument die actor ID und steht auf Stufe PloneSite zur Verfügung. Die URL setzt sich somit folgendermassen zusammen:

http://example.org/fd/@actors/peter.mueller

Ein actor ist kein Plone Inhaltstyp, deshalb beinhaltet die Response weniger Informationen als für andere Inhaltstypen.

Beispiel-Request:

GET /@actors/peter.mueller HTTP/1.1
Accept: application/json

Beispiel-Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@id": "http://example.org/@actors/peter.mueller",
  "@type": "virtual.ogds.actor",
  "active": true,
  "actor_type": "user",
  "identifier": "peter.mueller",
  "is_absent": true,
  "label": "Mueller Peter",
  "login_name": "peter.mueller",
  "portrait_url": "http://example.org/portraits/peter.mueller.png"
  "representatives": [
     {
         "@id": "http://example.org/@actors/peter.mueller",
         "identifier": "peter.mueller"
     },
  ],
  "represents": {
      "@id": "http://example.org/@actors/peter.mueller"
  }
}

Mit dem Parameter full_representation werden im represents-Feld nicht nur eine URL, sondern alle Details des Aktors zurückgegeben.

Beispiel-Request:

GET /@actors?full_representation=true HTTP/1.1
Accept: application/json

Beispiel-Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@id": "http://example.org/@actors/peter.mueller",
  "...": "",
  "represents": {
      "@id": "http://example.org/@ogds-users/peter.mueller"
      "@type": "virtual.ogds.user",
       "absent": false,
       "active": true,
       "city": "Thun",
       "country": "Schweiz",
       "department": "Finanzdirektion",
       "department_abbr": "fd",
       "email": "peter.mueller@4teamwork.ch",
       "firstname": "Peter",
       "...":"..."
  }
}

Via POST können die Daten von mehreren actors mit einem Request abgefragt werden. Im Request-body wird die Liste von actor ID angegeben:

Beispiel-Request:

POST /@actors HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "actor_ids": [
    "peter.mueller",
    "inbox:fa",
    "team:90",
    "group:stv_benutzer",
     "..."
  ]
}

Beispiel-Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@id": "http://example.org/@actors",
  "items": [
    {
      "@id": "http://example.org/@actors/peter.mueller",
      "@type": "virtual.ogds.actor",
      "active": true,
      "actor_type": "user",
      "identifier": "peter.mueller",
      "is_absent": false,
      "label": "Mueller Peter",
      "login_name": "peter.mueller",
      "portrait_url": "http://example.org/portraits/peter.mueller.png",
      "representatives": [
         {
           "@id": "http://example.org/@actors/peter.mueller",
           "identifier": "peter.mueller"
         },
      ],
      "represents": {
         "@id": "http://example.org/@actors/peter.mueller"
      }
    },
    {
      "@id": "http://example.org/@actors/inbox:fa",
      "@type": "virtual.ogds.actor",
      "active": true,
      "actor_type": "inbox",
      "identifier": "inbox:afi",
      "is_absent": false,
      "label": "Eingangskorb",
      "login_name": "afi_inbox",
      "portrait_url": null,
      "representatives": [
         {
           "@id": "http://example.org/@actors/peter.mueller",
           "identifier": "peter.mueller"
         },
      ],
      "represents": {
         "@id": "http://example.org/eingangskorb/eingangskorb_fa"
      }
    },
    { "...": "..." }
  ]
}