Roster
Wer heute zum Team gehoert. Name, Bild, sonst nichts.
GET /members daneben beantwortet dieselbe Frage mit allen Kennzahlen - und verlangt dafuer members.view. Das ist fuer eine Personalliste richtig und fuer die Frage "wer ist ueberhaupt im Team" zu viel: der Kalender, die Aufgaben und die Zielgruppenauswahl brauchen die Namen, damit ein Supporter sich abmelden oder jemanden einladen kann. Ein Recht auf die Personalakte hat er dafuer nicht.
Deshalb hier nur die Besetzung, offen fuer jedes Teammitglied, und die Zahlen bleiben, wo sie hingehoeren.
Warum es diesen Endpunkt ueberhaupt gibt. Die Oberflaechen haben sich ihre Teamliste bis hierher aus der Aktivitaets-Rangliste (GET /activity) gebaut, weil das der einzige Endpunkt war, der Namen und Bilder aller Rollentraeger lieferte. Das ist eine Auswertung und keine Besetzung, und der Unterschied faellt genau dort auf, wo er weh tut:
- Wer nur ueber eine Panel-Gruppe im Team steht und die Discord-Rolle nicht traegt, kommt dort nicht vor.
- Die Antwort liegt eine halbe Stunde im Cache. Ein neu aufgenommener Mensch fehlt so lange in jeder Auswahl, die aus ihr gebaut wird.
team_user_ids ist dieselbe Menge, die die Mitgliederliste, die Zielgruppen und die Ankuendigungen benutzen: Traeger einer Team-Rolle plus alle, die in einer Gruppe stehen.
has_left bleibt drin und wird nicht stillschweigend gefiltert. Wer den Server verlassen hat, aber noch in einer Gruppe steht, ist ein Eintrag, den jemand aufraeumen muss; ihn hier wegzulassen hiesse, das Aufraeumen zu verstecken. Was die einzelne Oberflaeche daraus macht, entscheidet sie selbst.
Sechzig Sekunden Cache, und zwar aus einem konkreten Grund. team_user_ids liest die Rollen aller Servermitglieder; auf einem grossen Server ist das eine Abfrage, die man nicht bei jedem Seitenaufruf jedes Teammitglieds haben will - und genau so wird dieser Endpunkt benutzt.
Die Antwort ist fuer alle im Team dieselbe, also reicht server_id als Schluessel. Kein vary_by_user und kein vary_by_lang: hier wird nichts nach Aufrufer gefiltert und nichts uebersetzt. Der guard laeuft trotzdem bei jedem Aufruf, auch beim Treffer - sonst laege die Besetzung eines fremden Servers eine Minute lang frei.
Die Minute ist keine Wartezeit fuer den Betrieb: perms.invalidate raeumt diesen Eintrag mit, und die steht an jeder Stelle, die die Besetzung aendert - Gruppenzuordnung, Rollenabgleich, Team-Rolle in den Einstellungen. Die TTL ist die Grenze fuer den Fall, dass eine Raeumung ausfaellt: eine Verzoegerung, kein Dauerzustand. Dieselbe Rechnung wie beim Rechte-Cache daneben.
Request
- Base URL: https://api.notoq.xyz (the document declares no server; this is the origin it was published from)
- URL: https://api.notoq.xyz/api/v1/servers/{server_id}/team/roster
- Auth: HTTP bearer
Path parameters
Response
Successful Response
Changes
No recorded changes to this operation across all 1 revision of this API.