Ein Vertrag für deine casas
Der OpenAPI-Vertrag und die Regeln für jeden Client: Idempotenzschlüssel, ETags, Aufträge und Problemdetails.
Der maschinenlesbare Vertrag
GET /api/v1/openapi.json liefert ein OpenAPI-3.1-Dokument mit genau dem Funktionsumfang dieser Bereitstellung: alle Pfade, Schemas, erforderlichen Berechtigungsbereiche und Antworten sowie Webhookereignisse. Es wird aus dem laufenden Vorgangskatalog erzeugt, der auch die MCP-Werkzeuge erstellt. So laufen REST und MCP nie auseinander.
curl -s "https://<your host>/api/v1/openapi.json"Die Schnittstelle umfasst casas und Entwürfe, Versionen und Veröffentlichungen, Beiträge, casita-Katalog, Importe, Portfolios und Stapelläufe, Domains und DNS-Pläne, E-Mail-Weiterleitung, Anmelde- und Kontakteinstellungen, soziale Quellen, Analysen, Werbung, Abrechnung, Teammitglieder und Webhooks. GET /workspaces/{id}/capabilities sagt, was davon in deinem Arbeitsbereich aktiv, simuliert oder wegen fehlender Zugangsdaten ausstehend ist.
Bewusste Wiederholungen
- Jede Änderung braucht einen
Idempotency-Key-Header mit 16 bis 128 Zeichen. Dieselbe Anfrage mit gleichem Schlüssel und Inhalt liefert das ursprüngliche Ergebnis mitIdempotent-Replayed: true. Derselbe Schlüssel mit anderem Inhalt ergibt409 idempotency_key_reused. - Änderungen an einer casa brauchen
If-Matchmit demETagdes letzten Lesevorgangs. Ein veralteter Wert ergibt412 revision_conflict, und nichts ändert sich. - Die Veröffentlichung nimmt genau
revision_idundexpected_digestaus deinem Lesevorgang, damit du das Geprüfte veröffentlichst.
Lange Arbeit ist ein Auftrag
Veröffentlichungen, Stapelläufe und andere langsame Vorgänge antworten mit 202 und einem Auftrag. Frage GET /workspaces/{id}/jobs/{job_id} nicht schneller ab als next_poll_after_seconds oder abonniere job.updated-Webhooks. Angenommen bedeutet nicht fertig: Lies state, Zähler und error des Auftrags, bevor du Erfolg meldest.
Fehler sind Problemdetails
Fehler nutzen application/problem+json mit stabilem code, lokalisiertem title, request_id und retryable. Verzweige anhand von code, niemals anhand des Titeltexts.
{
"type": "https://<your host>/problems/insufficient_scope",
"title": "This token does not include the permission this action needs.",
"status": 403,
"code": "insufficient_scope",
"request_id": "01M5...",
"retryable": false,
"context": { "required_scope": "account:read" }
}Listen und Grenzen
- Listenendpunkte nehmen
limit(bis 100) und einencursorder vorherigen Seite. - Jedes Arbeitsbereichstoken darf pro Minute 120 Lese- und 30 Schreibvorgänge ausführen. Darüber erhältst du
429mit einemRetry-After-Header. - Bewahre unbekannte Antwortfelder: Neue Felder können ohne Versionswechsel hinzukommen.