Bereiche, URLs und Anfrageformat
Wie URLs der REST-API aus einer Projekt-ID aufgebaut sind, welche Header Anfragen und Antworten tragen und wie Bodys, Zeitstempel und Beträge formatiert sind.
Diese Referenz beschreibt, wie URLs der REST-API aufgebaut sind, welche Header Anfragen und Antworten tragen und wie Anfrage- und Antwort-Bodys formatiert sind. Die Vorgänge selbst finden Sie in der API-Referenz.
URL-Struktur
Eine Anfrage-URL besteht aus diesen Teilen:
https://<api-host>/api/v1/scopes/<project-id>/<service>/<collection>/<resource-id>/actions/<action>| Teil | Bedeutung |
|---|---|
https://<api-host>/api/v1 | Die Basis-URL: /api/v1 auf dem API-Host. |
/scopes/<project-id> | Das Projekt, das die Ressource enthält. Die API nennt diese ID die Bereichs-ID, scopeId. |
<service> | Der Dienst, z. B. compute, storage oder network. Siehe Dienste. |
<collection> | Ein Ressourcentyp im Dienst, z. B. instances oder volumes. |
<resource-id> | Eine Ressource der Sammlung. Lassen Sie sie weg, um die gesamte Sammlung zu adressieren. |
/actions/<action> | Eine Aktion für die Ressource, z. B. start oder stop. Aktionen sind immer Anfragen mit POST. |
Einige Beispiele:
| Anfrage | Bedeutung |
|---|---|
GET /scopes/<project-id>/compute/instances | Die Instanzen des Projekts auflisten. |
GET /scopes/<project-id>/compute/instances/<instance-id> | Eine Instanz lesen. |
POST /scopes/<project-id>/compute/instances/<instance-id>/actions/stop | Eine Instanz stoppen. |
DELETE /scopes/<project-id>/storage/volumes/<volume-id> | Ein Volume löschen. |
Codieren Sie jedes Pfadsegment, das Sie einfügen, etwa eine ID oder einen Namen, für die Verwendung in einer URL.
ID eines Projekts ermitteln
Die Bereichs-ID in einem Pfad ist die ID eines Projekts. Sie finden sie an zwei Stellen:
- Die Adresse der Konsole. Jede Seite eines Projekts hat nach dem Sprachcode eine Adresse der Form
/t/<tenant-id>/s/<subscription-id>/project/<project-id>/…. Der Teil nach/project/ist die Projekt-ID. - Die API.
GET /account/whoamigibt die Mandanten, Abonnements und Projekte zurück, auf die Sie zugreifen können, mit ihren IDs.
{
"tenants": [
{
"id": "acme",
"name": "Acme Corp",
"subscriptions": [
{
"id": "acme-production",
"tenantId": "acme",
"name": "Production",
"currency": "TRY",
"defaultRegion": "ist-1",
"projects": [
{
"id": "acme-production-web-platform",
"subscriptionId": "acme-production",
"name": "web-platform",
"region": "ist-1"
}
]
}
]
}
]
}Abonnement- und Projekt-IDs ändern sich nicht, wenn Sie Abonnements oder Projekte umbenennen. Lesen Sie die IDs aus GET /account/whoami, statt sie aus Namen abzuleiten.
Wenn Sie whoami mit einem API-Token oder einem Dienstkontoschlüssel aufrufen, listet es nur den Mandanten auf, zu dem die Anmeldedaten gehören.
Dienste
| Dienstsegment | Sammlungen | Produkt |
|---|---|---|
compute | instances, flavors, key-pairs | Virtual Machines |
compute | images | Images |
compute, storage | snapshots | Snapshots |
storage | volumes, volume-transfers | Block Storage |
storage | buckets, temp-url-key | Object Storage |
storage | backup-plans | Backup Center |
network | networks, routers, network-interfaces | Virtual Networks |
network | security-groups | Security Groups |
network | load-balancers | Load Balancers |
network | vpn | Site-to-Site VPN |
network | floating-ips | Floating IPs |
iam | users, roles, service-accounts, api-tokens und weitere | Identity & Access Management |
iam | openstack-credentials, openstack-api-access | OpenStack API Access |
observability | alert-rules, notification-channels | Monitoring & Alerts |
billing | summary, cost-reports, budgets, commitments, invoices | Cost Management |
activity | activity-events | Activity Log |
In der API heißt eine Größe Flavor: flavors listet die Größen auf. Einige Pfade liegen nicht unter einem Projekt:
| Pfad | Zweck |
|---|---|
/account/whoami | Ihre Identität und die Mandanten, Abonnements und Projekte, auf die Sie zugreifen können. |
/operations/<operation-id> | Einen asynchronen Vorgang lesen. Siehe Synchrone und asynchrone Anfragen. |
/operations/<operation-id>/actions/cancel | Einen Vorgang abbrechen, der noch nicht abgeschlossen ist. |
/regions/<region>/volume-types | Die Volume-Typen einer Region. |
Ein Pfad, der zu keinem Dienst passt, gibt 404 Not Found zurück.
Methoden
| Methode | Verwendung |
|---|---|
GET | Eine Ressource lesen oder eine Sammlung auflisten. |
POST | Eine Ressource erstellen oder unter /actions/<action> eine Aktion ausführen. |
PATCH | Einige Felder einer Ressource ändern. |
PUT | Eine Einstellung als Ganzes ersetzen, z. B. die Tags einer Ressource unter /tags. |
DELETE | Eine Ressource löschen. |
Anfrageheader
| Header | Senden mit | Wert |
|---|---|---|
Authorization | Jeder Anfrage | Bearer, gefolgt von einem API-Token oder einem Dienstkontoschlüssel. Siehe Mit API-Tokens authentifizieren. |
Content-Type | Anfragen mit Body | application/json |
Idempotency-Key | Jeder Anfrage mit POST, PUT, PATCH und DELETE. Mit einem API-Token oder einem Dienstkontoschlüssel ist er bei Anfragen mit POST, die eine Ressource erstellen, erforderlich. | Eine neue UUID für jede neue Anfrage. Siehe Idempotente Anfragen. |
If-Match | Aktualisierungen und Löschvorgängen, die die Version prüfen | Der Wert von ETag aus Ihrem letzten Lesezugriff. Siehe Parallelitätssteuerung. |
X-Request-Id | Optional | Ihre eigene ID für die Anfrage. Die API gibt sie in der Antwort zurück. |
Antwortheader
| Header | Zurückgegeben bei | Wert |
|---|---|---|
X-Request-Id | Jeder Antwort | Die ID der Anfrage: Ihre eigene oder eine, die die API erzeugt hat. |
ETag | Lesezugriffen und Aktualisierungen vieler Ressourcen | Eine Versionskennung der Ressource, z. B. W/"3a7bd3e2360a3d29eea436fcfb7e44c735d117c4". |
Retry-After | 429 Too Many Requests | Die Anzahl der Sekunden, die Sie vor einer Wiederholung warten müssen. |
X-RateLimit-Limit | Anfragen mit einem API-Token oder einem Dienstkontoschlüssel | Die Anzahl der Anfragen, die das aktuelle Zeitfenster erlaubt. |
X-RateLimit-Remaining | Anfragen mit einem API-Token oder einem Dienstkontoschlüssel | Die Anzahl der Anfragen, die im aktuellen Zeitfenster übrig sind. |
X-RateLimit-Reset | Anfragen mit einem API-Token oder einem Dienstkontoschlüssel | Die Anzahl der Sekunden, bis das Zeitfenster zurückgesetzt wird. |
Body-Format
- JSON. Anfrage- und Antwort-Bodys sind JSON. Feldnamen stehen in Camel Case, z. B.
deletionProtectionodersubscriptionId. - Felder ohne Wert. In einer Antwort wird ein optionales Feld ohne Wert weggelassen, statt auf
nullgesetzt zu werden. Ein Feld, das das Schema immer enthält, ist vorhanden und istnull, wenn es keinen Wert hat. - Zeitstempel. ISO-8601-Zeichenfolgen in UTC, z. B.
2026-10-08T09:30:00Z. - IDs. Opake Zeichenfolgen. Verwenden Sie sie genau so, wie die API sie zurückgibt.
- Listen. Ein Listenvorgang gibt
{ "data": [...], "meta": {...} }zurück. Siehe Paginierung. - Fehler. Eine Fehlerantwort hat einen eigenen Body. Siehe Fehler.
Beträge
Geldbeträge sind Ganzzahlen in Zehntausendsteln der Währungseinheit. Ein Feld, dessen Name auf Minor endet, enthält eine solche Ganzzahl, und ein Geldobjekt enthält eine in amount, mit der Währung in currency:
{ "amount": 125000, "currency": "TRY" }Dieser amount entspricht 12,5 Einheiten seiner Währung: Teilen Sie durch 10.000, um den Betrag in der Währungseinheit zu erhalten. Lesen Sie diese Ganzzahlen nicht als Cent.
Beispiel
curl "https://<api-host>/api/v1/scopes/<project-id>/compute/instances?page=1&pageSize=50" \
-H "Authorization: Bearer $PC_TOKEN"<api-host>: der Hostname der API.<project-id>: die ID des Projekts.PC_TOKEN: eine Umgebungsvariable, die Ihr API-Token enthält.