ObjectOS
Konfigurieren

API-Zugriff

Generierte REST-APIs, Authentifizierung und API-Schlüssel für Integrationen.

API-Zugriff

Jedes im Artefakt deklarierte Objekt wird über eine generierte REST-API bereitgestellt. Dieselben Endpunkte versorgen die UI, Integrationen und Kunden-ETL-Skripte — es gibt keine separate „Integrations-API", die gepflegt werden müsste.

Basis-URL

https://<project-domain>/api/v1

Wichtige Schnittstellen:

PfadZweck
/api/v1/data/<object>Generiertes CRUD für jedes Objekt (z. B. /api/v1/data/account)
/api/v1/data/<object>/{id}Einzelnen Datensatz lesen/aktualisieren/löschen
/api/v1/actions/<object>/<action>Eine deklarative Aktion aufrufen (POST)
/api/v1/auth/*Authentifizierung (Anmeldung, Sitzungen, OAuth, OIDC)
/api/v1/meta/*Metadaten-APIs (Objekte, Felder, Ansichten), sofern aktiviert
/api/v1/keysErzeugt einen nur einmal angezeigten sys_api_key für den aufrufenden Benutzer (POST)
/api/v1/mcpModel-Context-Protocol-Server über Streamable HTTP, wenn OS_MCP_SERVER_ENABLED=true
/api/v1/healthLiveness-/Readiness-Probe (keine Authentifizierung)

Das Präfix lautet standardmäßig /api/v1 (der API-basePath von /api plus die version v1) und ist im ObjectOS-Stack konfigurierbar.

Steuern, was offengelegt wird

Die API-Offenlegung wird pro Objekt im Artefakt gesteuert, nicht am Gateway:

  • Setzen Sie apiEnabled: false auf einem Objekt, um es vollständig von der REST-Oberfläche fernzuhalten (seine Routen liefern 404).
  • Setzen Sie eine apiMethods-Whitelist (z. B. ['get', 'list']), um ein Objekt schreibgeschützt zu machen oder anderweitig einzuschränken, welche Operationen erreichbar sind.

Beide werden auf der REST-Ebene durchgesetzt — siehe REST-API → API-Oberfläche einschränken.

Authentifizierungsoptionen

Aufrufer können sich auf drei Arten authentifizieren:

MethodeAm besten geeignet fürWie
Sitzungs-CookieBrowser-/UI-VerkehrAnmeldung über /api/v1/auth/*; Cookies sind auf den Projekt-Hostnamen beschränkt
Bearer-ZugriffstokenMobile, SPA, kurzlebige Server-JobsAnmeldedaten unter /api/v1/auth/sign-in/email austauschen und Authorization: Bearer <token> übergeben
API-SchlüsselServer-zu-Server, ETL, langlebige IntegrationenEinen sys_api_key erstellen und als Bearer-Token übergeben

Alle drei durchlaufen dasselbe AuthPlugin und werden zu einem sys_user-Kontext aufgelöst, den das SecurityPlugin anhand von Berechtigungen und Datensatzzugriff auswertet.

API-Schlüssel

API-Schlüssel sind erstklassige sys_api_key-Datensätze. Der Schlüsselwert selbst wird gehasht gespeichert — nur das prefix und Metadaten bleiben abfragbar, sodass ein durchgesickerter Schlüssel nicht aus der Datenbank rekonstruiert werden kann.

Es gibt zwei Wege, einen Schlüssel auszustellen:

  • Console — melden Sie sich als Administrator bei Console → API Keys an, wählen Sie den besitzenden Benutzer, legen Sie optional ein Ablaufdatum fest und kopieren Sie das angezeigte Geheimnis einmalig.

  • Self-Service-EndpunktPOST /api/v1/keys erzeugt einen Schlüssel für den authentifizierten Aufrufer und gibt das rohe Geheimnis genau einmal zurück. Der Schlüssel ist an den eigenen Benutzer des Aufrufers gebunden und kann daher nicht zur Identitätsübernahme verwendet werden:

    curl -X POST https://app.example.com/api/v1/keys \
      -H "Authorization: Bearer <session-or-access-token>" \
      -H "Content-Type: application/json" \
      -d '{"name": "etl-pipeline"}'
    # → { "id": "...", "name": "etl-pipeline", "prefix": "os_pk_…", "key": "os_pk_live_…" }

Übergeben Sie den Schlüssel bei nachfolgenden Anfragen als Bearer-Token, als x-api-key-Header oder als Authorization: ApiKey. Die REST-Daten- und Metadaten-APIs authentifizieren ihn über denselben Verifier wie MCP, unter den Berechtigungen und der Datensatz-Sicherheit des Schlüsselinhabers:

curl https://app.example.com/api/v1/data/account \
  -H "x-api-key: os_pk_live_…"

Um einen Schlüssel zu widerrufen, führen Sie die Aktion revoke_api_key für den entsprechenden sys_api_key-Datensatz aus (auch in der Console-UI verfügbar). Der Widerruf wird ab der nächsten Anfrage sofort wirksam.

Paginierung, Filterung und Sortierung

Generierte Listen-Endpunkte akzeptieren die standardmäßigen ObjectStack-Abfrageparameter:

ParameterBedeutung
?limit=Seitengröße (unterliegt einer serverseitigen Obergrenze)
?offset= oder ?cursor=Paginierung
?filter=Serverseitige Filterung mit der ObjectQL-Filtersyntax
?sort=Sortierausdruck (z. B. -created_at)
?fields=Sparse-Feldauswahl

Die vollständige Filtergrammatik finden Sie in der Framework-Dokumentation — die Laufzeitgrammatik ist die maßgebliche Quelle.

Ratenbegrenzung

Verwenden Sie das RateLimiter-Primitiv des Frameworks (oder Ihr Ingress / API-Gateway), um Limits pro IP und pro Identität anzuwenden. Empfohlene Ausgangswerte sind unter Production readiness dokumentiert.

CORS

Wenn Aufrufer in einem Browser mit einem anderen Origin ausgeführt werden, konfigurieren Sie CORS am Ingress oder über die Middleware der Laufzeit. Kombinieren Sie Wildcard-Origins nicht mit Anfragen, die Anmeldedaten enthalten.

OpenAPI / Discovery

Die Laufzeit kann ein OpenAPI-Dokument für die generierte REST-API bereitstellen, wenn die entsprechende Funktion im Image enthalten ist. Kundenintegrationen sollten Clients aus dem OpenAPI-Dokument pro Deployment generieren, anstatt URLs von Hand zu erstellen, da Objektnamen und generierte Routen dem bereitgestellten Artefakt folgen.

On this page