Erstellen Sie Ihre eigene Steuerungsoberfläche
Ein vorbereiteter API-Vertrag für eine zukünftige Steuerungsebene: Ressourcen, Bereiche, Limits und Ereignisbehandlung.
Inhalt überarbeitet · Deutsch
- Vertragsstatus
- Vorbereitet, nicht ausgeliefert
- Limit lesen
- 60 / Minute
- Schreiblimit
- 20 / Minute
- Versionsrücknahme
- 6 Monate Kündigungsfrist
Vorgeschlagenes Burst-Kontingent ×2.
Vorgeschlagenes Burst-Kontingent ×2.
Vorgeschlagenes Abschaffungsfenster.
Diese im Blick behalten.
- Es gibt keinen Live-API-Ursprung oder funktionierendes SDK hinter dieser Seite.
- Ressourcen-Lesevorgänge von Änderungen mit Least-Privilege-Scopes trennen.
- Verwenden Sie idempotente Anfragen und signierte Ereignisse, bevor Sie Abrechnung oder Lieferung automatisieren.
Mit einem kleinen, stabilen Ressourcenmodell starten
Der vorgeschlagene Version-eins-Vertrag trennt Katalogressourcen von Kontoresourcen. Standorte und Pläne unterstützen die Konfiguration. Dienste repräsentieren akzeptierte Konfigurationen und Erfüllungsstatus. Abrechnung enthält Rechnungen und Zahlungsstatus. Tickets unterstützen eine nachvollziehbare Support-Konversation. Die Website implementiert ihre eigenen Formulare und Arbeitsbereiche; die folgenden Beispiele sind ein Designvertrag, keine Routen zu einem öffentlichen API.
Anmeldedaten gehören zu einem Geltungsbereich
Das vorbereitete Authentifizierungsmodell verwendet ein Bearer-Token im Authorization-Header. Schreibgeschützte Katalog- oder Dienst-Scopes sollten keinen Dienst erstellen, neu aufbauen oder stornieren können. Schreib-Scopes benötigen eine eigene Entscheidung und einen Widerrufspfad. Bewahren Sie Anmeldeinformationen in einer privaten Serverumgebung auf und betten Sie niemals ein geheimes Token in eine Seite oder ein Browser-Bundle ein.
GET /v1/services
Authorization: Bearer <private-token>
Accept: application/json
# Proposed scope: services:readFünf beispielhafte Vorgänge
Verwenden Sie eine stabile Kennung für jede Ressource und eine Anforderungs-ID für den Support. Mutierende Aufrufe sollten einen Idempotenzschlüssel annehmen, damit ein Wiederholungsversuch abgeglichen werden kann, anstatt eine weitere Bestellung zu erstellen.
POST /v1/services
Idempotency-Key: <one-key-per-request>
{
"plan_id": "umbra-1",
"location": "iceland",
"billing_cycle": "monthly",
"image": "Ubuntu"
}| Betrieb | Illustrative Anfrage | Erforderlicher Umfang | Ergebnis |
|---|---|---|---|
| Dienste auflisten | GET /v1/services | services:read | Elemente und Cursor |
| Standorte lesen | GET /v1/locations | catalogue:read | Regionale Metadaten |
| Tarife lesen | GET /v1/plans | catalogue:read | Kapazität, Zyklen und Kompatibilität |
| Erstellen Sie eine Serviceanfrage | POST /v1/services | services:write | Akzeptierte Anfrage und aktueller Status |
| Eine Rechnung lesen | GET /v1/billing/invoices/{id} | billing:read | Gesamt- und Zahlungsstatus |
Limits und ein nützlicher Fehlerrahmen
Die vorgeschlagenen Ratenbegrenzungen auf Kontoebene betragen 60 Lesevorgänge pro Minute und 20 Schreibvorgänge pro Minute, mit einer Burst-Toleranz vom Doppelten dieser Werte. Eine abgelehnte Anfrage gibt HTTP 429 mit Retry-After zurück; Automatisierung sollte wie angewiesen warten und Backoff anwenden. Fehler sollten einen stabilen Code, eine für Menschen lesbare Nachricht und eine request_id enthalten, wobei sensible Details entfernt werden.
{
"error": {
"code": "unsupported_location",
"message": "This plan is not listed in that region.",
"request_id": "req_example"
}
}Ereignisse, Signaturen und sichere Wiederholungen
Das vorbereitete Webhook-Modell deckt Rechnungszahlung, Dienstbereitschaft, Sperrung und Ticket-Aktualisierungen ab. Die Zustellung sollte eine Ereignis-ID und einen Zeitstempel haben, mit einer HMAC-SHA256-Signatur, die über den ursprünglichen Anfragetext mit einem privaten Signaturschlüssel geprüft wird. Lehnen Sie veraltete oder ungültige Signaturen ab, deduplizieren Sie Ereignis-IDs und bestätigen Sie erst, nachdem das Ereignis dauerhaft akzeptiert wurde. Konsumenten müssen Zustellungen außerhalb der Reihenfolge und wiederholte Zustellungen tolerieren.
Versionieren Sie den Vertrag, bevor Sie ihn ändern
Der vorgeschlagene API-Pfad enthält seine Hauptversion. Additive Änderungen sollten bestehende Clients erhalten; inkompatible Änderungen benötigen eine neue Version und eine sechsmonatige Auslaufankündigung für die alte. Verfügbarkeit, SDKs und ein Produktions-API-Host dürfen erst nach Integration und Sicherheitsprüfung veröffentlicht werden.
Die implementierte Zahlungsgrenze
Die Kontoanwendung hat Festadressen-Zahlungsanforderungen und ablaufende Server-USD-Angebote. Die Transaktionsbeobachtung ist eine vertrauensbasierte, nur serverseitige Integration; es gibt keinen öffentlichen Bestätigungsendpunkt, keinen verbundenen Blockchain-Monitor und keinen Bereitstellungs-Worker. Browser-Polling liest den bestehenden Zahlungsstatus des angemeldeten Kunden und kann keine Transaktion bestätigen. Der oben dargestellte illustrative öffentliche API- und Webhook-Vertrag bleibt zukünftige Designarbeit.
- Raten- und Beobachtungslogik auf dem Server schützen.
- Verknüpfen Sie wiederverwendete Empfangsziele mit einer verifizierten Transaktion und einer expliziten Bestellreferenz.
- Halten Sie Bezahltes und Bereitgestelltes getrennt; eine verifizierte Transaktion darf keine fiktive Hardware erzeugen.
Eine letzte praktische Prüfung.
- Nur-Lese- und Schreib-Token trennen.
- Bewahren Sie eine Anfrage-ID auf, ohne Geheimnisse oder vollständige Anmeldedaten zu protokollieren.
- Behandle einen Netzwerk-Timeout als unsicheres Ergebnis; gleiche ab, bevor du erneut versuchst.
- Verifizieren Sie Ereignissignaturen, bevor Sie eine Bestellung aktualisieren.
Fragen, beantwortet.
Kann ich diese Beispiele heute gegen ombrahost.com verwenden?
Nein. Sie beschreiben einen vorbereiteten Vertrag. Dieses Projekt hat keinen aktiven API-Ursprung, keinen Token-Ausgabedienst und keinen Webhook-Sender.
Enthält die Website eine funktionierende Ombra CLI oder ein SDK?
Es wird keine CLI oder kein SDK beansprucht. Die Benutzeroberfläche und die Kontoworkflows sind getrennt von diesem zukünftigen API-Design implementiert.