For the complete documentation index, see llms.txt. This page is also available as Markdown.

API-Anleitung

Eine umfassende Anleitung zur Nutzung der VergeOS-API, einschließlich Authentifizierung, HTTP-Methoden, Endpunktkonventionen, Filtern, Sortieren, Fehlerbehandlung und Beispielanfragen für VMs und virtuelle Netzwerke.

Überblick

Die VergeOS-API ermöglicht es Entwicklern, programmgesteuert mit dem VergeOS-System zu interagieren. Sie bietet Zugriff auf Systemvorgänge wie das Erstellen virtueller Maschinen, das Verwalten von Ressourcen und die Interaktion mit Abrechnungs- und Katalog-Repositorys. Die API verwendet standardmäßige REST-ähnliche Konventionen und unterstützt mehrere Authentifizierungsmethoden. Dieser Leitfaden bietet einen Überblick über die VergeOS-API, Endpoint-Dokumentation, Beispielanfragen und Fehlerbehandlung.

Dieses Dokument beschreibt die Verwendung der API. Detaillierte Informationen zur API finden Sie in der VergeOS-Oberfläche als Swagger-Dokumentationsseite, die dynamisch generiert wird und eine vollständige Liste der verfügbaren API-Tabellen und -Operationen anzeigt.

Swagger-Oberfläche

Um auf die Swagger-Dokumentation in der VergeOS-Oberfläche zuzugreifen:

  1. Melden Sie sich mit gültigen Anmeldedaten am VergeOS-System an.

  2. Wählen Sie System im oberen Menü aus.

  3. Wählen Sie API-Dokumentations.

  4. Die Swagger-Dokumentationsseite wird geöffnet. Diese Seite bietet detaillierte Beispiele für jede API-Operation, einschließlich der Möglichkeit, die API direkt zu testen.

    Beispiel für Swagger-Dokumentation
  5. Wählen Sie eine einzelne Tabelle aus und wählen Sie eine der verfügbaren GET/POST/DELETE/PUT Optionen aus, um API-Aktionen anzuzeigen und zu testen.

  6. Geben Sie die Parameter an und klicken Sie auf die Schaltfläche „Ausführen“ um den API-Befehl auszuführen. Dadurch wird die Antwort zurückgegeben, einschließlich des Antworttexts, des Headers und eines curl-Beispiels.

API-Grundlagen

HTTP-Methoden

Die VergeOS-API verwendet Standard-HTTP-Methoden wie GET, POST, PUT und DELETE zur Bearbeitung von Ressourcen.

GET-Parameter

  • fields: Geben Sie an, welche Felder im Ergebnissatz zurückgegeben werden sollen.

  • filter: Filtern Sie den Ergebnissatz anhand bestimmter Kriterien.

  • sort: Sortieren Sie die Ergebnisse nach einem angegebenen Feld.

  • limit: Begrenzen Sie die Anzahl der zurückgegebenen Ergebnisse.

Authentifizierung

Alle API-Anfragen müssen über HTTPS erfolgen und erfordern eine Authentifizierung mit grundlegender Zugriffsauthentifizierung oder einem Sitzungstoken.

Zusätzliche Hinweise

  • Ratenbegrenzungen: Die API unterstützt maximal 1000 Anfragen pro Stunde und API-Schlüssel.

  • Datenformate: Alle Antworten werden im JSON-Format zurückgegeben.

  • Paginierung: Endpunkte, die große Datenmengen zurückgeben, unterstützen die Paginierung mit offset und limit Abfrageparametern.


Authentifizierung

VergeOS unterstützt zwei Authentifizierungsmethoden:

  1. Basic-HTTP-Authentifizierung Die API ist nur über SSL verfügbar.

  2. Tokenbasierte Authentifizierung Entwickler müssen ein Token von der API anfordern, indem sie an den /sys/tokens Endpoint posten. Das Token wird anschließend in nachfolgenden API-Anfragen im x-yottabyte-token Header übergeben.

Beispiel für eine Authentifizierungsanfrage

Um ein Token zu erhalten:

Beispielantwort:

Verwenden Sie das Token aus dem "$key" Feld in allen nachfolgenden Anfragen:

Um sich abzumelden, senden Sie eine DELETE-Anfrage an den /sys/tokens/{token} Endpoint.

Beispiel für eine Abmeldeanfrage


Beispiel für virtuelle Maschinen

Der VMs Abschnitt der VergeOS-API ermöglicht es Benutzern, virtuelle Maschinen programmgesteuert zu verwalten. Er umfasst Endpunkte zum Auflisten, Erstellen, Ändern und Löschen von VMs.

Liste der virtuellen Maschinen abrufen

Endpunkt: GET /v4/vms?fields=most

Beschreibung: Ruft eine Liste aller VMs im System mit Details wie CPU-Kernen, RAM, Maschinentyp und Konfigurationsdetails ab.

Beispielanfrage:

Beispielantwort:

Überblick über die zurückgegebenen Daten:

  • $key: Die eindeutige Kennung für die VM.

  • name: Der Name der virtuellen Maschine.

  • machine: Maschinen-ID, die der VM zugeordnet ist.

  • cpu_cores: Anzahl der der VM zugewiesenen CPU-Kerne.

  • ram: Zugewiesene RAM-Menge (in MB).

  • os_family: Betriebssystemtyp.

  • uuid: Universell eindeutige Kennung (UUID) für die VM.

  • created: Der Zeitstempel der Erstellung.

  • modified: Der Zeitstempel der letzten Änderung.


Eine neue virtuelle Maschine erstellen

Endpunkt: POST /v4/vms

Beschreibung: Erstellt eine neue virtuelle Maschine mit spezifischen Konfigurationsdetails wie CPU-Kerne, RAM, Maschinentyp, Bootreihenfolge usw.

Beispielanfrage:

Beispielantwort:

Überblick über die zurückgegebenen Daten:

  • location: Der Speicherort der neu erstellten VM-Ressource.

  • dbpath: Datenbankpfad der neuen VM.

  • $row: Zeilen-ID der VM.

  • $key: Eindeutiger Schlüssel für die VM.


Beispiel für virtuelle Netzwerke (Vnets)

Der Vnets Abschnitt der VergeOS-API ermöglicht es Benutzern, virtuelle Netzwerke (Vnets) programmgesteuert zu verwalten. Er umfasst Endpunkte zum Abrufen, Erstellen und Verwalten von Netzwerkressourcen, einschließlich interner und externer Netzwerke, und ermöglicht erweiterte Optionen wie Ratenbegrenzung.

Vnet-Details abrufen

Endpunkt: GET /v4/vnets?fields=most

Beschreibung: Ruft eine Liste aller Vnets im System mit Details wie Netzwerktyp, MTU, DHCP-Einstellungen und DNS-Konfiguration ab.

Beispielanfrage:

Beispielantwort:

Überblick über die zurückgegebenen Daten:

  • $key: Die eindeutige Kennung für das Vnet.

  • name: Name des virtuellen Netzwerks.

  • advanced_options: Erweiterte Optionen, die an Dienste übergeben werden, die innerhalb des Netzwerks ausgeführt werden; in diesem Beispiel Netboot-Flags für dnsmasq

  • type: Netzwerktyp (z. B. "internal").

  • layer2_type: Der Typ des Layer-2-Netzwerks, z. B. VXLAN.

  • network: Netzwerk-CIDR-Block.

  • mtu: Größe der Maximum Transmission Unit (MTU).

  • dhcp_enabled: Gibt an, ob DHCP für dieses Netzwerk aktiviert ist.

  • dhcp_start: Start-IP-Adresse für den DHCP-Pool.

  • dhcp_stop: End-IP-Adresse für den DHCP-Pool.

  • rate_limit: Ratenbegrenzung für das Netzwerk (in mbytes/second).

  • gateway: Das Standard-Gateway für das Netzwerk.


Ein internes Netzwerk mit Ratenbegrenzung erstellen

Endpunkt: POST /v4/vnets

Beschreibung: Erstellt ein neues internes virtuelles Netzwerk mit Ratenbegrenzung und DHCP-Einstellungen.

Beispielanfrage:

Beispielantwort:

Überblick über die zurückgegebenen Daten:

  • location: Der Speicherort der neu erstellten Vnet-Ressource.

  • dbpath: Datenbankpfad des neuen Vnet.

  • $row: Zeilen-ID des Vnet.

  • $key: Eindeutiger Schlüssel für das Vnet.


Ressourcen

Nachfolgend ein Beispiel für eine URL, die verwendet wird, um eine Liste von Maschinen abzufragen.

Beispiel: https://user1:xxxxxx@server1.verge.io/api/v4/machines?fields=all

https://

Benutzer

:

Passwort

@

Server

/api

/v4/machines

?

filter=&fields=all&sort=&limit=

Benutzername

Benutzerpasswort

Server-Hostname oder IP

Ressourcenposition (URI)

Diese Optionen werden unten beschrieben

GET-Optionen

Felder

  • Geben Sie an, welche Felder im Ergebnissatz zurückgegeben werden sollen (kann auch eine Ansicht sein, falls eine für das Tabellenschema definiert ist).

  • alle gibt jedes Feld zurück.

  • meiste gibt die meisten Felder zurück, außer Argumentfeldern und Zeilen.

  • Zusammenfassung gibt Felder zurück, die in ihrem Schema als 'summary' markiert sind.

  • Beispiel: fields=name,email,enabled,groups[all] as all_groups,collapse(groups[name]) as first_groups_name

Feldfunktionen:

  • collapse

  • datetime

  • upper

  • lower

  • count

  • diskspace

  • display

  • hex

  • sha1

  • sum

  • avg

  • min

  • max

Filter

  • Filtern Sie Ergebnismengen nach angegebenen Kriterien.

  • Ähnlich wie OData.

  • Beispiel: filter=enabled eq true and size gt 1048576.

  • Beispiel: filter=cputype eq 'qemu' or cputype eq 'kvm'.

Operator
Beschreibung

eq

Gleich

ne

Ungleich

gt

Größer als

ge

Größer als oder gleich

lt

Kleiner als

le

Kleiner als oder gleich

bw

Beginnt mit

ew

Endet mit

und

Logisches UND

oder

Logisches ODER

cs

Enthält Zeichenfolge (Groß-/Kleinschreibung beachten)

ct

Enthält Text (Groß-/Kleinschreibung wird nicht beachtet)

rx

Regex-Abgleich

Sortieren

  • Ergebnisse nach dem angegebenen Feld sortieren.

  • Beispiel: sort=+name.

  • Beispiel: sort=-id.

Begrenzen

  • limit (Ganzzahl) begrenzt den Ergebnissatz auf eine bestimmte Anzahl von Einträgen. Ein Wert von 0 bedeutet unbegrenzt.

  • Beispiel: limit=1.

Allgemeine HTTP-Antwortcodes

  • 400 - Ungültige Anfrage: Die Anfrage war ungültig.

  • 401 - Anmeldefehler / Anmeldung erforderlich: Authentifizierung fehlgeschlagen oder ist erforderlich.

  • 403 - Zugriff verweigert: Sie verfügen nicht über die erforderlichen Berechtigungen.

  • 404 - Ressource nicht gefunden: Die angeforderte Zeile oder API existiert nicht.

  • 405 - Nicht zulässig: Der Vorgang ist nicht erlaubt.

  • 409 - Zeile existiert bereits: Die Ressource existiert bereits.

  • 422 - Validierung fehlgeschlagen / Ungültiger Parameter: Die Validierung ist fehlgeschlagen.

  • 500 - Interner Serverfehler: Ein unbehandelter Fehler ist aufgetreten.

POST-spezifisch

  • 201 - Erstellt: Eine neue Zeile/Ressource wurde erfolgreich erstellt.

Websocket-spezifisch (für VNC/SPICE verwendet)

  • 101 - Protokollwechsel: Das Protokoll wurde erfolgreich umgeschaltet.

PUT/GET/DELETE

  • 200 - Erfolg: Der Vorgang wurde erfolgreich abgeschlossen.


Schema-Tabellendefinitionen

Feldtypen

  • bool

  • text

  • string

  • num

  • uint8

  • uint16

  • uint32

  • uint64

  • int8

  • int16

  • int32

  • int64

  • aktiviert

  • created

  • created_ms

  • created_us

  • modified

  • modified_ms

  • modified_us

  • Dateiname

  • Dateigröße

  • fileused

  • fileallocated

  • filemodified

  • json

  • Zeile

  • Zeilen

Schema-Eigentümer / übergeordnetes Feld

  • Eigentümerfeld: Wenn das Eigentümerfeld null ist, gelten die normalen Berechtigungen. Wenn das Eigentümerfeld einen Wert hat, werden die Berechtigungen durch eine Berechtigungsprüfung für den Eigentümer ersetzt.

  • Übergeordnetes Feld: Die Berechtigungsprüfung wird auf die Zeile selbst angewendet, und wenn die Berechtigungen fehlschlagen, werden die Berechtigungen auch für die übergeordnete Zeile geprüft.


Vollständiges Tabellenschema

Um das Schema einer Tabelle abzurufen, hängen Sie $table an die URI an:

/api/v4/machines/$table (ersetzen Sie "machines" durch den Tabellennamen).

Sie werden zur Eingabe Ihrer Anmeldedaten aufgefordert; dafür sind VergeOS-Administratoranmeldedaten erforderlich. Die Ausgabe erfolgt im JSON-Format. Firefox zeigt dies standardmäßig in einem lesbaren Format an, aber andere Browser müssen das JSON möglicherweise in ein externes Programm exportieren, um eine bessere Lesbarkeit zu erreichen.


Beispiel-Fehler

Beispiel-Fehler (HTTP-Code 422)

VergeOS verwendet standardmäßige HTTP-Statuscodes, um das Ergebnis einer API-Anfrage anzugeben.

  • 400 Ungültige Anfrage: Die Anfrage ist ungültig oder kann nicht verarbeitet werden.

  • 401 Nicht autorisiert: Der API-Schlüssel fehlt oder ist ungültig.

  • 403 Verboten: Dem API-Schlüssel fehlen die erforderlichen Berechtigungen.

  • 404 Nicht gefunden: Die Ressource existiert nicht.

  • 500 Interner Serverfehler: Ein Serverfehler ist aufgetreten.


Dokumentinformationen

  • Zuletzt aktualisiert: 2024-11-14

  • vergeOS-Version: 4.12.6

Zuletzt aktualisiert

War das hilfreich?