Zum Inhalt springen
Odinex Cloud
API-Referenz

API-Überblick

Basis-URL, Authentifizierung, Anfragen, Paginierung und Konventionen der Odinex Cloud API.

Die Odinex Cloud API ist eine JSON-REST-API. Die Console, die odx CLI und der Terraform-Provider nutzen sie alle – alles, was Sie in der Console tun können, geht also auch über die API. Die Seiten in diesem Abschnitt werden aus der OpenAPI-Spezifikation der API generiert. Praxisnahe Anleitungen zu Netzwerk, Abrechnung und Fehlern finden Sie im Abschnitt „Konzepte“.

Basis-URL

https://api.odinex.cloud/v1

Authentifizierung

Senden Sie ein Projekt-API-Token als Bearer-Token:

curl -H "Authorization: Bearer $ODX_TOKEN" https://api.odinex.cloud/v1/servers

Ein Token sieht nur sein eigenes Projekt. read-Tokens können nur lesen; read_write-Tokens können auch Änderungen vornehmen.

Einige Endpunkte benötigen kein Token: /regions, /server_types, /load_balancer_types, /pricing und /status. Die Abschnitte unter Console session (Authentifizierung, Konto, Projekte, Abrechnung und Support) funktionieren nur mit einer Console-Sitzung, nicht mit Tokens.

Anfragen und Antworten

  • Anfrage- und Antworttexte sind JSON; senden Sie bei einem Anfragetext Content-Type: application/json mit.
  • IDs sind Ganzzahlen. Wo eine Anfrage auf eine andere Ressource verweist (ein Image, einen Servertyp, einen SSH-Key, ein Netzwerk …), können Sie meist deren Namen oder ID angeben, wie in der Beschreibung des Felds angegeben.
  • Zeitstempel sind Strings im Format ISO 8601.
  • Geldbeträge sind Dezimal-Strings in Euro, z. B. "4.000000". Preise sind Objekte mit net, gross und currency.
  • Das Erstellen einer Ressource liefert 201 mit der neuen Ressource und, falls noch Arbeit läuft, eine Aktion. Das Löschen liefert 204 oder eine Aktion.
  • Ein PUT auf eine Ressource ändert nur die mitgesendeten Felder; labels ersetzt, wenn mitgesendet, alle Labels.
  • Fehler verwenden einen einheitlichen Envelope: {"error": {"code", "message", "details"}}.

Paginierung

Listen-Endpunkte akzeptieren page (ab 1) und per_page (1–50, Standard 25) und liefern ein Objekt meta.pagination:

{
  "servers": [],
  "meta": {
    "pagination": { "page": 1, "per_page": 25, "previous_page": null, "next_page": 2, "last_page": 3, "total_entries": 61 }
  }
}

Fragen Sie next_page ab, bis der Wert null ist.

Filtern

Viele Listen-Endpunkte filtern nach name, die meisten nach label_selector, z. B. ?label_selector=env=prod,role=web (kodieren Sie = als %3D, falls Ihr Client das nicht selbst tut).

Limits

Anfragen zählen gegen die Ratenbegrenzung von 3600 pro Stunde und Projekt; jede Antwort enthält RateLimit-*-Header. Die Anzahl der Ressourcen ist durch die Limits Ihrer Organisation begrenzt.

Beispiel: Server erstellen und darauf warten

resp=$(curl -s -X POST https://api.odinex.cloud/v1/servers \
  -H "Authorization: Bearer $ODX_TOKEN" -H "Content-Type: application/json" \
  -d '{"name": "web-1", "server_type": "t1", "image": "ubuntu-24.04", "location": "fra1", "ssh_keys": ["laptop"]}')
action=$(echo "$resp" | jq .action.id)

until [ "$(curl -s -H "Authorization: Bearer $ODX_TOKEN" \
  https://api.odinex.cloud/v1/actions/$action | jq -r .action.status)" != running ]; do sleep 2; done

curl -s -H "Authorization: Bearer $ODX_TOKEN" \
  https://api.odinex.cloud/v1/servers/$(echo "$resp" | jq .server.id) | jq .server.public_net

Auf dieser Seite