← All documentation

API reference · 2026-10-15-github-archives-release

Plattform

Organisationgebundener Maschinenzugang für Domains, DNS, Cluster, Object Storage, Nutzung und Audit; Käufe und interaktive Zahlungen bleiben im Dashboard.

Availability: Limited

Current service status ↗

Versioned guides and examples

Published local documents for revision 2026-10-15-github-archives-release. SDK guidance describes integration options; no external SDK download is implied.

Overview · overview.md
Download overview.md
# Plattform — Produktion

Domains, DNS, Cluster und Objektspeicher haben getrennte Berechtigungen. Die Testumgebung bietet ausschließlich synthetische .test-Domains und DNS-Einträge.

Quelle: d0-api Commit fc447ce3ac35dfa320e273009cb9a3928c3e4690, api/openapi.yaml. Diese Dokumentation und der gefilterte OpenAPI-Vertrag sind unveränderliche Snapshots. Quellqualifikation bedeutet keine bestätigte Live-Verfügbarkeit.

Die jeweils andere Umgebung benötigt eigene Clients, Grants, Daten und Signaturschlüssel. OAuth-Issuer: https://auth.d0.eu; Ressource: https://api.d0.eu/platform. Maschine: Client Credentials mit private_key_jwt und DPoP. Signaturschlüssel bleiben ausschließlich im Serverprozess.
Quickstart · quickstart.md
Download quickstart.md
# Plattform: Produktion in vier Schritten

1. Produkt und Organisationsberechtigung in der Console prüfen. Für Produktion einen eigenen Maschinenclient in d0-auth registrieren; nur die unten genannten Scopes freigeben.
2. Über `https://auth.d0.eu` ein Access Token für `https://api.d0.eu/platform` mit `private_key_jwt` und DPoP beziehen. Den DPoP-Proof an genau den Ziel-Request binden; Nonce-Antworten gemäß Auth-Transport behandeln.
3. Mit platform.domains.read GET /platform/v1/domains aufrufen. Für DNS-Änderungen platform.dns.write beantragen und PUT /platform/v1/domains/{domain}/dns/records/{name}/{type} nur auf einer eigenen Domain verwenden. Cluster-Schreiboperationen benötigen einen vom Aufrufer stabil vergebenen Idempotency-Key.
4. Nur die im `public-openapi.json` dieser Revision gelisteten Operationen verwenden. Bei 429 die veröffentlichten technischen Limits beachten.

Verfügbare Produktions-Scopes: `platform.audit.read`, `platform.clusters.credentials`, `platform.clusters.read`, `platform.clusters.write`, `platform.dns.read`, `platform.dns.write`, `platform.domains.authcode`, `platform.domains.read`, `platform.domains.write`, `platform.storage.credentials`, `platform.storage.read`, `platform.storage.write`, `platform.usage.read`, `platform.webhooks.manage`. Pro Client nur den tatsächlich benötigten Teil beantragen.

Go v0.1.0 ist über den öffentlichen Go-Modul-Proxy installierbar. TypeScript und Python v0.1.0 samt gemeinsamem Auth-Transport sind als geprüfte Archive im [GitHub-Release](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) verfügbar; die genauen Installationsschritte stehen in den SDK-Guides. Die drei Beispiele sind Offline-Fixtures ohne Live-Credentials oder Live-Requests.
Examples · examples/typescript.mjs
Download examples/typescript.mjs
import { PlatformClient, resourceFor } from "../dist/index.js";
for (const profile of ["production", "test"]) {
  const transport = { async request(url, options = {}) {
    if (!String(url).startsWith(resourceFor(profile) + "/v1/")) throw new Error("profile crossover");
    const path = new URL(url).pathname;
    if (path.endsWith("/domains") && (options.method ?? "GET") === "GET") return new Response(JSON.stringify({ domains: [{ fqdn: "example.eu", status: "active", created_at: "2026-01-01T00:00:00Z", updated_at: "2026-01-01T00:00:00Z" }] }), { status: 200, headers: { "Content-Type": "application/json" } });
    if (path.endsWith("/dns/records/www/A") && options.method === "PUT") return new Response(JSON.stringify({ name: "www.example.eu", type: "A", ttl: 300, records: ["192.0.2.1"], read_only: false }), { status: 200, headers: { "Content-Type": "application/json" } });
    throw new Error("unexpected route");
  } };
  const sdk = new PlatformClient(profile, transport);
  const domains = await sdk.listDomains({});
  const record = await sdk.upsertDNSRecord({ domain: domains.domains[0].fqdn, name: "www", type: "A", body: { records: ["192.0.2.1"], ttl: 300 } });
  if (record.name !== "www.example.eu") throw new Error("fixture failed");
  console.log(`${profile}: ${record.name}`);
}
Examples · examples/go.go
Download examples/go.go
package main

import (
	"context"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"strings"

	platform "github.com/dev-null-GmbH/d0-sdk/platform/go"
	"github.com/dev-null-GmbH/d0-sdk/platform/go/gen"
	"github.com/oapi-codegen/nullable"
)

type fixture struct{ profile platform.Profile }

func (f fixture) RoundTrip(req *http.Request) (*http.Response, error) {
	resource, _ := f.profile.Resource()
	if !strings.HasPrefix(req.URL.String(), resource+"/v1/") {
		return nil, fmt.Errorf("profile crossover")
	}
	var data any
	switch {
	case req.Method == "GET" && strings.HasSuffix(req.URL.Path, "/domains"):
		data = map[string]any{"domains": []any{map[string]any{"fqdn": "example.eu", "status": "active", "created_at": "2026-01-01T00:00:00Z", "updated_at": "2026-01-01T00:00:00Z"}}}
	case req.Method == "PUT" && strings.HasSuffix(req.URL.Path, "/dns/records/www/A"):
		data = map[string]any{"name": "www.example.eu", "type": "A", "ttl": 300, "records": []string{"192.0.2.1"}, "read_only": false}
	default:
		return nil, fmt.Errorf("unexpected route")
	}
	raw, _ := json.Marshal(data)
	return &http.Response{StatusCode: 200, Header: http.Header{"Content-Type": []string{"application/json"}}, Body: io.NopCloser(strings.NewReader(string(raw))), Request: req}, nil
}
func main() {
	for _, profile := range []platform.Profile{platform.Production, platform.Test} {
		sdk, err := platform.NewClient(profile, &http.Client{Transport: fixture{profile}})
		if err != nil {
			panic(err)
		}
		domains, err := sdk.ListDomains(context.Background())
		if err != nil || domains.JSON200 == nil {
			panic("list failed")
		}
		got, _ := domains.JSON200.Domains.Get()
		record, err := sdk.UpsertDNSRecord(context.Background(), got[0].Fqdn, "www", "A", gen.RecordUpsertBody{Records: nullable.NewNullableWithValue([]string{"192.0.2.1"})})
		if err != nil || record.JSON200 == nil {
			panic("upsert failed")
		}
		fmt.Printf("%s: %s\n", profile, record.JSON200.Name)
	}
}
Examples · examples/python.py
Download examples/python.py
"""Offline production/test DNS example using the actual Platform client transport API."""
import io
import json
from email.message import Message
from typing import Any

from d0_auth_machine import MachineClient

from d0_platform import PlatformClient, resource_for


class FixtureTransport(MachineClient):
    def __init__(self, profile: str):
        self.resource = resource_for(profile)  # type: ignore[arg-type]

    def request(self, url: str, *, method: str = "GET", headers: Any = None, body: Any = None, cancel: Any = None, timeout: float = 45.0) -> Any:
        assert url.startswith(self.resource + "/v1/")
        if url.endswith("/domains") and method == "GET":
            data: dict[str, Any] = {"domains": [{"fqdn": "example.eu", "status": "active", "created_at": "2026-01-01T00:00:00Z", "updated_at": "2026-01-01T00:00:00Z"}]}
        elif url.endswith("/dns/records/www/A") and method == "PUT":
            data = {"name": "www.example.eu", "type": "A", "ttl": 300, "records": ["192.0.2.1"], "read_only": False}
        else:
            raise AssertionError("unexpected route")
        response = io.BytesIO(json.dumps(data).encode())
        response.status = 200  # type: ignore[attr-defined]
        response.headers = Message()  # type: ignore[attr-defined]
        response.headers["Content-Type"] = "application/json"  # type: ignore[attr-defined]
        return response


for profile in ("production", "test"):
    sdk = PlatformClient(profile, FixtureTransport(profile))  # type: ignore[arg-type]
    domain = sdk.list_domains({})["domains"][0]["fqdn"]
    record = sdk.upsert_dns_record({"domain": domain, "name": "www", "type": "A", "body": {"records": ["192.0.2.1"], "ttl": 300}})
    assert record["name"] == "www.example.eu"
    print(f"{profile}: {record['name']}")
Error catalog · errors.md
Download errors.md
# Plattform — Fehler und Wiederholung

Der genaue Fehlerkörper und die operationellen Antworten stehen in `public-openapi.json`. In den öffentlichen Operationen dieser Revision sind die Statuscodes `200`, `201`, `202`, `204`, `400`, `401`, `403`, `404`, `409`, `422`, `500`, `503`, `default` deklariert. Nicht jeder Code gilt für jede Operation.

- `400`/`422`: Eingabe und geforderte Header gegen die konkrete Operation prüfen; keinen veränderten Request unter demselben Idempotency-Key wiederholen.
- `401`: Token, DPoP-Proof, Nonce, Audience und Clientprofil prüfen.
- `403`: Scope, Organisationsrolle und fachliche Zuordnung prüfen; keine breiteren Scopes erraten.
- `404`: Pfad, Ressource und Tenant-Kontext prüfen; keine Existenz fremder Ressourcen ableiten.
- `409`/`412`: Konflikt bzw. ETag-Vorbedingung durch erneutes Lesen und fachliche Entscheidung auflösen.
- `429`: technische Limitantwort und Reset-/Retry-Hinweis beachten.
- `5xx` oder Transportabbruch: Bei Mutationen denselben vom Aufrufer vergebenen Idempotency-Key verwenden, sofern die Operation ihn vorsieht; sonst erst den serverseitigen Zustand lesen. Keine blinde Wiederholung einer nicht-idempotenten Operation.

Problemantworten und Request-ID helfen bei der Diagnose. Keine Tokens, Schlüssel, Dokumentinhalte oder personenbezogenen Daten in Support-Logs kopieren.
Changelog · CHANGELOG.md
Download CHANGELOG.md
# Plattform 2026-10-15-github-archives-release

- Neue unveränderliche Dokumentationsrevision. Die vorige Revision `2026-10-15-go-release` bleibt bytegleich verfügbar; Quell-OpenAPI, öffentlicher Vertrag und klassifizierte Operationen sind unverändert.
- Das [GitHub-Release](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) stellt die geprüften TypeScript-Tarballs und Python-Wheels für platform v0.1.0 sowie den Auth-Transport v0.1.0 bereit. Der ZIP-Hash ist `6c11b63a5ce5f24dff79d1f3d33c7879ff48831d66dd9029b37abf073152dd93`; der innere `SHA256SUMS`-Katalog wird vor Installation geprüft. Go v0.1.0 bleibt über den öffentlichen Modul-Proxy verfügbar.
- npm und PyPI sind keine Voraussetzungen für diese Distribution. Die installierten Offline-Beispiele wurden im Release-Build geprüft; Service-Rollout und SDK-Download sind getrennte Nachweise.
SDK guidance · sdk-typescript.md
Download sdk-typescript.md
# Plattform typescript SDK

Paket: `@dev-null-gmbh/platform` v0.1.0, Auth-Transport `@dev-null-gmbh/auth-machine` v0.1.0. MIT-Lizenz; Node.js 24.21 bis unter 27.

Die [qualifizierte GitHub-Release-Datei](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) ist die direkte Distribution. Archiv und Prüfsumme herunterladen, dann äußere und innere SHA-256-Werte prüfen (unter Linux kann `sha256sum -c` statt `shasum -a 256 -c` verwendet werden):

```sh
curl -fLO https://github.com/dev-null-GmbH/d0-sdk/releases/download/sdk-2026-10-15/d0-sdk-2026-10-15.zip
curl -fLO https://github.com/dev-null-GmbH/d0-sdk/releases/download/sdk-2026-10-15/d0-sdk-2026-10-15.sha256
shasum -a 256 -c d0-sdk-2026-10-15.sha256
unzip d0-sdk-2026-10-15.zip -d d0-sdk-2026-10-15
(cd d0-sdk-2026-10-15 && shasum -a 256 -c SHA256SUMS)
```

Der äußere ZIP-Hash lautet `6c11b63a5ce5f24dff79d1f3d33c7879ff48831d66dd9029b37abf073152dd93`. Die Archive stammen aus [dem erfolgreichen Main-Build](https://github.com/dev-null-GmbH/d0-sdk/actions/runs/38748901791) bei `d0-sdk@6f2c39612a661ec557e96e5caff093a057e6e1de`. Das Release enthält SDKs und Auth-Transport, keine privaten Services oder Zugangsdaten.

Die beiden geprüften Tarballs lokal im Serverprojekt installieren (keine npm-Registry-Veröffentlichung erforderlich):

```sh
npm install --ignore-scripts --no-audit --no-fund ./d0-sdk-2026-10-15/npm/dev-null-gmbh-auth-machine-0.1.0.tgz ./d0-sdk-2026-10-15/npm/dev-null-gmbh-platform-0.1.0.tgz
```

Das Offline-Beispiel dieser Revision liegt unter `catalog/v1/bundles/platform/2026-10-15-github-archives-release/examples/typescript.mjs`. Das Paket ist für vertrauenswürdige Serveranwendungen gedacht; private Signaturschlüssel gehören nicht in Browser-Code. Öffentliche Operationen und Scopes stehen in `public-openapi.json`.
SDK guidance · sdk-go.md
Download sdk-go.md
# Plattform Go SDK

Paket: `github.com/dev-null-GmbH/d0-sdk/platform/go` v0.1.0. Gemeinsamer Maschinen-Auth-Transport: `github.com/dev-null-GmbH/d0-sdk/auth/go` v0.1.0. Beide sind über den öffentlichen Go-Modul-Proxy mit aktivierter Checksum-Datenbank aus frischer, anonymer Umgebung installierbar. Lizenz: MIT.

```sh
go get github.com/dev-null-GmbH/d0-sdk/platform/go@v0.1.0
```

Modul-Tags: `platform/go/v0.1.0` und `auth/go/v0.1.0`, beide auf `d0-sdk@a7b1730310ccd3decafc299382f4e2f48ebefda7`. Die Quellrevision des API-Vertrags bleibt `d0-api@fc447ce3ac35dfa320e273009cb9a3928c3e4690`.

Das unveränderte Offline-Fixture aus `d0-api@fc447ce3ac35dfa320e273009cb9a3928c3e4690:sdk/go/examples/fixture/main.go` liegt unter `catalog/v1/bundles/platform/2026-10-15-github-archives-release/examples/go.go` (SHA-256 `b0c3b28099938c9427f7d0e4e3553d328edbc3c8bfa67911db8fe14a85eb15a7`). Es demonstriert den Client mit festem production-Profil ohne Netzaufruf. Öffentliche Operationen und Scopes stehen ausschließlich in public-openapi.json; interne und nicht implementierte Operationen sind kein SDK-Vertrag.

Die übrigen Sprachpakete sind über das [geprüfte GitHub-Release](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) verfügbar. Go benötigt nur den oben gezeigten Modulbezug über den öffentlichen Proxy.
SDK guidance · sdk-python.md
Download sdk-python.md
# Plattform python SDK

Paket: `d0-platform` v0.1.0, Auth-Transport `d0-auth-machine` v0.1.0. MIT-Lizenz; Python 3.14.

Die [qualifizierte GitHub-Release-Datei](https://github.com/dev-null-GmbH/d0-sdk/releases/tag/sdk-2026-10-15) ist die direkte Distribution. Archiv und Prüfsumme herunterladen, dann äußere und innere SHA-256-Werte prüfen (unter Linux kann `sha256sum -c` statt `shasum -a 256 -c` verwendet werden):

```sh
curl -fLO https://github.com/dev-null-GmbH/d0-sdk/releases/download/sdk-2026-10-15/d0-sdk-2026-10-15.zip
curl -fLO https://github.com/dev-null-GmbH/d0-sdk/releases/download/sdk-2026-10-15/d0-sdk-2026-10-15.sha256
shasum -a 256 -c d0-sdk-2026-10-15.sha256
unzip d0-sdk-2026-10-15.zip -d d0-sdk-2026-10-15
(cd d0-sdk-2026-10-15 && shasum -a 256 -c SHA256SUMS)
```

Der äußere ZIP-Hash lautet `6c11b63a5ce5f24dff79d1f3d33c7879ff48831d66dd9029b37abf073152dd93`. Die Archive stammen aus [dem erfolgreichen Main-Build](https://github.com/dev-null-GmbH/d0-sdk/actions/runs/38748901791) bei `d0-sdk@6f2c39612a661ec557e96e5caff093a057e6e1de`. Das Release enthält SDKs und Auth-Transport, keine privaten Services oder Zugangsdaten.

Die beiden geprüften Wheels in einer virtuellen Umgebung installieren (keine PyPI-Veröffentlichung erforderlich):

```sh
python3.14 -m venv .venv
.venv/bin/python -m pip install ./d0-sdk-2026-10-15/python/d0_auth_machine-0.1.0-py3-none-any.whl ./d0-sdk-2026-10-15/python/d0_platform-0.1.0-py3-none-any.whl
```

Das Offline-Beispiel dieser Revision liegt unter `catalog/v1/bundles/platform/2026-10-15-github-archives-release/examples/python.py`. Das Paket ist für vertrauenswürdige Serveranwendungen gedacht; private Signaturschlüssel gehören nicht in Browser-Code. Öffentliche Operationen und Scopes stehen in `public-openapi.json`.

Get started

  1. Organisation und fachliche Berechtigungen in der Console auswählen.
  2. In d0-auth einen Client für die Plattform registrieren und nur benötigte Scopes erlauben.
  3. private_key_jwt und DPoP mit der Ressource https://api.d0.eu/platform verwenden.
  4. Mit GET /platform/v1/domains oder GET /platform/v1/developers/limits beginnen.
Open Developer Console →

Operations

Implemented rows describe supported contract behavior. Product availability above still controls whether the runtime is open to customers. Declared and blocked rows describe contract intent or a release gate.

MethodPathOperationReadiness
GET/platform/v1/audit/eventsplatform-listAuditEventsImplemented
GET/platform/v1/cluster-plansplatform-getClusterCatalogImplemented
POST/platform/v1/cluster-quoteplatform-quoteClusterImplemented
GET/platform/v1/clustersplatform-listClustersImplemented
DELETE/platform/v1/clusters/{id}platform-deleteClusterImplemented
GET/platform/v1/clusters/{id}platform-getClusterImplemented
GET/platform/v1/clusters/{id}/kubeconfigplatform-getClusterKubeconfigImplemented
POST/platform/v1/clusters/{id}/kubeconfig:rotateplatform-rotateClusterKubeconfigImplemented
POST/platform/v1/clusters/{id}/resizeplatform-resizeClusterImplemented
POST/platform/v1/clusters/{id}/resumeplatform-resumeClusterImplemented
POST/platform/v1/clusters/{id}/suspendplatform-suspendClusterImplemented
GET/platform/v1/developers/limitsplatform-getDeveloperLimitsImplemented
GET/platform/v1/developers/usageplatform-getDeveloperUsageImplemented
GET/platform/v1/domainsplatform-listDomainsImplemented
GET/platform/v1/domains/{domain}platform-getDomainImplemented
GET/platform/v1/domains/{domain}/authcodeplatform-getDomainAuthCodeImplemented
POST/platform/v1/domains/{domain}/authcode/resetplatform-resetDomainAuthCodeImplemented
GET/platform/v1/domains/{domain}/contactsplatform-getDomainContactsImplemented
PUT/platform/v1/domains/{domain}/contactsplatform-updateDomainContactsImplemented
GET/platform/v1/domains/{domain}/dns/recordsplatform-listDNSRecordsImplemented
DELETE/platform/v1/domains/{domain}/dns/records/{name}/{type}platform-deleteDNSRecordImplemented
PUT/platform/v1/domains/{domain}/dns/records/{name}/{type}platform-upsertDNSRecordImplemented
PUT/platform/v1/domains/{domain}/nameserversplatform-setDomainNameserversImplemented
GET/platform/v1/object-storageplatform-getObjectStorageCatalogImplemented
GET/platform/v1/object-storage/bucketsplatform-listObjectStorageBucketsImplemented
POST/platform/v1/object-storage/bucketsplatform-createObjectStorageBucketImplemented
DELETE/platform/v1/object-storage/buckets/{id}platform-deleteObjectStorageBucketImplemented
GET/platform/v1/object-storage/buckets/{id}/credentialsplatform-listObjectStorageCredentialsImplemented
POST/platform/v1/object-storage/buckets/{id}/credentialsplatform-createObjectStorageCredentialImplemented
DELETE/platform/v1/object-storage/buckets/{id}/credentials/{credential_id}platform-deleteObjectStorageCredentialImplemented

Operation reference

Parameters, request bodies and responses come from the filtered public OpenAPI contract for this revision. Required fields are marked in each schema’s required array.

30 of 30 operations

GET /platform/v1/audit/eventsExport the tenant's audit trail

Returns the caller tenant's own append-only lifecycle trail across its orders, clusters, and object storage, newest first, for compliance and SIEM export. Scoped to the acting org — never spans tenants. Carries no personal data. Follow next_before as ?before to read older events without offsets shifting when new events arrive.

Parameters

limit · query

Max rows (default 100)

{
  "description": "Max rows (default 100)",
  "format": "int64",
  "maximum": 500,
  "minimum": 1,
  "type": "integer"
}

before · query

Exclusive cursor returned by the preceding page

{
  "description": "Exclusive cursor returned by the preceding page",
  "maxLength": 1024,
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: next_before, events

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ListAuditEventsOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "events": {
      "description": "The tenant's audit trail across orders, clusters, and object storage, newest first",
      "items": {
        "additionalProperties": false,
        "properties": {
          "actor": {
            "description": "Who drove the transition (subject or system label); omitted when unattributed",
            "type": "string"
          },
          "created_at": {
            "description": "When the transition was recorded",
            "format": "date-time",
            "type": "string"
          },
          "detail": {
            "additionalProperties": {},
            "description": "Non-PII transition metadata (action/note/code)",
            "type": "object"
          },
          "from_state": {
            "description": "State before the transition; omitted for the creation event",
            "type": "string"
          },
          "id": {
            "description": "Stable event identity including its lifecycle source",
            "type": "string"
          },
          "resource_id": {
            "description": "Id of the order, cluster, bucket, or credential",
            "type": "string"
          },
          "resource_type": {
            "description": "The resource the event belongs to",
            "enum": [
              "order",
              "cluster",
              "object_storage_bucket",
              "object_storage_credential"
            ],
            "type": "string"
          },
          "state_version": {
            "description": "Monotonic version of the resource at this transition",
            "format": "int64",
            "type": "integer"
          },
          "to_state": {
            "description": "State after the transition",
            "type": "string"
          }
        },
        "required": [
          "id",
          "resource_type",
          "resource_id",
          "to_state",
          "state_version",
          "created_at"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "next_before": {
      "description": "Exclusive cursor for the next older page; empty when exhausted",
      "type": "string"
    }
  },
  "required": [
    "next_before",
    "events"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/cluster-plansGet the cluster catalog

Returns the self-serve calculator catalog: the per-resource rate card, the valid per-axis bounds, and priced example presets. The UI prices a spec locally against the rate card and re-verifies via POST /v1/cluster-quote.

Parameters

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: rates, vcpu, memory_gib, storage_gib, max_memory_per_vcpu, presets, network

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/CatalogBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "max_memory_per_vcpu": {
      "description": "Max memory GiB per vCPU",
      "format": "int64",
      "type": "integer"
    },
    "memory_gib": {
      "additionalProperties": false,
      "properties": {
        "max": {
          "format": "int64",
          "type": "integer"
        },
        "min": {
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "min",
        "max"
      ],
      "type": "object"
    },
    "network": {
      "additionalProperties": false,
      "properties": {
        "dedicated_ipv6": {
          "description": "Dedicated public IPv6 addresses available for LoadBalancer Services",
          "type": "boolean"
        },
        "public_ipv4_available": {
          "description": "Unreserved dedicated public IPv4 stock is available",
          "type": "boolean"
        }
      },
      "required": [
        "dedicated_ipv6",
        "public_ipv4_available"
      ],
      "type": "object"
    },
    "presets": {
      "description": "Suggested specs, priced",
      "items": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "Preset label (small/medium/large)",
            "type": "string"
          },
          "price": {
            "additionalProperties": false,
            "properties": {
              "amount_cents": {
                "description": "Monthly price in minor units",
                "format": "int64",
                "type": "integer"
              },
              "currency": {
                "description": "ISO 4217 currency",
                "type": "string"
              },
              "interval": {
                "description": "Billing interval (monthly)",
                "type": "string"
              }
            },
            "required": [
              "amount_cents",
              "currency",
              "interval"
            ],
            "type": "object"
          },
          "spec": {
            "additionalProperties": false,
            "properties": {
              "memory_gib": {
                "description": "Guaranteed memory (GiB)",
                "format": "int64",
                "type": "integer"
              },
              "public_ipv4": {
                "description": "One dedicated public IPv4 address (EUR 1.50/month)",
                "type": "boolean"
              },
              "storage_gib": {
                "description": "Provisioned storage (GiB)",
                "format": "int64",
                "type": "integer"
              },
              "vcpu": {
                "description": "Guaranteed vCPUs",
                "format": "int64",
                "type": "integer"
              }
            },
            "required": [
              "vcpu",
              "memory_gib",
              "storage_gib",
              "public_ipv4"
            ],
            "type": "object"
          }
        },
        "required": [
          "name",
          "spec",
          "price"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "rates": {
      "additionalProperties": false,
      "properties": {
        "base_cents": {
          "description": "Fixed managed-control-plane fee per month",
          "format": "int64",
          "type": "integer"
        },
        "currency": {
          "description": "ISO 4217 currency",
          "type": "string"
        },
        "per_memory_gib_cents": {
          "description": "Per guaranteed memory GiB / month",
          "format": "int64",
          "type": "integer"
        },
        "per_public_ipv4_cents": {
          "description": "One dedicated public IPv4 address / month",
          "format": "int64",
          "type": "integer"
        },
        "per_storage_gib_cents": {
          "description": "Per storage GiB / month",
          "format": "int64",
          "type": "integer"
        },
        "per_vcpu_cents": {
          "description": "Per guaranteed vCPU / month",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "currency",
        "base_cents",
        "per_vcpu_cents",
        "per_memory_gib_cents",
        "per_storage_gib_cents",
        "per_public_ipv4_cents"
      ],
      "type": "object"
    },
    "storage_gib": {
      "additionalProperties": false,
      "properties": {
        "max": {
          "format": "int64",
          "type": "integer"
        },
        "min": {
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "min",
        "max"
      ],
      "type": "object"
    },
    "vcpu": {
      "additionalProperties": false,
      "properties": {
        "max": {
          "format": "int64",
          "type": "integer"
        },
        "min": {
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "min",
        "max"
      ],
      "type": "object"
    }
  },
  "required": [
    "rates",
    "vcpu",
    "memory_gib",
    "storage_gib",
    "max_memory_per_vcpu",
    "presets",
    "network"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
POST /platform/v1/cluster-quoteQuote a cluster spec

Prices a candidate spec server-side (the authoritative price). An out-of-bounds spec is 422.

Parameters

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Request body

application/json · required

Required fields: vcpu, memory_gib, storage_gib

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/SpecReqBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "memory_gib": {
      "description": "Guaranteed memory in GiB (2–256; at most 16×vcpu)",
      "examples": [
        16
      ],
      "format": "int64",
      "maximum": 256,
      "minimum": 2,
      "type": "integer"
    },
    "public_ipv4": {
      "description": "Add one dedicated public IPv4 address when available",
      "type": "boolean"
    },
    "storage_gib": {
      "description": "Provisioned storage in GiB (10–4096)",
      "examples": [
        100
      ],
      "format": "int64",
      "maximum": 4096,
      "minimum": 10,
      "type": "integer"
    },
    "vcpu": {
      "description": "Guaranteed vCPUs (1–64)",
      "examples": [
        4
      ],
      "format": "int64",
      "maximum": 64,
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "vcpu",
    "memory_gib",
    "storage_gib"
  ],
  "type": "object"
}

Responses

200 · application/json

OK

Required fields: spec, price

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ClusterQuoteOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "price": {
      "additionalProperties": false,
      "properties": {
        "amount_cents": {
          "description": "Monthly price in minor units",
          "format": "int64",
          "type": "integer"
        },
        "currency": {
          "description": "ISO 4217 currency",
          "type": "string"
        },
        "interval": {
          "description": "Billing interval (monthly)",
          "type": "string"
        }
      },
      "required": [
        "amount_cents",
        "currency",
        "interval"
      ],
      "type": "object"
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "memory_gib": {
          "description": "Guaranteed memory (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "public_ipv4": {
          "description": "One dedicated public IPv4 address (EUR 1.50/month)",
          "type": "boolean"
        },
        "storage_gib": {
          "description": "Provisioned storage (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "vcpu": {
          "description": "Guaranteed vCPUs",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "vcpu",
        "memory_gib",
        "storage_gib",
        "public_ipv4"
      ],
      "type": "object"
    }
  },
  "required": [
    "spec",
    "price"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/clustersList clusters

Lists the caller tenant's clusters, newest first.

Parameters

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: clusters

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ListClustersOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "clusters": {
      "description": "The tenant's clusters, newest first",
      "items": {
        "additionalProperties": false,
        "properties": {
          "$schema": {
            "description": "A URL to the JSON Schema for this object.",
            "examples": [
              "https://example.com/schemas/ClusterBody.json"
            ],
            "format": "uri",
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "description": "RFC 3339 creation time",
            "type": "string"
          },
          "currency": {
            "description": "ISO 4217 currency of price_cents",
            "type": "string"
          },
          "endpoint": {
            "description": "Cluster API endpoint (when running)",
            "type": "string"
          },
          "id": {
            "description": "Cluster ID",
            "type": "string"
          },
          "name": {
            "description": "Cluster display name (a DNS label)",
            "type": "string"
          },
          "offering": {
            "description": "Cluster placement product: shared_nodes or private_nodes",
            "type": "string"
          },
          "price_cents": {
            "description": "Server-side monthly price in minor units",
            "format": "int64",
            "type": "integer"
          },
          "public_ipv4_address": {
            "description": "Reserved dedicated public IPv4 address",
            "type": "string"
          },
          "ready": {
            "description": "Control plane ready + kubeconfig available",
            "type": "boolean"
          },
          "spec": {
            "additionalProperties": false,
            "properties": {
              "memory_gib": {
                "description": "Guaranteed memory (GiB)",
                "format": "int64",
                "type": "integer"
              },
              "public_ipv4": {
                "description": "One dedicated public IPv4 address (EUR 1.50/month)",
                "type": "boolean"
              },
              "storage_gib": {
                "description": "Provisioned storage (GiB)",
                "format": "int64",
                "type": "integer"
              },
              "vcpu": {
                "description": "Guaranteed vCPUs",
                "format": "int64",
                "type": "integer"
              }
            },
            "required": [
              "vcpu",
              "memory_gib",
              "storage_gib",
              "public_ipv4"
            ],
            "type": "object"
          },
          "state": {
            "description": "Cluster state",
            "type": "string"
          },
          "state_version": {
            "description": "Optimistic-concurrency version of the state",
            "format": "int64",
            "type": "integer"
          },
          "updated_at": {
            "description": "RFC 3339 last-update time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "spec",
          "state",
          "offering",
          "state_version",
          "ready",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    }
  },
  "required": [
    "clusters"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
DELETE /platform/v1/clusters/{id}Delete a cluster

Tears the cluster down (async). Idempotency-Key is required. Returns the cluster now in its deleting state.

Parameters

id · path · required

Cluster ID

{
  "description": "Cluster ID",
  "type": "string"
}

Idempotency-Key · header · required

Required client-chosen key making the action idempotent

{
  "description": "Required client-chosen key making the action idempotent",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

202 · application/json

Accepted

Required fields: id, name, spec, state, offering, state_version, ready, created_at, updated_at

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ClusterBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "created_at": {
      "description": "RFC 3339 creation time",
      "type": "string"
    },
    "currency": {
      "description": "ISO 4217 currency of price_cents",
      "type": "string"
    },
    "endpoint": {
      "description": "Cluster API endpoint (when running)",
      "type": "string"
    },
    "id": {
      "description": "Cluster ID",
      "type": "string"
    },
    "name": {
      "description": "Cluster display name (a DNS label)",
      "type": "string"
    },
    "offering": {
      "description": "Cluster placement product: shared_nodes or private_nodes",
      "type": "string"
    },
    "price_cents": {
      "description": "Server-side monthly price in minor units",
      "format": "int64",
      "type": "integer"
    },
    "public_ipv4_address": {
      "description": "Reserved dedicated public IPv4 address",
      "type": "string"
    },
    "ready": {
      "description": "Control plane ready + kubeconfig available",
      "type": "boolean"
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "memory_gib": {
          "description": "Guaranteed memory (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "public_ipv4": {
          "description": "One dedicated public IPv4 address (EUR 1.50/month)",
          "type": "boolean"
        },
        "storage_gib": {
          "description": "Provisioned storage (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "vcpu": {
          "description": "Guaranteed vCPUs",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "vcpu",
        "memory_gib",
        "storage_gib",
        "public_ipv4"
      ],
      "type": "object"
    },
    "state": {
      "description": "Cluster state",
      "type": "string"
    },
    "state_version": {
      "description": "Optimistic-concurrency version of the state",
      "format": "int64",
      "type": "integer"
    },
    "updated_at": {
      "description": "RFC 3339 last-update time",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "spec",
    "state",
    "offering",
    "state_version",
    "ready",
    "created_at",
    "updated_at"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/clusters/{id}Get a cluster

Returns the cluster's status. Scoped to the caller tenant; a cluster owned by another tenant returns 404.

Parameters

id · path · required

Cluster ID

{
  "description": "Cluster ID",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: id, name, spec, state, offering, state_version, ready, created_at, updated_at

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ClusterBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "created_at": {
      "description": "RFC 3339 creation time",
      "type": "string"
    },
    "currency": {
      "description": "ISO 4217 currency of price_cents",
      "type": "string"
    },
    "endpoint": {
      "description": "Cluster API endpoint (when running)",
      "type": "string"
    },
    "id": {
      "description": "Cluster ID",
      "type": "string"
    },
    "name": {
      "description": "Cluster display name (a DNS label)",
      "type": "string"
    },
    "offering": {
      "description": "Cluster placement product: shared_nodes or private_nodes",
      "type": "string"
    },
    "price_cents": {
      "description": "Server-side monthly price in minor units",
      "format": "int64",
      "type": "integer"
    },
    "public_ipv4_address": {
      "description": "Reserved dedicated public IPv4 address",
      "type": "string"
    },
    "ready": {
      "description": "Control plane ready + kubeconfig available",
      "type": "boolean"
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "memory_gib": {
          "description": "Guaranteed memory (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "public_ipv4": {
          "description": "One dedicated public IPv4 address (EUR 1.50/month)",
          "type": "boolean"
        },
        "storage_gib": {
          "description": "Provisioned storage (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "vcpu": {
          "description": "Guaranteed vCPUs",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "vcpu",
        "memory_gib",
        "storage_gib",
        "public_ipv4"
      ],
      "type": "object"
    },
    "state": {
      "description": "Cluster state",
      "type": "string"
    },
    "state_version": {
      "description": "Optimistic-concurrency version of the state",
      "format": "int64",
      "type": "integer"
    },
    "updated_at": {
      "description": "RFC 3339 last-update time",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "spec",
    "state",
    "offering",
    "state_version",
    "ready",
    "created_at",
    "updated_at"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/clusters/{id}/kubeconfigGet a cluster's kubeconfig

Returns the cluster's kubeconfig (YAML). Sensitive — the response is marked no-store and every fetch is audited. Scoped to the caller tenant.

Parameters

id · path · required

Cluster ID

{
  "description": "Cluster ID",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: kubeconfig

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/KubeconfigOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "kubeconfig": {
      "description": "Cluster kubeconfig (YAML). Sensitive — never logged.",
      "type": "string"
    }
  },
  "required": [
    "kubeconfig"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
POST /platform/v1/clusters/{id}/kubeconfig:rotateRotate a cluster's kubeconfig

Re-issues the cluster's admin credential and re-seals it (async), invalidating a leaked kubeconfig. Idempotency-Key is required.

Parameters

id · path · required

Cluster ID

{
  "description": "Cluster ID",
  "type": "string"
}

Idempotency-Key · header · required

Required client-chosen key making the action idempotent

{
  "description": "Required client-chosen key making the action idempotent",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

202 · application/json

Accepted

Required fields: id, name, spec, state, offering, state_version, ready, created_at, updated_at

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ClusterBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "created_at": {
      "description": "RFC 3339 creation time",
      "type": "string"
    },
    "currency": {
      "description": "ISO 4217 currency of price_cents",
      "type": "string"
    },
    "endpoint": {
      "description": "Cluster API endpoint (when running)",
      "type": "string"
    },
    "id": {
      "description": "Cluster ID",
      "type": "string"
    },
    "name": {
      "description": "Cluster display name (a DNS label)",
      "type": "string"
    },
    "offering": {
      "description": "Cluster placement product: shared_nodes or private_nodes",
      "type": "string"
    },
    "price_cents": {
      "description": "Server-side monthly price in minor units",
      "format": "int64",
      "type": "integer"
    },
    "public_ipv4_address": {
      "description": "Reserved dedicated public IPv4 address",
      "type": "string"
    },
    "ready": {
      "description": "Control plane ready + kubeconfig available",
      "type": "boolean"
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "memory_gib": {
          "description": "Guaranteed memory (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "public_ipv4": {
          "description": "One dedicated public IPv4 address (EUR 1.50/month)",
          "type": "boolean"
        },
        "storage_gib": {
          "description": "Provisioned storage (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "vcpu": {
          "description": "Guaranteed vCPUs",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "vcpu",
        "memory_gib",
        "storage_gib",
        "public_ipv4"
      ],
      "type": "object"
    },
    "state": {
      "description": "Cluster state",
      "type": "string"
    },
    "state_version": {
      "description": "Optimistic-concurrency version of the state",
      "format": "int64",
      "type": "integer"
    },
    "updated_at": {
      "description": "RFC 3339 last-update time",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "spec",
    "state",
    "offering",
    "state_version",
    "ready",
    "created_at",
    "updated_at"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
POST /platform/v1/clusters/{id}/resizeResize a cluster (grow-only)

Grows the cluster to a larger spec (async). Grow-only: a shrink or same-spec is rejected (422). Idempotency-Key is required.

Parameters

id · path · required

Cluster ID

{
  "description": "Cluster ID",
  "type": "string"
}

Idempotency-Key · header · required

Required client-chosen key making the resize idempotent

{
  "description": "Required client-chosen key making the resize idempotent",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Request body

application/json · required

Required fields: spec

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ResizeClusterInputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "$schema": {
          "description": "A URL to the JSON Schema for this object.",
          "examples": [
            "https://example.com/schemas/SpecReqBody.json"
          ],
          "format": "uri",
          "readOnly": true,
          "type": "string"
        },
        "memory_gib": {
          "description": "Guaranteed memory in GiB (2–256; at most 16×vcpu)",
          "examples": [
            16
          ],
          "format": "int64",
          "maximum": 256,
          "minimum": 2,
          "type": "integer"
        },
        "public_ipv4": {
          "description": "Add one dedicated public IPv4 address when available",
          "type": "boolean"
        },
        "storage_gib": {
          "description": "Provisioned storage in GiB (10–4096)",
          "examples": [
            100
          ],
          "format": "int64",
          "maximum": 4096,
          "minimum": 10,
          "type": "integer"
        },
        "vcpu": {
          "description": "Guaranteed vCPUs (1–64)",
          "examples": [
            4
          ],
          "format": "int64",
          "maximum": 64,
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "vcpu",
        "memory_gib",
        "storage_gib"
      ],
      "type": "object"
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}

application/octet-stream · required

{
  "contentMediaType": "application/octet-stream",
  "format": "binary",
  "type": "string"
}

Responses

202 · application/json

Accepted

Required fields: id, name, spec, state, offering, state_version, ready, created_at, updated_at

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ClusterBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "created_at": {
      "description": "RFC 3339 creation time",
      "type": "string"
    },
    "currency": {
      "description": "ISO 4217 currency of price_cents",
      "type": "string"
    },
    "endpoint": {
      "description": "Cluster API endpoint (when running)",
      "type": "string"
    },
    "id": {
      "description": "Cluster ID",
      "type": "string"
    },
    "name": {
      "description": "Cluster display name (a DNS label)",
      "type": "string"
    },
    "offering": {
      "description": "Cluster placement product: shared_nodes or private_nodes",
      "type": "string"
    },
    "price_cents": {
      "description": "Server-side monthly price in minor units",
      "format": "int64",
      "type": "integer"
    },
    "public_ipv4_address": {
      "description": "Reserved dedicated public IPv4 address",
      "type": "string"
    },
    "ready": {
      "description": "Control plane ready + kubeconfig available",
      "type": "boolean"
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "memory_gib": {
          "description": "Guaranteed memory (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "public_ipv4": {
          "description": "One dedicated public IPv4 address (EUR 1.50/month)",
          "type": "boolean"
        },
        "storage_gib": {
          "description": "Provisioned storage (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "vcpu": {
          "description": "Guaranteed vCPUs",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "vcpu",
        "memory_gib",
        "storage_gib",
        "public_ipv4"
      ],
      "type": "object"
    },
    "state": {
      "description": "Cluster state",
      "type": "string"
    },
    "state_version": {
      "description": "Optimistic-concurrency version of the state",
      "format": "int64",
      "type": "integer"
    },
    "updated_at": {
      "description": "RFC 3339 last-update time",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "spec",
    "state",
    "offering",
    "state_version",
    "ready",
    "created_at",
    "updated_at"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
POST /platform/v1/clusters/{id}/resumeResume a cluster

Un-pauses a suspended cluster (async). Idempotency-Key is required. A cluster suspended for non-payment must have its invoice settled first (409).

Parameters

id · path · required

Cluster ID

{
  "description": "Cluster ID",
  "type": "string"
}

Idempotency-Key · header · required

Required client-chosen key making the action idempotent

{
  "description": "Required client-chosen key making the action idempotent",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

202 · application/json

Accepted

Required fields: id, name, spec, state, offering, state_version, ready, created_at, updated_at

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ClusterBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "created_at": {
      "description": "RFC 3339 creation time",
      "type": "string"
    },
    "currency": {
      "description": "ISO 4217 currency of price_cents",
      "type": "string"
    },
    "endpoint": {
      "description": "Cluster API endpoint (when running)",
      "type": "string"
    },
    "id": {
      "description": "Cluster ID",
      "type": "string"
    },
    "name": {
      "description": "Cluster display name (a DNS label)",
      "type": "string"
    },
    "offering": {
      "description": "Cluster placement product: shared_nodes or private_nodes",
      "type": "string"
    },
    "price_cents": {
      "description": "Server-side monthly price in minor units",
      "format": "int64",
      "type": "integer"
    },
    "public_ipv4_address": {
      "description": "Reserved dedicated public IPv4 address",
      "type": "string"
    },
    "ready": {
      "description": "Control plane ready + kubeconfig available",
      "type": "boolean"
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "memory_gib": {
          "description": "Guaranteed memory (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "public_ipv4": {
          "description": "One dedicated public IPv4 address (EUR 1.50/month)",
          "type": "boolean"
        },
        "storage_gib": {
          "description": "Provisioned storage (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "vcpu": {
          "description": "Guaranteed vCPUs",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "vcpu",
        "memory_gib",
        "storage_gib",
        "public_ipv4"
      ],
      "type": "object"
    },
    "state": {
      "description": "Cluster state",
      "type": "string"
    },
    "state_version": {
      "description": "Optimistic-concurrency version of the state",
      "format": "int64",
      "type": "integer"
    },
    "updated_at": {
      "description": "RFC 3339 last-update time",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "spec",
    "state",
    "offering",
    "state_version",
    "ready",
    "created_at",
    "updated_at"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
POST /platform/v1/clusters/{id}/suspendSuspend a cluster

Pauses the cluster's control plane (async). Idempotency-Key is required. Returns the cluster in its suspending/suspended state.

Parameters

id · path · required

Cluster ID

{
  "description": "Cluster ID",
  "type": "string"
}

Idempotency-Key · header · required

Required client-chosen key making the action idempotent

{
  "description": "Required client-chosen key making the action idempotent",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

202 · application/json

Accepted

Required fields: id, name, spec, state, offering, state_version, ready, created_at, updated_at

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ClusterBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "created_at": {
      "description": "RFC 3339 creation time",
      "type": "string"
    },
    "currency": {
      "description": "ISO 4217 currency of price_cents",
      "type": "string"
    },
    "endpoint": {
      "description": "Cluster API endpoint (when running)",
      "type": "string"
    },
    "id": {
      "description": "Cluster ID",
      "type": "string"
    },
    "name": {
      "description": "Cluster display name (a DNS label)",
      "type": "string"
    },
    "offering": {
      "description": "Cluster placement product: shared_nodes or private_nodes",
      "type": "string"
    },
    "price_cents": {
      "description": "Server-side monthly price in minor units",
      "format": "int64",
      "type": "integer"
    },
    "public_ipv4_address": {
      "description": "Reserved dedicated public IPv4 address",
      "type": "string"
    },
    "ready": {
      "description": "Control plane ready + kubeconfig available",
      "type": "boolean"
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "memory_gib": {
          "description": "Guaranteed memory (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "public_ipv4": {
          "description": "One dedicated public IPv4 address (EUR 1.50/month)",
          "type": "boolean"
        },
        "storage_gib": {
          "description": "Provisioned storage (GiB)",
          "format": "int64",
          "type": "integer"
        },
        "vcpu": {
          "description": "Guaranteed vCPUs",
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "vcpu",
        "memory_gib",
        "storage_gib",
        "public_ipv4"
      ],
      "type": "object"
    },
    "state": {
      "description": "Cluster state",
      "type": "string"
    },
    "state_version": {
      "description": "Optimistic-concurrency version of the state",
      "format": "int64",
      "type": "integer"
    },
    "updated_at": {
      "description": "RFC 3339 last-update time",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "spec",
    "state",
    "offering",
    "state_version",
    "ready",
    "created_at",
    "updated_at"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/developers/limitsEffective organization and caller request limits

Actual shared quota decision for this request. The organization bucket covers all participating product APIs; the client bucket covers the current OAuth client. This request counts toward both limits; the human Console can read an exhausted decision to diagnose throttling. These technical limits are independent of billing and native S3/Kubernetes quotas.

Parameters

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: environment, client_id, observed_at, buckets, over_limit

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/Result.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "buckets": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "remaining": {
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "requests_per_window": {
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "reset_after_seconds": {
            "format": "int64",
            "type": "integer"
          },
          "scope": {
            "enum": [
              "organization",
              "client"
            ],
            "type": "string"
          },
          "window_seconds": {
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "scope",
          "requests_per_window",
          "window_seconds",
          "remaining",
          "reset_after_seconds"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "client_id": {
      "type": "string"
    },
    "environment": {
      "enum": [
        "production",
        "test"
      ],
      "type": "string"
    },
    "observed_at": {
      "format": "date-time",
      "type": "string"
    },
    "over_limit": {
      "type": "boolean"
    }
  },
  "required": [
    "environment",
    "client_id",
    "observed_at",
    "buckets",
    "over_limit"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/developers/usageOrganization API usage

Technical request statistics, not billing evidence. UTC day aggregates retained for thirteen months. An unavailable collection pipeline returns 503, never fabricated zero usage.

Parameters

product · query

{
  "maxLength": 64,
  "type": "string"
}

environment · query

{
  "default": "production",
  "enum": [
    "production",
    "test"
  ],
  "type": "string"
}

client_id · query

{
  "maxLength": 128,
  "type": "string"
}

from · query

{
  "format": "date-time",
  "type": "string"
}

until · query

{
  "format": "date-time",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: environment, coverage_from, collection_gaps_24h, covered_products, from, until, observed_at, totals, by_product, daily

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/Usage.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "by_product": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "duration_ms": {
            "format": "double",
            "type": "number"
          },
          "errors": {
            "format": "int64",
            "type": "integer"
          },
          "product": {
            "type": "string"
          },
          "rate_limited": {
            "format": "int64",
            "type": "integer"
          },
          "requests": {
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "product",
          "requests",
          "errors",
          "rate_limited",
          "duration_ms"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "collection_gaps_24h": {
      "format": "int64",
      "type": "integer"
    },
    "coverage_from": {
      "format": "date-time",
      "type": "string"
    },
    "covered_products": {
      "items": {
        "type": "string"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "daily": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "day": {
            "type": "string"
          },
          "duration_ms": {
            "format": "double",
            "type": "number"
          },
          "errors": {
            "format": "int64",
            "type": "integer"
          },
          "rate_limited": {
            "format": "int64",
            "type": "integer"
          },
          "requests": {
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "day",
          "requests",
          "errors",
          "rate_limited",
          "duration_ms"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "environment": {
      "enum": [
        "production",
        "test"
      ],
      "type": "string"
    },
    "from": {
      "format": "date-time",
      "type": "string"
    },
    "observed_at": {
      "format": "date-time",
      "type": "string"
    },
    "totals": {
      "additionalProperties": false,
      "properties": {
        "duration_ms": {
          "format": "double",
          "type": "number"
        },
        "errors": {
          "format": "int64",
          "type": "integer"
        },
        "rate_limited": {
          "format": "int64",
          "type": "integer"
        },
        "requests": {
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "requests",
        "errors",
        "rate_limited",
        "duration_ms"
      ],
      "type": "object"
    },
    "until": {
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "environment",
    "coverage_from",
    "collection_gaps_24h",
    "covered_products",
    "from",
    "until",
    "observed_at",
    "totals",
    "by_product",
    "daily"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/domainsList managed domains

Lists the caller tenant's managed domains, newest first.

Parameters

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: domains

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ListDomainsOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "domains": {
      "description": "The tenant's managed domains, newest first",
      "items": {
        "additionalProperties": false,
        "properties": {
          "$schema": {
            "description": "A URL to the JSON Schema for this object.",
            "examples": [
              "https://example.com/schemas/DomainBody.json"
            ],
            "format": "uri",
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "description": "RFC 3339 creation time",
            "type": "string"
          },
          "expires_at": {
            "description": "RFC 3339 expiry, when known",
            "type": "string"
          },
          "fqdn": {
            "description": "The managed domain",
            "type": "string"
          },
          "nameservers": {
            "description": "Delegation nameservers",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "status": {
            "description": "Domain status",
            "type": "string"
          },
          "updated_at": {
            "description": "RFC 3339 last-update time",
            "type": "string"
          }
        },
        "required": [
          "fqdn",
          "status",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    }
  },
  "required": [
    "domains"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/domains/{domain}Get a managed domain

Returns a managed domain's detail. Scoped to the caller tenant.

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: fqdn, status, created_at, updated_at

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/DomainBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "created_at": {
      "description": "RFC 3339 creation time",
      "type": "string"
    },
    "expires_at": {
      "description": "RFC 3339 expiry, when known",
      "type": "string"
    },
    "fqdn": {
      "description": "The managed domain",
      "type": "string"
    },
    "nameservers": {
      "description": "Delegation nameservers",
      "items": {
        "type": "string"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "status": {
      "description": "Domain status",
      "type": "string"
    },
    "updated_at": {
      "description": "RFC 3339 last-update time",
      "type": "string"
    }
  },
  "required": [
    "fqdn",
    "status",
    "created_at",
    "updated_at"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/domains/{domain}/authcodeGet the EPP auth code

Returns the domain's EPP transfer auth code. Scoped to the caller tenant.

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: auth_code

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/AuthCodeOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "auth_code": {
      "description": "The EPP transfer auth code",
      "type": "string"
    }
  },
  "required": [
    "auth_code"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
POST /platform/v1/domains/{domain}/authcode/resetReset the EPP auth code

Rotates and returns a new EPP transfer auth code. Scoped to the caller tenant.

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: auth_code

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/AuthCodeOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "auth_code": {
      "description": "The EPP transfer auth code",
      "type": "string"
    }
  },
  "required": [
    "auth_code"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/domains/{domain}/contactsRead current domain registrant

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: first_name, last_name, email, phone, street, city, zipcode, country

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/RegistrantInput.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "city": {
      "description": "City",
      "type": "string"
    },
    "company_name": {
      "type": "string"
    },
    "country": {
      "description": "ISO 3166-1 alpha-2 country code",
      "maxLength": 2,
      "minLength": 2,
      "type": "string"
    },
    "email": {
      "description": "Registrant contact email",
      "format": "email",
      "type": "string"
    },
    "first_name": {
      "description": "Registrant given name",
      "type": "string"
    },
    "last_name": {
      "description": "Registrant family name",
      "type": "string"
    },
    "phone": {
      "description": "Registrant phone in canonical E.164, e.g. +49301234567",
      "pattern": "^\\+[1-9][0-9]{1,14}$",
      "type": "string"
    },
    "registration_data": {
      "additionalProperties": false,
      "properties": {
        "customer": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "domain": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "state": {
      "type": "string"
    },
    "street": {
      "description": "Street address",
      "type": "string"
    },
    "street_number": {
      "type": "string"
    },
    "zipcode": {
      "description": "Postal code",
      "type": "string"
    }
  },
  "required": [
    "first_name",
    "last_name",
    "email",
    "phone",
    "street",
    "city",
    "zipcode",
    "country"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
PUT /platform/v1/domains/{domain}/contactsUpdate registrant/contacts

Updates the domain's registrant and contacts at the registry. Personal data — minimized, never logged. Scoped to the caller tenant.

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Request body

application/json · required

Required fields: registrant

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/UpdateContactsInputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "registrant": {
      "additionalProperties": false,
      "properties": {
        "$schema": {
          "description": "A URL to the JSON Schema for this object.",
          "examples": [
            "https://example.com/schemas/RegistrantInput.json"
          ],
          "format": "uri",
          "readOnly": true,
          "type": "string"
        },
        "city": {
          "description": "City",
          "type": "string"
        },
        "company_name": {
          "type": "string"
        },
        "country": {
          "description": "ISO 3166-1 alpha-2 country code",
          "maxLength": 2,
          "minLength": 2,
          "type": "string"
        },
        "email": {
          "description": "Registrant contact email",
          "format": "email",
          "type": "string"
        },
        "first_name": {
          "description": "Registrant given name",
          "type": "string"
        },
        "last_name": {
          "description": "Registrant family name",
          "type": "string"
        },
        "phone": {
          "description": "Registrant phone in canonical E.164, e.g. +49301234567",
          "pattern": "^\\+[1-9][0-9]{1,14}$",
          "type": "string"
        },
        "registration_data": {
          "additionalProperties": false,
          "properties": {
            "customer": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "domain": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "state": {
          "type": "string"
        },
        "street": {
          "description": "Street address",
          "type": "string"
        },
        "street_number": {
          "type": "string"
        },
        "zipcode": {
          "description": "Postal code",
          "type": "string"
        }
      },
      "required": [
        "first_name",
        "last_name",
        "email",
        "phone",
        "street",
        "city",
        "zipcode",
        "country"
      ],
      "type": "object"
    }
  },
  "required": [
    "registrant"
  ],
  "type": "object"
}

Responses

204

No Content

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/domains/{domain}/dns/recordsList DNS records

Lists the domain's zone records. SOA and the apex NS set are flagged read_only. Scoped to the caller tenant.

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: records

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ListRecordsOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "records": {
      "description": "The zone's record sets",
      "items": {
        "additionalProperties": false,
        "properties": {
          "$schema": {
            "description": "A URL to the JSON Schema for this object.",
            "examples": [
              "https://example.com/schemas/RecordBody.json"
            ],
            "format": "uri",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Record name (FQDN)",
            "type": "string"
          },
          "read_only": {
            "description": "True for platform-managed sets (SOA, apex NS) that cannot be edited",
            "type": "boolean"
          },
          "records": {
            "description": "Record contents",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "ttl": {
            "description": "Time-to-live in seconds",
            "format": "int64",
            "type": "integer"
          },
          "type": {
            "description": "Record type",
            "type": "string"
          }
        },
        "required": [
          "name",
          "type",
          "ttl",
          "records",
          "read_only"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    }
  },
  "required": [
    "records"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
DELETE /platform/v1/domains/{domain}/dns/records/{name}/{type}Delete a DNS record set

Deletes one RRset (name+type); deleting a missing set is a no-op (204). SOA and the apex NS set are not editable (422). Scoped to the caller tenant.

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

name · path · required

Record name (relative, '@' for apex, or FQDN)

{
  "description": "Record name (relative, '@' for apex, or FQDN)",
  "examples": [
    "www"
  ],
  "maxLength": 253,
  "type": "string"
}

type · path · required

Record type, e.g. A, AAAA, CNAME, MX, TXT, NS, CAA, SRV

{
  "description": "Record type, e.g. A, AAAA, CNAME, MX, TXT, NS, CAA, SRV",
  "examples": [
    "A"
  ],
  "pattern": "^[A-Za-z]+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

204

No Content

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
PUT /platform/v1/domains/{domain}/dns/records/{name}/{type}Create or replace a DNS record set

Upserts one RRset (name+type). Validated for RFC-correct content and zone structure before it reaches the backend. SOA and the apex NS set are not editable (422). Scoped to the caller tenant.

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

name · path · required

Record name (relative, '@' for apex, or FQDN)

{
  "description": "Record name (relative, '@' for apex, or FQDN)",
  "examples": [
    "www"
  ],
  "maxLength": 253,
  "type": "string"
}

type · path · required

Record type, e.g. A, AAAA, CNAME, MX, TXT, NS, CAA, SRV

{
  "description": "Record type, e.g. A, AAAA, CNAME, MX, TXT, NS, CAA, SRV",
  "examples": [
    "A"
  ],
  "pattern": "^[A-Za-z]+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Request body

application/json · required

Required fields: records

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/RecordUpsertBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "records": {
      "description": "Record contents for this name+type",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": [
        "array",
        "null"
      ]
    },
    "ttl": {
      "description": "Time-to-live in seconds (default 3600)",
      "format": "int64",
      "maximum": 604800,
      "minimum": 60,
      "type": "integer"
    }
  },
  "required": [
    "records"
  ],
  "type": "object"
}

Responses

200 · application/json

OK

Required fields: name, type, ttl, records, read_only

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/RecordBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "name": {
      "description": "Record name (FQDN)",
      "type": "string"
    },
    "read_only": {
      "description": "True for platform-managed sets (SOA, apex NS) that cannot be edited",
      "type": "boolean"
    },
    "records": {
      "description": "Record contents",
      "items": {
        "type": "string"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "ttl": {
      "description": "Time-to-live in seconds",
      "format": "int64",
      "type": "integer"
    },
    "type": {
      "description": "Record type",
      "type": "string"
    }
  },
  "required": [
    "name",
    "type",
    "ttl",
    "records",
    "read_only"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
PUT /platform/v1/domains/{domain}/nameserversSet nameservers

Replaces the domain's nameservers at the registry. Scoped to the caller tenant.

Parameters

domain · path · required

The managed domain

{
  "description": "The managed domain",
  "examples": [
    "example.eu"
  ],
  "maxLength": 253,
  "minLength": 3,
  "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+$",
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Request body

application/json · required

Required fields: nameservers

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/SetNameserversInputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "nameservers": {
      "description": "Delegation nameservers",
      "items": {
        "additionalProperties": false,
        "properties": {
          "host": {
            "description": "Nameserver hostname",
            "type": "string"
          },
          "ipv4": {
            "description": "Optional IPv4 glue",
            "type": "string"
          },
          "ipv6": {
            "description": "Optional IPv6 glue",
            "type": "string"
          }
        },
        "required": [
          "host"
        ],
        "type": "object"
      },
      "maxItems": 13,
      "minItems": 1,
      "type": [
        "array",
        "null"
      ]
    }
  },
  "required": [
    "nameservers"
  ],
  "type": "object"
}

Responses

204

No Content

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/object-storageObject storage availability and service limits

Parameters

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: enabled, endpoint, region, limits

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/Catalog.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    },
    "endpoint": {
      "type": "string"
    },
    "limits": {
      "additionalProperties": false,
      "properties": {
        "max_bucket_bytes": {
          "format": "int64",
          "type": "integer"
        },
        "max_buckets": {
          "format": "int64",
          "type": "integer"
        },
        "max_credentials_per_bucket": {
          "format": "int64",
          "type": "integer"
        },
        "max_total_bytes": {
          "format": "int64",
          "type": "integer"
        }
      },
      "required": [
        "max_buckets",
        "max_credentials_per_bucket",
        "max_bucket_bytes",
        "max_total_bytes"
      ],
      "type": "object"
    },
    "region": {
      "type": "string"
    }
  },
  "required": [
    "enabled",
    "endpoint",
    "region",
    "limits"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/object-storage/bucketsList organization buckets

Parameters

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: buckets

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ObjectStorageBucketsOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "buckets": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "$schema": {
            "description": "A URL to the JSON Schema for this object.",
            "examples": [
              "https://example.com/schemas/Bucket.json"
            ],
            "format": "uri",
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "s3_name": {
            "type": "string"
          },
          "state": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "s3_name",
          "state",
          "created_at"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    }
  },
  "required": [
    "buckets"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
POST /platform/v1/object-storage/bucketsCreate organization bucket

Parameters

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Request body

application/json · required

Required fields: name

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ObjectStorageCreateBucketInputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "name": {
      "maxLength": 63,
      "minLength": 2,
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "type": "object"
}

Responses

201 · application/json

Created

Required fields: id, name, s3_name, state, created_at

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/Bucket.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "created_at": {
      "format": "date-time",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "s3_name": {
      "type": "string"
    },
    "state": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "s3_name",
    "state",
    "created_at"
  ],
  "type": "object"
}

202

Bucket is persisted and provisioning continues

400 · application/problem+json

Bad Request

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

401 · application/problem+json

Unauthorized

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

403 · application/problem+json

Forbidden

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

409 · application/problem+json

Conflict

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

422 · application/problem+json

Unprocessable Entity

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

500 · application/problem+json

Internal Server Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

503 · application/problem+json

Service Unavailable

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
DELETE /platform/v1/object-storage/buckets/{id}Delete empty organization bucket

Parameters

id · path · required

{
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

202

Deletion is persisted and will be retried

204

No Content

401 · application/problem+json

Unauthorized

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

403 · application/problem+json

Forbidden

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

404 · application/problem+json

Not Found

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

409 · application/problem+json

Conflict

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

422 · application/problem+json

Unprocessable Entity

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

500 · application/problem+json

Internal Server Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

503 · application/problem+json

Service Unavailable

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
GET /platform/v1/object-storage/buckets/{id}/credentialsList bucket credentials

Parameters

id · path · required

{
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

200 · application/json

OK

Required fields: credentials

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ObjectStorageCredentialsOutputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "credentials": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "access_key_id": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "write_access": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "write_access",
          "state",
          "created_at"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    }
  },
  "required": [
    "credentials"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
POST /platform/v1/object-storage/buckets/{id}/credentialsCreate bucket credential; secret returned once

Parameters

id · path · required

{
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Request body

application/json · required

Required fields: name, write_access

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ObjectStorageCreateCredentialInputBody.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "name": {
      "maxLength": 63,
      "minLength": 2,
      "type": "string"
    },
    "write_access": {
      "type": "boolean"
    }
  },
  "required": [
    "name",
    "write_access"
  ],
  "type": "object"
}

Responses

201 · application/json

Created

Required fields: credential, secret_access_key

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/CreatedCredential.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "credential": {
      "additionalProperties": false,
      "properties": {
        "access_key_id": {
          "type": "string"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "write_access": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "name",
        "write_access",
        "state",
        "created_at"
      ],
      "type": "object"
    },
    "secret_access_key": {
      "type": "string"
    }
  },
  "required": [
    "credential",
    "secret_access_key"
  ],
  "type": "object"
}

default · application/problem+json

Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}
DELETE /platform/v1/object-storage/buckets/{id}/credentials/{credential_id}Revoke bucket credential

Parameters

id · path · required

{
  "type": "string"
}

credential_id · path · required

{
  "type": "string"
}

DPoP · header · required

Fresh ES256 DPoP proof bound to this method, canonical public URL and access token

{
  "type": "string"
}

Responses

202

Revocation is pending gateway confirmation

204

No Content

401 · application/problem+json

Unauthorized

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

403 · application/problem+json

Forbidden

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

404 · application/problem+json

Not Found

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

422 · application/problem+json

Unprocessable Entity

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

500 · application/problem+json

Internal Server Error

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

503 · application/problem+json

Service Unavailable

{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}