fepli
EntwicklerAnwendungsfälle

Umstieg von der Angebots-API

Frühere Versionen der fepli API kannten eine einzige Ressource: Angebote. Die API deckt jetzt das ganze Admin-Panel ab, und der Endpunkt der Angebote wurde dabei neu gebaut. Wenn Sie ihn schon vorher genutzt haben, steht auf dieser Seite, was Sie ändern müssen.

Checkliste

  1. Verwenden Sie den Endpunkt unter Einstellungen → Integrationen → API als Basis-URL (siehe Schnellstart).
  2. Speichern Sie Angebote mit der uuid, nicht mit der numerischen id, und rufen Sie einzelne Angebote mit /offers/{uuid} ab.
  3. Benennen Sie Ihre Filter um (siehe unten).
  4. Lesen Sie status als Liste und edition und hosts als Referenzen.
  5. Behandeln Sie fehlende Felder wie null.
  6. Rufen Sie mit page und itemsPerPage so lange Seiten ab, bis eine Seite kürzer ist. Verlassen Sie sich nicht auf einen Link-Header.
  7. Ein persönliches API-Token funktioniert für Angebote weiter. Für alles andere erstellen Sie ein neues Token, am besten für einen Service-Account.

Basis-URL

Die API antwortet unter /api auf der Domain des Admin-Panels oder an der Wurzel der eigenen API-Domain der Organisation, falls sie eine hat. Die genaue Adresse steht unter Einstellungen → Integrationen → API → Endpunkt. Die Pfade in dieser Dokumentation sind relativ dazu: GET /offers bedeutet GET https://example.fepli.eu/api/offers.

Kennungen

Angebote werden über eine UUID identifiziert, die jedem Aufrufer als uuid geliefert wird. Die numerische id gibt es nicht mehr, ebenso wenig /api/offers/{id}:

VorherJetzt
GET /api/offers/42GET /offers/0192a4f1-6e3b-7c85-b1d2-8f4e6a9c3b03
id (nur authentifizierte Aufrufer)uuid (alle)

Wenn Sie numerische IDs gespeichert haben, ordnen Sie Ihre Datensätze einmal über alias oder url zu und wechseln dann zur uuid.

Felder

FeldVorherJetzt
statusein Objekt aus Status und Zeitstempel, nur authentifizierteine Liste von Status, z. B. ["published"], für alle
editionein Objekt mit name, nur authentifizierteine Referenz mit uuid, name, alias, für alle
hostsObjekte mit nameReferenzen mit uuid, name, alias
publishpublic oder private_link, für allepublic oder private_link, nur authentifiziert
createdAt, modifiedAtnur authentifiziertalle
minParticipants, maxParticipantsnur authentifiziertalle
dates[]begin, endzusätzlich uuid und, bei wiederkehrenden Terminen, recurrence
neu–teaser, vacancies, fullyBooked, categories für alle; comment, contact, attendances, applicationQuestions, transitions und mehr mit Token

Felder ohne Wert werden jetzt weggelassen, statt als null geliefert zu werden. Aus "applyText": null wird gar kein Schlüssel applyText.

Filter

Die Filter wurden vereinfacht. Saisons und Veranstalter:innen geben Sie in einem einzigen Parameter als UUID oder Alias an:

VorherJetzt
edition.id, edition.alias, edition.nameedition (UUID oder Alias)
hosts.alias, hosts.namehost (UUID oder Alias)
dates.begin[after]from
dates.begin[before]until
dates.begin[strictly_after], dates.begin[strictly_before]from, until (beide schließen den angegebenen Tag ein)
fee[lte], fee[gte], fee[lt], fee[gt], fee[between]entfernt. Filtern Sie fee auf Ihrer Seite.
meetingPointentfernt. Durchsuchen Sie den Namen mit q oder filtern Sie auf Ihrer Seite.
–neu: q, status, category, modifiedSince, sort, order

Alle Filter stehen unter Alle Angebote abrufen.

Paginierung

page funktioniert wie bisher, und itemsPerPage bestimmt jetzt die Seitengröße, bis zu 200. Die Antwort ist ein einfaches JSON-Array. Die frühere Dokumentation beschrieb einen Link-Header mit first, next und last; die API sendet keinen. Fordern Sie so lange Seiten an, bis eine weniger Datensätze enthält, als Sie angefordert haben. Siehe Paginierung.

Tokens und Rate-Limits

  • Persönliche Tokens, die vor der Änderung erstellt wurden, tragen den Scope api:offer:read. Sie funktionieren weiter für GET /offers und GET /offers/{uuid}, sonst für nichts.
  • Neue Tokens sind nur lesend oder lesend und schreibend und können statt einer Person einem Service-Account gehören.
  • Mit Token stieg das Rate-Limit von 50 Anfragen pro Stunde auf einen Burst von 300, aufgefüllt mit 100 pro Minute. Anonyme Anfragen bleiben bei 5 pro Stunde und IP-Adresse. Siehe Rate-Limits.

Fehler

Fehler sind weiterhin Problem Details mit type, title, status und detail. Der type ist jetzt ein kurzer Pfad wie /errors/404 statt eines Links auf die HTTP-Spezifikation. Die Meldungen in detail sind genauer, zum Beispiel No offer with this identifier, or none you may see.

War diese Seite hilfreich?