-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenapi-spec.json
More file actions
1 lines (1 loc) · 272 KB
/
Copy pathopenapi-spec.json
File metadata and controls
1 lines (1 loc) · 272 KB
1
{"openapi":"3.1.0","info":{"title":"Darkstone Cloud API","description":"REST API for the Darkstone Cloud platform: container compute, virtual machines,\nencrypted volumes, S3-compatible object storage, the vector database, AI inference,\nthe DDoS-protected Cloud Gateway, billing and project management.\n\n<a href=\"/oauth2/authorization/google\" style=\"display:inline-block;background:#4285F4;color:#fff;padding:10px 20px;border-radius:6px;text-decoration:none;font-weight:600;font-family:Arial,sans-serif;margin:8px 0;\">🔐 Sign in with Google</a>\n\nAfter a successful login the session cookie is automatically attached to every Swagger\nrequest (same-origin). For non-browser clients, set an API key via the **Authorize** button\nin the top right (header `X-API-Key`, format `ds_…`).\n","contact":{"name":"Darkstone Entertainment","email":"support@darkstone-entertainment.de"},"license":{"name":"Proprietary"},"version":"1.0.0"},"servers":[{"url":"https://api.darkstone.de","description":"Generated server url"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"Contracts (project)","description":"Per-project PRODUCT contract acceptance + revoke"},{"name":"Cloud Compute — Deployments","description":"Deployments, instances, rollouts and zone scaling of a compute application."},{"name":"Contracts (me)","description":"Account-level GENERAL contract acceptance"},{"name":"Regions (public)","description":"Bookable cloud regions for the region picker"},{"name":"Cloud Compute — DNS","description":"Namensaufloesung der Compute-Workloads je Projekt."},{"name":"Tenant Networks","description":"Self-service virtual networks with their own VXLAN VNI and IPAM. Feature-flag-gated (cloud.networks.enabled)."},{"name":"AI Base Models","description":"Cluster-wide base models (read-only for customers)."},{"name":"Cloud Compute — Zones","description":"Schedulable compute zones (platform regions)."},{"name":"Credentials","description":"Credentials vault: API tokens, SSH keys, passwords and encryption keys with expiry dates."},{"name":"Stats","description":"Resource counters for skeleton sizing"},{"name":"Volume Capacity","description":"Per-region availability for the volume order dialog"},{"name":"Cloud Gateways","description":"Host-independent public endpoints for cloud resources. Routes bind TCP+UDP ports to specific resources (volume, bucket, collection, ...)."},{"name":"Auth (WebAuthn)","description":"Passkey registration + MFA login ceremony"},{"name":"Account","description":"Manage your own account"},{"name":"VM Metrics","description":"CPU/RAM/network/disk history per VM."},{"name":"Project Setup","description":"Billing address + payment-method verification"},{"name":"Notifications","description":"Notification recipients per category"},{"name":"Cloud Volumes — File Browser","description":"Web file browser for a Cloud Volume. No gateway needed; the forwarding layer reaches the volume's file service internally."},{"name":"Blog Comments","description":"Authenticated comment + reaction actions on blog posts"},{"name":"Cloud Compute — Sizes","description":"Selectable CPU classes and resource steps."},{"name":"Cloud Volumes","description":"Encrypted block volumes, with optional SFTP access through the gateway."},{"name":"Quickdeploy","description":"GitHub Quickdeploy marketing entry point"},{"name":"Volume Backups","description":"Incremental backups per volume (self-service)."},{"name":"Observatory","description":"Monitoring & observability for a project (telemetry, logs, error tracking, dashboards, alerting,\non-call). All operations below are reverse-proxied by cloud-rest to the standalone Observatory\nservice; the platform injects the project + user identity, so callers never pass a project in the\nbody (the one exception is the legacy `?project=` query on `/v1/logs|spans|metrics`, see those ops).\n\n## Two credentials — do not confuse them\n**1. Platform API key (`ds_…`)** — authenticates the *management/read* API (everything on this\npage). Send it as `X-API-Key: ds_…` or `Authorization: Bearer ds_…` (use the **Authorize** button\nabove), or call as a logged-in user with the session cookie. An API-key principal is a machine\nprincipal: the proxy tags it `X-Observatory-Principal-Type: api-key`, so observatory exempts it\nfrom the per-seat licence gate that would otherwise 403 the licensed reads\n(logs/spans/metrics/query, dashboards, datasources, alert-rules, source-types).\n\n**2. Per-project OTLP ingest token (also `ds_…`)** — authenticates *telemetry ingest ONLY* and is\na different secret, minted per source via `POST …/observatory/v1/ingest-tokens` (or\n`…/v1/log-sources`). It is NOT a platform API key and is not used on any endpoint on this page.\n\n## Sending telemetry (OTLP ingest) is NOT proxied\nIngest does not go through cloud-rest. Point your OpenTelemetry Collector / SDK exporter straight\nat the collector — `telemetry.darkstone.de` (cluster-internal), OTLP/HTTP on `:4318`\n(`/v1/traces|logs|metrics`) and OTLP/gRPC on `:4317`, TLS terminated at the ingress on `:443`.\nAuthenticate each export with the ingest token in the `X-Observatory-Ingest-Key` header (or\n`Authorization: Bearer`). gzip (`Content-Encoding: gzip`) and protobuf (`application/x-protobuf`,\nthe default) are supported. Set OTel `service.name` (→ the service key you see under `/v1/services`)\nand `service.instance.id` (→ the instance under `…/instances`). Fetch the live endpoint + header\nname programmatically from `GET …/v1/ingest-config`.\n\n## Onboarding\nHave a project → `POST …/v1/ingest-tokens` (mint a token) → configure your exporter to\n`telemetry.darkstone.de` with `X-Observatory-Ingest-Key` → data appears under `/v1/services` and\n`/v1/logs` → build dashboards (`/v1/dashboards`), alert rules (`/v1/alert-rules`) and on-call\n(`/v1/oncall`).\n"},{"name":"Stripe Webhook","description":"Stripe event reception"},{"name":"Public Campaigns","description":"Anonymous lookups for the cookie banner + landing page"},{"name":"Cloud Compute — Applications","description":"Container-PaaS applications and their environments, per project."},{"name":"VM Backups","description":"Incremental backups of the VM boot disk (self-service)."},{"name":"Looking Glass","description":"Public network latency diagnostics"},{"name":"Invoices","description":"Invoices, PDF export"},{"name":"Me Payment Setup","description":"Project-less card setup for provisioning"},{"name":"Billing Config","description":"Stripe publishable key for the frontend init"},{"name":"Cloud Compute — Credentials","description":"Project credentials selectable for image-source authentication."},{"name":"Cloud Gateways v2","description":"Host-independent public endpoints. v2 adds gateway tiers (shared/dedicated), free port/port-range selection on dedicated gateways, PROXY protocol v2 and protocol-less routes (always TCP+UDP)."},{"name":"Auth","description":"Login & current user"},{"name":"API-Key Project Discovery","description":"Resolve the project a projekt-scoped API key belongs to"},{"name":"API Keys","description":"Manage the API keys of a project"},{"name":"Billing","description":"Billing, limits, prepaid"},{"name":"Cloud Compute — Updates","description":"Environment-to-environment promotion (pull-request analogue) of a compute application."},{"name":"Onboarding","description":"Profile setup + campaign affiliate tracking"},{"name":"Public Blog","description":"Anonymous blog reading API (list, single post, comments, RSS)"},{"name":"Contracts (public)","description":"Published legal contracts + subprocessors"},{"name":"Pricing","description":"Current price catalog of all cloud products (gross, EUR)."},{"name":"VM Capacity","description":"Per-region availability for the VM order dialog"},{"name":"i18n","description":"Public translation catalogs"},{"name":"Cloud Compute — Deployment Index","description":"Flat, cross-application list of a project's deployments (Cloud Gateway route-target picker)."},{"name":"Artificial Intelligence","description":"AIs deployed per project: text and image classifiers with embedded training data."},{"name":"Roles","description":"Manage roles & permissions"},{"name":"Auth (Standard)","description":"Email+password signup/login, email verification, password reset"},{"name":"Members","description":"Members of a project"},{"name":"Public","description":"Public, anonymous endpoints"},{"name":"Cloud Projects","description":"Manage cloud projects"},{"name":"Invitations","description":"Project invitations (shown in the UI as account notifications)"},{"name":"Virtual Machines","description":"KubeVirt-based VMs with a Cloud Volume boot disk."},{"name":"Me – Limits","description":"Own resource limits + current usage."}],"paths":{"/api/v2/projects/{projectUuid}/cloudgates/{gatewayUuid}":{"get":{"tags":["Cloud Gateways v2"],"operationId":"get","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayDtoV2"}}}}}},"put":{"tags":["Cloud Gateways v2"],"operationId":"rename","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameGatewayRequestV2"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayDtoV2"}}}}}},"delete":{"tags":["Cloud Gateways v2"],"operationId":"delete","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v2/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes/{routeUuid}":{"put":{"tags":["Cloud Gateways v2"],"operationId":"updateRoute","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRouteRequestV2"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDtoV2"}}}}}},"delete":{"tags":["Cloud Gateways v2"],"operationId":"deleteRoute","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v2/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes/{routeUuid}/firewall":{"put":{"tags":["Cloud Gateways v2"],"summary":"Set or clear the per-route Edge-Firewall (country/IP/ASN + boolean rule tree). Empty body clears it.","operationId":"updateFirewall","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirewallConfig"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDtoV2"}}}}}}},"/api/v2/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes/{routeUuid}/certificate":{"put":{"tags":["Cloud Gateways v2"],"summary":"Upload/replace your own TLS certificate (CUSTOM mode, no auto-renewal)","operationId":"uploadCertificate","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"cert":{"type":"string","format":"binary"},"key":{"type":"string","format":"binary"}},"required":["cert","key"]}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDtoV2"}}}}}}},"/api/v1/projects/{projectUuid}":{"get":{"tags":["Cloud Projects"],"summary":"Project details","operationId":"get_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CloudProject"}}}}}},"put":{"tags":["Cloud Projects"],"summary":"Rename a project","operationId":"update","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CloudProject"}}}}}},"delete":{"tags":["Cloud Projects"],"summary":"Delete a project (owner only, with name confirmation)","operationId":"delete_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"confirmName","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/users/{userUuid}/permissions":{"put":{"tags":["Cloud Volumes"],"operationId":"updateUserPermissions","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeUserDto"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/users/{userUuid}/password":{"put":{"tags":["Cloud Volumes"],"operationId":"setUserPassword","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeUserDto"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/users/{userUuid}/enabled":{"put":{"tags":["Cloud Volumes"],"operationId":"setUserEnabled","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnabledRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeUserDto"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/users/{userUuid}/credential":{"put":{"tags":["Cloud Volumes"],"operationId":"setUserCredential","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeUserDto"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/replication":{"put":{"tags":["Cloud Volumes"],"summary":"Update the replication locations","operationId":"updateReplication","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplicationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeDto"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/backups/schedule":{"get":{"tags":["Volume Backups"],"summary":"Read the volume backup automation (interval in hours, 0 = off)","operationId":"getSchedule","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}},"put":{"tags":["Volume Backups"],"summary":"Set the backup automation (customer-controlled; 0 = off). Each automatic backup is charged the 3% creation fee.","operationId":"setSchedule","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/backups/plan":{"get":{"tags":["Volume Backups"],"summary":"Backup-Plan lesen (Voll-/Teil-/Inkrementell-Intervalle + max. Vollbackups)","operationId":"getPlan","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeBackupPlanDto"}}}}}},"put":{"tags":["Volume Backups"],"summary":"Backup-Plan setzen. Intervalle muessen streng absteigend sein (Voll > Teil > Inkrementell). Jedes automatische Backup kostet die 3%-Erstellungsgebuehr.","operationId":"setPlan","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolumeBackupPlanDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeBackupPlanDto"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/anonymous-access":{"put":{"tags":["Cloud Volumes"],"operationId":"updateAnonymous","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnonymousAccessRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeDto"}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/resize":{"put":{"tags":["Virtual Machines"],"summary":"Resize a VM (vCPU class/count + RAM)","operationId":"resize","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResizeRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/data-volumes":{"put":{"tags":["Virtual Machines"],"summary":"Update mounted data volumes — live hotplug while running, else applied on next boot","operationId":"updateDataVolumes","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDataVolumesRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/boot-replication":{"put":{"tags":["Virtual Machines"],"summary":"Update the replication sites of the boot disk","operationId":"updateBootReplication","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBootReplicationRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/backups/schedule":{"get":{"tags":["VM Backups"],"summary":"Read the VM boot-disk backup automation (interval in hours, 0 = off)","operationId":"getSchedule_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}},"put":{"tags":["VM Backups"],"summary":"Set the VM boot-disk backup automation (customer-controlled; 0 = off, 3% per automatic backup)","operationId":"setSchedule_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleRequestDto"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/backups/plan":{"get":{"tags":["VM Backups"],"summary":"Backup-Plan der Boot-Disk lesen (Voll-/Teil-/Inkrementell-Intervalle + max. Vollbackups)","operationId":"getPlan_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BackupPlanSpec"}}}}}},"put":{"tags":["VM Backups"],"summary":"Backup-Plan der Boot-Disk setzen. Intervalle muessen streng absteigend sein (Voll > Teil > Inkrementell). Jedes automatische Backup kostet die 3%-Erstellungsgebuehr.","operationId":"setPlan_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackupPlanSpec"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BackupPlanSpec"}}}}}}},"/api/v1/projects/{projectUuid}/setup/billing":{"put":{"tags":["Project Setup"],"summary":"Save the billing address + customer type on the project","operationId":"saveBilling","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSetupRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SetupStatusDto"}}}}}}},"/api/v1/projects/{projectUuid}/roles/{roleUuid}":{"put":{"tags":["Roles"],"summary":"Rename a role","operationId":"rename_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"roleUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleRenameRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Role"}}}}}},"delete":{"tags":["Roles"],"summary":"Delete a role","operationId":"delete_2","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"roleUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/roles/{roleUuid}/permissions":{"put":{"tags":["Roles"],"summary":"Set the permissions of a role","operationId":"updatePermissions","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"roleUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolePermissionsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Role"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/retention":{"get":{"tags":["Observatory"],"summary":"Get log retention","description":"Observatory gate: `WATCH_VIEW`. Response `ProjectRetentionDto`: `{preset, overridden, defaultPreset}`. Presets: `HOUR|DAY|WEEK|MONTH|QUARTER`.","operationId":"retention","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"put":{"tags":["Observatory"],"summary":"Set a retention override","description":"Observatory gate: `WATCH_MANAGE`. Invalid preset → 400. Response `ProjectRetentionDto`.","operationId":"setRetention","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJwcmVzZXQiOiJXRUVLIn0="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"delete":{"tags":["Observatory"],"summary":"Reset retention to default","description":"Observatory gate: `WATCH_MANAGE`. Response `ProjectRetentionDto`.","operationId":"resetRetention","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/oncall/schedules":{"get":{"tags":["Observatory"],"summary":"List on-call schedules","description":"Per-member rota. Observatory gate: `WATCH_ALERT_VIEW`. Response `OnCallScheduleDto[]`: `{id, userEmail, userUuid, displayName, timezone, windows[{dayOfWeek,startTime,endTime}], exceptions[{type,from,to,recurrence}], updatedAt}`.","operationId":"oncallSchedules","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"put":{"tags":["Observatory"],"summary":"Create or replace a member's on-call schedule","description":"Upsert by member email. Observatory gate: `WATCH_ONCALL_MANAGE`. Response `OnCallScheduleDto`.","operationId":"oncallUpsert","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJ1c2VyRW1haWwiOiJkZXZAZXhhbXBsZS5jb20iLCJ0aW1lem9uZSI6IkV1cm9wZS9CZXJsaW4iLCJ3aW5kb3dzIjpbeyJkYXlPZldlZWsiOjEsInN0YXJ0VGltZSI6IjA5OjAwIiwiZW5kVGltZSI6IjE3OjAwIn1dLCJleGNlcHRpb25zIjpbXX0="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/datasources/{datasourceId}":{"get":{"tags":["Observatory"],"summary":"Get a datasource","description":"Observatory gate: `WATCH_VIEW` + seat licence. Response `DatasourceDto`.","operationId":"datasource","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"datasourceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"put":{"tags":["Observatory"],"summary":"Update a datasource","description":"Observatory gate: `WATCH_MANAGE` + seat licence. Body = `DatasourceUpsertRequest`. Response `DatasourceDto`.","operationId":"updateDatasource","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"datasourceId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJuYW1lIjoicHJvbWV0aGV1cyIsInR5cGUiOiJwcm9tZXRoZXVzIiwiY29uZmlnIjp7InVybCI6Imh0dHA6Ly/igKYifSwic2VjcmV0UmVmIjpudWxsfQ=="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"delete":{"tags":["Observatory"],"summary":"Delete a datasource","description":"Observatory gate: `WATCH_MANAGE` + seat licence. 204 No Content.","operationId":"deleteDatasource","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"datasourceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/dashboards/{dashboardId}":{"get":{"tags":["Observatory"],"summary":"Get a dashboard","description":"Observatory gate: `WATCH_VIEW` + seat licence. Response `DashboardDto` (with `panels[]`).","operationId":"dashboard","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"dashboardId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"put":{"tags":["Observatory"],"summary":"Update a dashboard","description":"Observatory gate: `WATCH_MANAGE` + seat licence. Body = `{title, panels[]}`. Response `DashboardDto`.","operationId":"updateDashboard","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"dashboardId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJ0aXRsZSI6Ik92ZXJ2aWV3IiwicGFuZWxzIjpbXX0="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"delete":{"tags":["Observatory"],"summary":"Delete a dashboard","description":"Observatory gate: `WATCH_MANAGE` + seat licence. 204 No Content.","operationId":"deleteDashboard","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"dashboardId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/alert-rules/{ruleId}":{"get":{"tags":["Observatory"],"summary":"Get an alert rule","description":"Observatory gate: `WATCH_ALERT_VIEW` + seat licence. Response `AlertRuleDto`.","operationId":"alertRule","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"ruleId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"put":{"tags":["Observatory"],"summary":"Update an alert rule","description":"Observatory gate: `WATCH_ALERT_MANAGE` + seat licence. Body = `AlertRuleUpsertRequest` (same shape as create). Response `AlertRuleDto`.","operationId":"updateAlertRule","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"ruleId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJuYW1lIjoiSGlnaCBlcnJvciByYXRlIiwiZW5hYmxlZCI6dHJ1ZSwiZGF0YXNvdXJjZUlkIjoiPHV1aWQ+IiwicXVlcnkiOnt9LCJjb21wYXJhdG9yIjoiPiIsInRocmVzaG9sZCI6MjAsIndpbmRvd01pbnV0ZXMiOjUsImZvck1pbnV0ZXMiOjUsInNldmVyaXR5IjoiY3JpdGljYWwiLCJub3RpZnlSb2xlVXVpZHMiOltdfQ=="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"delete":{"tags":["Observatory"],"summary":"Delete an alert rule","description":"Observatory gate: `WATCH_ALERT_MANAGE` + seat licence. 204 No Content.","operationId":"deleteAlertRule","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"ruleId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/notifications/{category}":{"get":{"tags":["Notifications"],"summary":"Configuration of a single category","operationId":"get_2","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"category","in":"path","required":true,"schema":{"type":"string","enum":["SECURITY","BILLING"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NotificationConfig"}}}}}},"put":{"tags":["Notifications"],"summary":"Replace the recipients of a category","operationId":"setTargets","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"category","in":"path","required":true,"schema":{"type":"string","enum":["SECURITY","BILLING"]}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NotificationConfig"}}}}}}},"/api/v1/projects/{projectUuid}/networks/{networkUuid}":{"get":{"tags":["Tenant Networks"],"summary":"Network details","operationId":"get_3","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"networkUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TenantNetworkDto"}}}}}},"put":{"tags":["Tenant Networks"],"summary":"Edit a network","description":"Updates the mutable metadata (name / DNS slug). The VNI and CIDR are immutable. A rename needs no cluster mutation and no member restart — the NetworkAttachmentDefinition is keyed on the network uuid.","operationId":"update_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"networkUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTenantNetworkRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TenantNetworkDto"}}}}}},"delete":{"tags":["Tenant Networks"],"summary":"Delete a network","operationId":"delete_3","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"networkUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/transfer-lock":{"put":{"tags":["Domains"],"summary":"Toggle registrar transfer lock","operationId":"transferLock","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LockRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDetailsDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/privacy":{"put":{"tags":["Domains"],"summary":"Toggle WHOIS privacy","operationId":"privacy","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDetailsDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/nameservers":{"put":{"tags":["Domains"],"summary":"Set nameservers (custom list, or delegate to our cloud-dns)","operationId":"setNameservers","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameserverRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDetailsDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/dns":{"get":{"tags":["Domains"],"summary":"List DNS records","operationId":"getRecords","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}}}}}}},"put":{"tags":["Domains"],"summary":"Replace all DNS records","operationId":"setRecords","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/auto-renew":{"put":{"tags":["Domains"],"summary":"Toggle auto-renew","operationId":"autoRenew","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDetailsDto"}}}}}}},"/api/v1/projects/{projectUuid}/credentials/{credentialUuid}":{"put":{"tags":["Credentials"],"summary":"Update a credential (name, notes, username, expiry)","operationId":"update_2","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"credentialUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Credential"}}}}}},"delete":{"tags":["Credentials"],"summary":"Delete a credential","operationId":"delete_4","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"credentialUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/credentials/{credentialUuid}/secret":{"put":{"tags":["Credentials"],"summary":"Rotate the secret","operationId":"rotateSecret","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"credentialUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateSecretRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Credential"}}}}}}},"/api/v1/projects/{projectUuid}/compute/dns":{"get":{"tags":["Cloud Compute — DNS"],"summary":"Read the project's DNS resolver setting","operationId":"get_4","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDnsSettingsDto"}}}}}},"put":{"tags":["Cloud Compute — DNS"],"summary":"Choose the project's DNS resolvers","operationId":"set","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetComputeDnsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDnsSettingsDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/volumes":{"put":{"tags":["Cloud Compute — Deployments"],"summary":"Set a deployment's cloud volume mounts","operationId":"setVolumeMounts","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetVolumeMountsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/load-balancer":{"put":{"tags":["Cloud Compute — Deployments"],"summary":"Set a deployment's load-balancing mode","operationId":"setLoadBalancerMode","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetLoadBalancerModeRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/health-check":{"put":{"tags":["Cloud Compute — Deployments"],"summary":"Set a deployment's container health check","operationId":"setHealthCheck","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetHealthCheckRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/external-route":{"put":{"tags":["Cloud Compute — Deployments"],"summary":"Set or clear a deployment's external Cloud Gateway route","operationId":"setExternalRoute","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetExternalRouteRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/environment":{"put":{"tags":["Cloud Compute — Deployments"],"summary":"Set a deployment's environment variables","operationId":"setEnvironmentVariables","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetEnvironmentVariablesRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/dns":{"put":{"tags":["Cloud Compute — Deployments"],"summary":"Set a deployment's DNS resolvers","operationId":"setDeploymentDns","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDeploymentDnsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/container-port":{"put":{"tags":["Cloud Compute — Deployments"],"summary":"Set the container port a deployment's app listens on","operationId":"setContainerPort","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetContainerPortRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/autoscaling":{"put":{"tags":["Cloud Compute — Deployments"],"summary":"Enable or disable autoscaling for a deployment","operationId":"setAutoscaling","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetAutoscalingRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/cloudgates/{gatewayUuid}":{"get":{"tags":["Cloud Gateways"],"operationId":"get_5","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayDto"}}}}}},"put":{"tags":["Cloud Gateways"],"operationId":"rename_2","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameGatewayRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayDto"}}}}}},"delete":{"tags":["Cloud Gateways"],"operationId":"delete_5","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes/{routeUuid}":{"put":{"tags":["Cloud Gateways"],"operationId":"updateRoute_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRouteRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDto"}}}}}},"delete":{"tags":["Cloud Gateways"],"operationId":"deleteRoute_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes/{routeUuid}/certificate":{"put":{"tags":["Cloud Gateways"],"summary":"Upload/replace your own TLS certificate (CUSTOM mode, no auto-renewal)","operationId":"uploadCertificate_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"cert":{"type":"string","format":"binary"},"key":{"type":"string","format":"binary"}},"required":["cert","key"]}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDto"}}}}}}},"/api/v1/projects/{projectUuid}/billing/limits/{serviceType}":{"put":{"tags":["Billing"],"summary":"Set the limit for a service","operationId":"setLimit","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"serviceType","in":"path","required":true,"schema":{"type":"string","enum":["AI_INVOKE","AI_TRAINING_STORAGE","VECTORDB_STORAGE","VECTORDB_SEARCH","VECTORDB_WRITE","OBJECT_STORAGE_STORAGE","VOLUMES_STORAGE","VOLUMES_TRAFFIC_OUT","VOLUMES_MIRROR_REPLICA","VOLUMES_BACKUP_STORAGE","VOLUMES_BACKUP_OPERATION","CLOUDGATE_BASE","CLOUDGATE_BASE_DEDICATED","CLOUDGATE_TRAFFIC_OUT","CLOUDGATE_TRAFFIC_IN","CLOUDGATE_ROUTE","COMPUTE_VCPU_LC1","COMPUTE_VCPU_LC2","COMPUTE_VCPU_LC3","COMPUTE_VCPU_MC1","COMPUTE_VCPU_MC2","COMPUTE_VCPU_MC3","COMPUTE_VCPU_HC1","COMPUTE_RAM","COMPUTE_IMAGE_STORAGE","VM_VCPU_LC1","VM_VCPU_LC2","VM_VCPU_LC3","VM_VCPU_MC1","VM_VCPU_MC2","VM_VCPU_MC3","VM_VCPU_HC1","VM_RAM","VM_BOOT_STORAGE","VM_BOOT_MIRROR_REPLICA","REGISTRY_STORAGE","DOMAIN_REGISTER","DOMAIN_RENEW","DOMAIN_TRANSFER","DOMAIN_RESTORE","WATCH_SEAT","WATCH_ALERT","TENANT_NETWORK_BASE"]}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BillingLimit"}}}}}}},"/api/v1/projects/{projectUuid}/billing/auto-recharge":{"get":{"tags":["Billing"],"summary":"Auto-recharge configuration of the project","operationId":"getAutoRecharge","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AutoRechargeConfig"}}}}}},"put":{"tags":["Billing"],"summary":"Configure auto-recharge. Requires a saved payment method (created on the first top-up).","operationId":"setAutoRecharge","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRechargeRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AutoRechargeConfig"}}}}}}},"/api/v1/projects/{projectUuid}/billing-profile":{"get":{"tags":["Cloud Projects"],"summary":"Billing profile of the project (company, VAT ID, address, contact)","operationId":"getBillingProfile","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BillingProfileDto"}}}}}},"put":{"tags":["Cloud Projects"],"summary":"Update the billing profile of the project (company/VAT ID/address/contact)","operationId":"updateBillingProfile","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingProfileRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CloudProject"}}}}}}},"/api/v1/projects/{projectUuid}/api-keys/{apiKeyUuid}":{"put":{"tags":["API Keys"],"summary":"Rename an API key","operationId":"rename_3","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"apiKeyUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyRenameRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiKeyDto"}}}}}},"delete":{"tags":["API Keys"],"summary":"Revoke an API key","operationId":"revoke","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"apiKeyUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/api-keys/{apiKeyUuid}/permissions":{"put":{"tags":["API Keys"],"summary":"Change the permissions of an API key","operationId":"updatePermissions_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"apiKeyUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyPermissionsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiKeyDto"}}}}}}},"/api/v1/projects/{projectUuid}/ai/{aiUuid}":{"put":{"tags":["Artificial Intelligence"],"summary":"Rename an AI","operationId":"rename_4","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DeployedAi"}}}}}},"delete":{"tags":["Artificial Intelligence"],"summary":"Delete an AI including its training data","operationId":"delete_6","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/ai/{aiUuid}/training/{entryUuid}":{"put":{"tags":["Artificial Intelligence"],"summary":"Update a training entry","operationId":"updateTraining","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"entryUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TrainingEntry"}}}}}},"delete":{"tags":["Artificial Intelligence"],"summary":"Delete a training entry","operationId":"deleteTraining","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"entryUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/me/onboarding":{"get":{"tags":["Onboarding"],"summary":"Current profile setup and onboarding status","operationId":"status","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OnboardingStatusDto"}}}}},"security":[{"session":[]}]},"put":{"tags":["Onboarding"],"summary":"Save profile data; creates the user on first onboarding","operationId":"save","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OnboardingStatusDto"}}}}},"security":[{"session":[]}]}},"/api/v1/me/legal/accept":{"put":{"tags":["Onboarding"],"summary":"Accept the current legal version (versioned re-accept gate)","operationId":"acceptLegal","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LegalAcceptResultDto"}}}}},"security":[{"session":[]}]}},"/api/v1/blog/comments/{commentUuid}/reactions":{"put":{"tags":["Blog Comments"],"summary":"Toggle one of the 5 fixed emoji reactions on a comment (one reaction per user)","operationId":"toggleReaction","parameters":[{"name":"commentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReactionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReactionToggleResponseDto"}}}}}}},"/api/v1/account":{"put":{"tags":["Account"],"summary":"Edit your own account (display name). The email is fixed at signup (Standard: chosen by you at signup; SSO: the provider identity) and not changeable here.","operationId":"updateAccount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Account"],"summary":"Irreversibly delete your own account (with email confirmation)","operationId":"deleteAccount","parameters":[{"name":"confirmEmail","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/v1/account/profile":{"get":{"tags":["Account"],"summary":"Read your account master data (company name + name). The address is NOT here — it is per project (billing address).","operationId":"profile","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"put":{"tags":["Account"],"summary":"Change your account master data (company name + name). The address is NOT here — it is per project (billing address).","operationId":"updateProfile","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountProfileRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/v1/account/locale":{"put":{"tags":["Account"],"summary":"Save the preferred language (controls the language of system emails)","operationId":"updateLocale","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLocaleRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/v2/projects/{projectUuid}/cloudgates":{"get":{"tags":["Cloud Gateways v2"],"operationId":"list","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GatewayDtoV2"}}}}}}},"post":{"tags":["Cloud Gateways v2"],"operationId":"create","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGatewayRequestV2"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayDtoV2"}}}}}}},"/api/v2/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes":{"get":{"tags":["Cloud Gateways v2"],"operationId":"listRoutes","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RouteDtoV2"}}}}}}},"post":{"tags":["Cloud Gateways v2"],"operationId":"createRoute","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRouteRequestV2"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDtoV2"}}}}}}},"/api/v2/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes/{routeUuid}/certificate/managed":{"post":{"tags":["Cloud Gateways v2"],"summary":"Switch back to a managed Let's Encrypt certificate (with auto-renewal)","operationId":"useManagedCertificate","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDtoV2"}}}}}}},"/api/v1/public/quickdeploy/events":{"post":{"tags":["Quickdeploy"],"summary":"Record a Quickdeploy landing (repo + optional referrer)","operationId":"land","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LandRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EventDto"}}}}}}},"/api/v1/public/looking-glass/check":{"post":{"tags":["Looking Glass"],"summary":"Latency measurement (uplink/downlink/ping) to a public remote IP. 1 measurement per 5s per IP; reloading during the cooldown extends it.","operationId":"check","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookingGlassCheckRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/v1/projects":{"get":{"tags":["Cloud Projects"],"summary":"Projects reachable with the current credentials. Session/OAuth: every project the user is a member of. API key: the single project the key is scoped to — use this to resolve your project UUID, which every other path needs as {projectUuid}.","operationId":"list_1","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CloudProject"}}}}}}},"post":{"tags":["Cloud Projects"],"summary":"Create a new project","operationId":"create_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CloudProject"}}}}}}},"/api/v1/projects/{projectUuid}/volumes":{"get":{"tags":["Cloud Volumes"],"summary":"List the volumes of the project","operationId":"list_2","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VolumeDto"}}}}}}},"post":{"tags":["Cloud Volumes"],"summary":"Create a volume (with mandatory encryption + hidden shadow replica)","operationId":"create_2","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVolumeRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeDto"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/users":{"get":{"tags":["Cloud Volumes"],"operationId":"listUsers","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VolumeUserDto"}}}}}}},"post":{"tags":["Cloud Volumes"],"operationId":"createUser","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeUserDto"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/files/upload":{"post":{"tags":["Cloud Volumes — File Browser"],"summary":"Upload a file (multipart)","operationId":"upload","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}},{"name":"overwrite","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FileEntry"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/files/rename":{"post":{"tags":["Cloud Volumes — File Browser"],"summary":"Rename or move a file/directory","operationId":"rename_5","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"from","in":"query","required":true,"schema":{"type":"string"}},{"name":"to","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FileEntry"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/files/mkdir":{"post":{"tags":["Cloud Volumes — File Browser"],"summary":"Create a directory","operationId":"mkdir","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FileEntry"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/backups":{"get":{"tags":["Volume Backups"],"summary":"List the backups of a volume","operationId":"list_3","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LonghornBackupInfo"}}}}}}},"post":{"tags":["Volume Backups"],"summary":"Create an incremental backup","operationId":"create_3","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBackupRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/backups/{backupName}/restore":{"post":{"tags":["Volume Backups"],"summary":"Restore a backup into a NEW volume (includes a 3% restore fee)","operationId":"restore","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"backupName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines":{"get":{"tags":["Virtual Machines"],"summary":"List the VMs of the project","operationId":"list_4","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"post":{"tags":["Virtual Machines"],"summary":"Create a VM","operationId":"create_4","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVirtualMachineRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/stop":{"post":{"tags":["Virtual Machines"],"summary":"Stop a VM","operationId":"stop","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/start":{"post":{"tags":["Virtual Machines"],"summary":"Start a VM","operationId":"start","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/reinstall":{"post":{"tags":["Virtual Machines"],"summary":"Reinstall a VM (overwrite the OS image)","operationId":"reinstall","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/backups":{"get":{"tags":["VM Backups"],"summary":"List the VM boot-disk backups","description":"Each backup carries a `region` field: the physical location (data-centre / site code) where the backup resides — the site of the boot disk's Longhorn BackupTarget. Because a Longhorn volume has exactly ONE backup target, the region is identical for every backup regardless of its level (full / partial / incremental); it hangs on the storage location, not the backup step. It is `null` when the location is unknown (unresolvable backup target) — never a guessed value.","operationId":"list_5","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupInfo"}}}}}}},"post":{"tags":["VM Backups"],"summary":"Create an incremental backup of the VM boot disk","operationId":"create_5","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBackupRequestDto"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/backups/{backupName}/restore":{"post":{"tags":["VM Backups"],"summary":"Restore a VM boot backup into a NEW volume (includes a 3% restore fee)","operationId":"restore_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"backupName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/apply-resize":{"post":{"tags":["Virtual Machines"],"summary":"Apply a pending resize by restarting","operationId":"applyResize","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}}},"/api/v1/projects/{projectUuid}/transfer":{"post":{"tags":["Cloud Projects"],"summary":"Transfer ownership (owner only, optional name confirmation)","operationId":"transfer","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/v1/projects/{projectUuid}/roles":{"get":{"tags":["Roles"],"summary":"All roles of the project","operationId":"list_6","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Role"}}}}}}},"post":{"tags":["Roles"],"summary":"Create a role","operationId":"create_6","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Role"}}}}}}},"/api/v1/projects/{projectUuid}/roles/{roleUuid}/assignments/{userUuid}":{"post":{"tags":["Roles"],"summary":"Assign a role to a user","operationId":"assign","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"roleUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}},"delete":{"tags":["Roles"],"summary":"Remove a role from a user","operationId":"unassign","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"roleUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/registry/robots":{"get":{"tags":["Container Registry – Robot Accounts"],"summary":"List the robot accounts of the project (without passwords)","operationId":"list_7","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RobotDto"}}}}}}},"post":{"tags":["Container Registry – Robot Accounts"],"summary":"Create a new robot account — the password is returned only once","operationId":"create_7","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryRobotCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RobotCreatedDto"}}}}}}},"/api/v1/projects/{projectUuid}/registry/robots/{robotUuid}/rotate":{"post":{"tags":["Container Registry – Robot Accounts"],"summary":"Rotate a robot account's password — the new password is returned only once","operationId":"rotate","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"robotUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RobotCreatedDto"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/query":{"post":{"tags":["Observatory"],"summary":"Execute a datasource query","description":"Runs a panel query against a project datasource and returns a normalized result. Observatory gate: `WATCH_VIEW` + seat licence. The project comes from identity, never the body. Response `QueryResult`: `{resultType:'timeseries'|'logs-table'|'stat', series[], rows[], value, note}`.","operationId":"query","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJkYXRhc291cmNlSWQiOiI8dXVpZD4iLCJxdWVyeSI6e30sImZyb20iOiIyMDI2LTA3LTExVDAwOjAwOjAwWiIsInRvIjoiMjAyNi0wNy0xMVQwMTowMDowMFoiLCJpbnRlcnZhbFNlY29uZHMiOjYwfQ=="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/logs/cleanup":{"post":{"tags":["Observatory"],"summary":"Purge old logs","description":"Delete the project's logs older than a preset threshold (always project-scoped; cutoff never later than now). Observatory gate: `WATCH_MANAGE`. Unknown/blank preset → 400. Response `CleanupResultDto`: `{cutoff, accepted, submittedAt}`.","operationId":"cleanupLogs","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJwcmVzZXQiOiJNT05USCJ9"}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/log-sources":{"get":{"tags":["Observatory"],"summary":"List registered log sources","description":"Observatory gate: `WATCH_VIEW`. Response `LogSourceDto[]`: `{id, name, tokenId, tokenPrefix, createdAt, lastIngestAt}`.","operationId":"logSources","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"post":{"tags":["Observatory"],"summary":"Register a log source (mints an ingest token)","description":"Registers a source and mints a dedicated OTLP ingest token, returned ONCE. Observatory gate: `WATCH_MANAGE`. Response `CreatedLogSourceDto`: `{id, name, tokenId, tokenPrefix, token, otlpEndpoint, ingestHeader, createdAt}` — `token` is the secret to put in `X-Observatory-Ingest-Key`.","operationId":"createLogSource","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJuYW1lIjoibXktc2VydmljZSJ9"}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/licenses":{"get":{"tags":["Observatory"],"summary":"List seat licences","description":"Assigned Observatory seats. Observatory gate: `WATCH_VIEW`. Response `LicenseDto[]`: `{id, userEmail, userUuid, displayName, assignedByEmail, assignedAt}`.","operationId":"licenses","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"post":{"tags":["Observatory"],"summary":"Assign a seat licence","description":"Assign a seat to a project member by email. Observatory gate: `WATCH_MANAGE`. Response `LicenseDto`.","operationId":"assignLicense","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJ1c2VyRW1haWwiOiJkZXZAZXhhbXBsZS5jb20iLCJ1c2VyVXVpZCI6Ijx1dWlkPiIsImRpc3BsYXlOYW1lIjoiRGV2In0="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/ingest-tokens":{"get":{"tags":["Observatory"],"summary":"List OTLP ingest tokens","description":"Per-project OTLP ingest tokens (metadata only, never the secret). Observatory gate: `WATCH_VIEW`. Response `IngestTokenDto[]`: `{id, projectId, name, prefix, createdAt, lastUsedAt}`.","operationId":"ingestTokens","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"post":{"tags":["Observatory"],"summary":"Mint an OTLP ingest token","description":"Creates a per-project ingest token — the secret used in `X-Observatory-Ingest-Key` when exporting OTLP to `telemetry.darkstone.de`. Returned ONCE (store it now). Observatory gate: `WATCH_MANAGE`. Response `CreatedIngestTokenDto`: `{id, projectId, name, prefix, token, createdAt}`.","operationId":"createIngestToken","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJuYW1lIjoicHJvZC1jb2xsZWN0b3IifQ=="}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/datasources":{"get":{"tags":["Observatory"],"summary":"List datasources","description":"Observatory gate: `WATCH_VIEW` + seat licence. Response `DatasourceDto[]`: `{id, projectId, name, type, config{}, secretRef}`.","operationId":"datasources","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"post":{"tags":["Observatory"],"summary":"Create a datasource","description":"Observatory gate: `WATCH_MANAGE` + seat licence. Response `DatasourceDto`.","operationId":"createDatasource","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJuYW1lIjoicHJvbWV0aGV1cyIsInR5cGUiOiJwcm9tZXRoZXVzIiwiY29uZmlnIjp7InVybCI6Imh0dHA6Ly/igKYifSwic2VjcmV0UmVmIjpudWxsfQ=="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/dashboards":{"get":{"tags":["Observatory"],"summary":"List dashboards","description":"Observatory gate: `WATCH_VIEW` + seat licence. Response `DashboardDto[]`: `{id, projectId, title, panels[]}`.","operationId":"dashboards","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"post":{"tags":["Observatory"],"summary":"Create a dashboard","description":"Observatory gate: `WATCH_MANAGE` + seat licence. Response `DashboardDto`.","operationId":"createDashboard","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJ0aXRsZSI6Ik92ZXJ2aWV3IiwicGFuZWxzIjpbXX0="}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/alert-rules":{"get":{"tags":["Observatory"],"summary":"List alert rules","description":"Observatory gate: `WATCH_ALERT_VIEW` + seat licence. Response `AlertRuleDto[]`: `{id, name, enabled, datasourceId, query, comparator, threshold, windowMinutes, forMinutes, severity, notifyRoleUuids[], state, lastValue, lastEvaluatedAt, lastFiredAt, createdAt, updatedAt}`.","operationId":"alertRules","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}},"post":{"tags":["Observatory"],"summary":"Create an alert rule","description":"Observatory gate: `WATCH_ALERT_MANAGE` + seat licence. Response `AlertRuleDto`.","operationId":"createAlertRule","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJuYW1lIjoiSGlnaCBlcnJvciByYXRlIiwiZW5hYmxlZCI6dHJ1ZSwiZGF0YXNvdXJjZUlkIjoiPHV1aWQ+IiwicXVlcnkiOnt9LCJjb21wYXJhdG9yIjoiPiIsInRocmVzaG9sZCI6MTAsIndpbmRvd01pbnV0ZXMiOjUsImZvck1pbnV0ZXMiOjUsInNldmVyaXR5IjoiY3JpdGljYWwiLCJub3RpZnlSb2xlVXVpZHMiOlsiPHV1aWQ+Il19"}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/alert-rules/recipient-preview":{"post":{"tags":["Observatory"],"summary":"Preview alert recipients","description":"Resolves which members the given roles would notify. Observatory gate: `WATCH_ALERT_VIEW`.","operationId":"alertRecipientPreview","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"},"example":"eyJyb2xlVXVpZHMiOlsiPHV1aWQ+Il19"}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/networks":{"get":{"tags":["Tenant Networks"],"summary":"List the networks of the project","operationId":"list_8","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TenantNetworkDto"}}}}}}},"post":{"tags":["Tenant Networks"],"summary":"Create a network","operationId":"create_8","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTenantNetworkRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TenantNetworkDto"}}}}}}},"/api/v1/projects/{projectUuid}/networks/{networkUuid}/attachments":{"get":{"tags":["Tenant Networks"],"summary":"List the attached VMs of a network","operationId":"listAttachments","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"networkUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}}}}}},"post":{"tags":["Tenant Networks"],"summary":"Attach a VM to the network (MOVE semantics)","description":"A VM is in AT MOST one network. If the VM already sits in another network it is MOVED (detached from the old one first, then attached to the new one) — afterwards it is in exactly this network. Idempotent when it already sits here. Both the network AND the VM must belong to the path project. KubeVirt only picks up the changed secondary interface on an instance restart — restartRequired=true signals a pending restart.","operationId":"attach","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"networkUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AttachmentDto"}}}}}}},"/api/v1/projects/{projectUuid}/networks/{networkUuid}/attachments/bulk":{"post":{"tags":["Tenant Networks"],"summary":"Attach MULTIPLE resources to the network at once","description":"Adds several resources (VMs and — prepared — compute apps) to one network in a single call. Each member follows the same MOVE semantics and one-network-per-resource rule as the single attach. Per-member failures are isolated (a bad member does not abort the batch) and reported individually. VM members need an instance restart to take effect.","operationId":"attachBulk","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"networkUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkAttachRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BulkAttachmentResultDto"}}}}}}}},"/api/v1/projects/{projectUuid}/leave":{"post":{"tags":["Cloud Projects"],"summary":"Leave a project (remove your own membership, non-owners only)","operationId":"leave","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/v1/projects/{projectUuid}/invitations":{"get":{"tags":["Invitations"],"summary":"Pending/completed invitations of the project (admin)","operationId":"list_9","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvitationDto"}}}}}}},"post":{"tags":["Invitations"],"summary":"Invite someone to the project — the invitee is notified by account email","operationId":"create_9","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains":{"get":{"tags":["Domains"],"summary":"List the project's registered domains","operationId":"list_10","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DomainDto"}}}}}}},"post":{"tags":["Domains"],"summary":"Register a domain (charged after success)","operationId":"register","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/restore":{"post":{"tags":["Domains"],"summary":"Restore a redemption domain (expensive — charged after success)","operationId":"restore_2","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/renew":{"post":{"tags":["Domains"],"summary":"Renew a domain (charged after success)","operationId":"renew","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenewRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains/transfer":{"post":{"tags":["Domains"],"summary":"Transfer-in a domain with auth code (charged after transfer completes)","operationId":"transferIn","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferInRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDto"}}}}}}},"/api/v1/projects/{projectUuid}/credentials":{"get":{"tags":["Credentials"],"summary":"All credentials of the project (paginated)","operationId":"list_11","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseCredential"}}}}}},"post":{"tags":["Credentials"],"summary":"Create a credential","operationId":"create_10","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Credential"}}}}}}},"/api/v1/projects/{projectUuid}/contracts/{id}/revoke":{"post":{"tags":["Contracts (project)"],"summary":"Revoke a product contract — IMMEDIATELY tears down all of the product's services in this project","operationId":"revoke_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RevokeResult"}}}}}}},"/api/v1/projects/{projectUuid}/contracts/{id}/accept":{"post":{"tags":["Contracts (project)"],"summary":"Accept a product contract for this project (unlocks the product; idempotent)","operationId":"accept","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AcceptanceStatus"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications":{"get":{"tags":["Cloud Compute — Applications"],"summary":"List the applications of a project","operationId":"list_12","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComputeApplicationSummaryDto"}}}}}}},"post":{"tags":["Cloud Compute — Applications"],"summary":"Create a new application","operationId":"create_11","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApplicationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeApplicationDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/updates":{"get":{"tags":["Cloud Compute — Updates"],"summary":"List the updates of an application","operationId":"list_13","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComputeUpdateDto"}}}}}}},"post":{"tags":["Cloud Compute — Updates"],"summary":"Create an update between two environments","operationId":"create_12","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeUpdateDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/updates/{updateUuid}/apply":{"post":{"tags":["Cloud Compute — Updates"],"summary":"Apply an update (this is the rollout)","operationId":"apply","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"updateUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeUpdateDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments":{"post":{"tags":["Cloud Compute — Applications"],"summary":"Create an environment","operationId":"createEnvironment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeApplicationDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments/{environmentName}/unlock":{"post":{"tags":["Cloud Compute — Applications"],"summary":"Unlock an environment","operationId":"unlockEnvironment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"environmentName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeApplicationDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments/{environmentName}/switch":{"post":{"tags":["Cloud Compute — Applications"],"summary":"Switch the active environment","operationId":"switchEnvironment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"environmentName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeApplicationDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments/{environmentName}/primary":{"post":{"tags":["Cloud Compute — Applications"],"summary":"Set the application's primary environment","operationId":"setPrimaryEnvironment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"environmentName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeApplicationDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments/{environmentName}/lock":{"post":{"tags":["Cloud Compute — Applications"],"summary":"Lock an environment","operationId":"lockEnvironment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"environmentName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeApplicationDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments/{environmentName}/deployments/oci":{"post":{"tags":["Cloud Compute — Deployments"],"summary":"Create an OCI-backed deployment","operationId":"createOciDeployment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"environmentName","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOciDeploymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments/{environmentName}/deployments/github":{"post":{"tags":["Cloud Compute — Deployments"],"summary":"Create a GitHub-built deployment","operationId":"createGitHubDeployment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"environmentName","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGitHubDeploymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/zones":{"post":{"tags":["Cloud Compute — Deployments"],"summary":"Add a zone to a deployment","operationId":"addZone","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddZoneRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/stop":{"post":{"tags":["Cloud Compute — Deployments"],"summary":"Stop a deployment (scale every zone to zero)","operationId":"stopDeployment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/start":{"post":{"tags":["Cloud Compute — Deployments"],"summary":"Start a stopped deployment","operationId":"startDeployment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/instances/{instanceId}/restart":{"post":{"tags":["Cloud Compute — Deployments"],"summary":"Restart a single instance","operationId":"restartInstance","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"instanceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/instances/{instanceId}/console":{"post":{"tags":["Cloud Compute — Deployments"],"summary":"Send a command to an instance's application console","operationId":"sendConsoleCommand","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"instanceId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendConsoleCommandRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConsoleCommandResultDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/builds":{"get":{"tags":["Cloud Compute — Deployments"],"summary":"List a deployment's builds","operationId":"listBuilds","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BuildStatusDto"}}}}}}},"post":{"tags":["Cloud Compute — Deployments"],"summary":"Manually trigger a build of the deployment's GitHub source","operationId":"rebuild","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BuildStatusDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/builds/{buildId}/cancel":{"post":{"tags":["Cloud Compute — Deployments"],"summary":"Cancel a pending/running build","operationId":"cancelBuild","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"buildId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BuildStatusDto"}}}}}}},"/api/v1/projects/{projectUuid}/cloudgates":{"get":{"tags":["Cloud Gateways"],"operationId":"list_14","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GatewayDto"}}}}}}},"post":{"tags":["Cloud Gateways"],"operationId":"create_13","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGatewayRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayDto"}}}}}}},"/api/v1/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes":{"get":{"tags":["Cloud Gateways"],"operationId":"listRoutes_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RouteDto"}}}}}}},"post":{"tags":["Cloud Gateways"],"operationId":"createRoute_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRouteRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDto"}}}}}}},"/api/v1/projects/{projectUuid}/cloudgates/{gatewayUuid}/routes/{routeUuid}/certificate/managed":{"post":{"tags":["Cloud Gateways"],"summary":"Switch back to a managed Let's Encrypt certificate (with auto-renewal)","operationId":"useManagedCertificate_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"routeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RouteDto"}}}}}}},"/api/v1/projects/{projectUuid}/billing/prepaid/topup":{"post":{"tags":["Billing"],"summary":"[DEPRECATED] Legacy Stripe-hosted checkout (redirect). The frontend uses /prepaid/payment-intent for embedded Elements.","operationId":"topUp","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}},"deprecated":true}},"/api/v1/projects/{projectUuid}/billing/prepaid/payment-intent":{"post":{"tags":["Billing"],"summary":"Create a PaymentIntent for a Stripe Elements top-up. Returns the clientSecret with which the Stripe Elements form confirms the intent.","operationId":"createTopUpPaymentIntent","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TopUpIntent"}}}}}}},"/api/v1/projects/{projectUuid}/billing/prepaid/confirm/{paymentIntentId}":{"post":{"tags":["Billing"],"summary":"Server-side confirmation after the client confirm: books the balance + creates the invoice + saves the payment-method ID. Idempotent (Stripe invoice ID lookup).","operationId":"confirmTopUp","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"paymentIntentId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/billing/prepaid/checkout-session":{"post":{"tags":["Billing"],"summary":"Embedded checkout session (EWCS) for a prepaid top-up. The frontend mounts <EmbeddedCheckoutProvider clientSecret={...}> — Stripe handles all payment methods + 3DS automatically. The balance is booked primarily via the synchronous /prepaid/checkout-session/{sessionId}/confirm call after onComplete; the checkout.session.completed webhook is an idempotent follow-up.","operationId":"createTopUpCheckoutSession","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CheckoutSession"}}}}}}},"/api/v1/projects/{projectUuid}/billing/prepaid/checkout-session/{sessionId}/confirm":{"post":{"tags":["Billing"],"summary":"Bypass for the EWCS top-up flow (mode=payment): after onComplete the frontend calls with the sessionId; the backend retrieves the session from Stripe, extracts the PaymentIntent ID and books the balance. Idempotent. Without this, the EWCS top-up path depends entirely on the checkout.session.completed webhook.","operationId":"confirmTopUpCheckoutSession","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/billing/prepaid/charge":{"post":{"tags":["Billing"],"summary":"One-click top-up with the saved payment method (off-session). The frontend shows clientSecret only if Stripe requires 3DS.","operationId":"chargeWithSavedMethod","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TopUpIntent"}}}}}}},"/api/v1/projects/{projectUuid}/billing/payment-method/recover":{"post":{"tags":["Billing"],"summary":"Last-resort recovery: scans Stripe for succeeded SetupIntents/payment methods for the customer and saves the latest one on the billing account. Used when neither the webhook nor the direct confirm succeeded. Idempotent.","operationId":"recoverPaymentMethod","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"boolean"}}}}}}}},"/api/v1/projects/{projectUuid}/billing/payment-method/checkout-session":{"post":{"tags":["Billing"],"summary":"Embedded checkout session (EWCS) in mode=setup to add a card without charging. Counterpart to /payment-method/setup-intent for the new EWCS flow.","operationId":"createSetupCheckoutSession","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CheckoutSession"}}}}}}},"/api/v1/projects/{projectUuid}/billing/payment-method/checkout-session/{sessionId}/confirm":{"post":{"tags":["Billing"],"summary":"Bypass for the EWCS flow (mode=setup): after onComplete the frontend calls with the sessionId; the backend retrieves the session from Stripe, extracts the SetupIntent ID and saves the payment method. Idempotent.","operationId":"confirmSetupCheckoutSession","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/api-keys":{"get":{"tags":["API Keys"],"summary":"All API keys of the project","operationId":"list_15","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyDto"}}}}}}},"post":{"tags":["API Keys"],"summary":"Create an API key (plaintext secret is shown only once)","operationId":"create_14","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/api/v1/projects/{projectUuid}/ai":{"get":{"tags":["Artificial Intelligence"],"summary":"All AIs deployed in the project","operationId":"list_16","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeployedAi"}}}}}}},"post":{"tags":["Artificial Intelligence"],"summary":"Deploy a new AI – optionally with a base model as the starting point. If baseModelLabels is set, only training entries with those labels are inherited from the base model (platform users may not see the contents, but they choose which classification classes they want).","operationId":"deploy","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DeployedAi"}}}}}}},"/api/v1/projects/{projectUuid}/ai/{aiUuid}/training":{"get":{"tags":["Artificial Intelligence"],"summary":"List the training data of the AI — paginated (default 10/page)","operationId":"listTraining","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TrainingPageDto"}}}}}},"post":{"tags":["Artificial Intelligence"],"summary":"Add a training entry","operationId":"addTraining","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TrainingEntry"}}}}}}},"/api/v1/projects/{projectUuid}/ai/{aiUuid}/training/import":{"post":{"tags":["Artificial Intelligence"],"summary":"Import training data from a CSV. Expected format: a 'label,payload' header row. For image classifiers, payload contains the base64-encoded byte stream of the image file.","operationId":"importTraining","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ImportResultDto"}}}}}}},"/api/v1/projects/{projectUuid}/ai/{aiUuid}/invoke":{"post":{"tags":["Artificial Intelligence"],"summary":"Test an AI from the dashboard (rate-limited). Production calls go through the cloud gateways.","operationId":"invoke","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvokeResponseDto"}}}}}}},"/api/v1/projects/provision":{"get":{"tags":["Cloud Projects"],"operationId":"provisionIsPostOnly","responses":{"200":{"description":"OK"}}},"post":{"tags":["Cloud Projects"],"summary":"Atomically create a project — only AFTER a verified card. Creates the project + billing account + address + payment method and finalizes it (setupCompleted + starting credit) in one step. Nothing exists beforehand.","operationId":"provision","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CloudProject"}}}}}}},"/api/v1/me/setup/payment-method/checkout-session":{"post":{"tags":["Me Payment Setup"],"summary":"Embedded SETUP checkout (card-only) against the user-level Stripe customer — without a project.","operationId":"createSetupCheckoutSession_1","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CheckoutSession"}}}}}}},"/api/v1/me/setup/payment-method/checkout-session/{sessionId}/confirm":{"post":{"tags":["Me Payment Setup"],"summary":"Synchronously confirm the card after onComplete and save it on the user (independent of the webhook).","operationId":"confirm","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/me/quickdeploy/events/{eventUuid}/signup":{"post":{"tags":["Quickdeploy"],"summary":"Attribute the now-authenticated caller to a Quickdeploy landing","operationId":"bindUser","parameters":[{"name":"eventUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindUserRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EventDto"}}}}}}},"/api/v1/me/quickdeploy/events/{eventUuid}/project":{"post":{"tags":["Quickdeploy"],"summary":"Record which project the Quickdeploy flow ended up deploying into","operationId":"bindProject","parameters":[{"name":"eventUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindProjectRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EventDto"}}}}}}},"/api/v1/me/quickdeploy/events/{eventUuid}/deployment":{"post":{"tags":["Quickdeploy"],"summary":"Record the Cloud Compute deployment a Quickdeploy flow produced","operationId":"bindDeployment","parameters":[{"name":"eventUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindDeploymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EventDto"}}}}}}},"/api/v1/me/contracts/{id}/accept":{"post":{"tags":["Contracts (me)"],"summary":"Accept a GENERAL contract on the account level (idempotent)","operationId":"accept_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AcceptanceStatus"}}}}},"security":[{"session":[]}]}},"/api/v1/me/campaign-affiliate":{"post":{"tags":["Onboarding"],"summary":"Attribute a campaign code from the affiliate cookie to the user","operationId":"assign_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AffiliateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AffiliateResultDto"}}}}},"security":[{"session":[]}]}},"/api/v1/invitations/{invitationUuid}/decline":{"post":{"tags":["Invitations"],"summary":"Decline an invitation (only the invited account email)","operationId":"decline","parameters":[{"name":"invitationUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationDto"}}}}}}},"/api/v1/invitations/{invitationUuid}/accept":{"post":{"tags":["Invitations"],"summary":"Accept an invitation (only the invited account email)","operationId":"accept_2","parameters":[{"name":"invitationUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationDto"}}}}}}},"/api/v1/compute/builds/github/webhook":{"post":{"tags":["git-hub-webhook-controller"],"operationId":"receive","parameters":[{"name":"X-GitHub-Event","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Hub-Signature-256","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/v1/blog/posts/{slug}/comments":{"post":{"tags":["Blog Comments"],"summary":"Post a comment on a published post (logged-in Darkstone account required)","operationId":"createComment","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CommentDto"}}}}}}},"/api/v1/billing/stripe/webhook":{"post":{"tags":["Stripe Webhook"],"summary":"Stripe webhook endpoint","operationId":"webhook","parameters":[{"name":"Stripe-Signature","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/v1/auth/webauthn/register/verify":{"post":{"tags":["Auth (WebAuthn)"],"summary":"Finish passkey registration with the browser's navigator.credentials.create() result.","operationId":"registerVerify","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterVerifyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CredentialView"}}}}},"security":[{"session":[]}]}},"/api/v1/auth/webauthn/register/options":{"post":{"tags":["Auth (WebAuthn)"],"summary":"Start passkey registration. Returns the WebAuthn PublicKeyCredentialCreationOptions ({publicKey: {...}}) to pass to navigator.credentials.create().","operationId":"registerOptions","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"session":[]}]}},"/api/v1/auth/webauthn/login/verify":{"post":{"tags":["Auth (WebAuthn)"],"summary":"Finish the passkey MFA ceremony. On success, upgrades the session to a full login (same response shape as POST /auth/standard/login with status=OK).","operationId":"loginVerify","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginVerifyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}}}}},"/api/v1/auth/webauthn/login/options":{"post":{"tags":["Auth (WebAuthn)"],"summary":"Start the passkey MFA ceremony after a password login that returned MFA_REQUIRED. Requires the pendingMfa session from that login response (no separate token).","operationId":"loginOptions","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/v1/auth/standard/verify-email":{"post":{"tags":["Auth (Standard)"],"summary":"Submit the emailed verification code. Accepts either a full session (fresh signup) or the pendingVerification session from a login with an unconfirmed address. Returns the same shape as /login: status=OK once the session is complete, or status=MFA_REQUIRED if a passkey still has to be confirmed.","operationId":"verifyEmail","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}}}}},"/api/v1/auth/standard/signup":{"post":{"tags":["Auth (Standard)"],"summary":"Create a new STANDARD (email+password) account. Logs the caller in immediately (session), but the account is emailVerified=false until /verify-email.","operationId":"signup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AccountView"}}}}}}},"/api/v1/auth/standard/reset-password":{"post":{"tags":["Auth (Standard)"],"summary":"Consume a password reset token and set a new password.","operationId":"resetPassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/v1/auth/standard/resend-verification":{"post":{"tags":["Auth (Standard)"],"summary":"Resend the email verification code. Accepts either a full session (fresh signup) or the pendingVerification session from a login with an unconfirmed address. Always 204.","operationId":"resendVerification","responses":{"200":{"description":"OK"}}}},"/api/v1/auth/standard/request-password-reset":{"post":{"tags":["Auth (Standard)"],"summary":"Request a password reset link by email. ALWAYS returns 204, regardless of whether the email is registered (avoids account enumeration).","operationId":"requestPasswordReset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestResetRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/v1/auth/standard/login":{"post":{"tags":["Auth (Standard)"],"summary":"Email+password login. Returns status=OK (session set), MFA_REQUIRED (complete /api/v1/auth/webauthn/login/*) or EMAIL_VERIFICATION_REQUIRED (submit the code at /verify-email, or request a new one at /resend-verification). The two non-OK states each set their own restricted session cookie; there is no token.","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}":{"get":{"tags":["Cloud Compute — Applications"],"summary":"Get a single application","operationId":"get_6","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeApplicationDto"}}}}}},"delete":{"tags":["Cloud Compute — Applications"],"summary":"Delete an application","operationId":"delete_7","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}},"patch":{"tags":["Cloud Compute — Applications"],"summary":"Rename an application","operationId":"rename_6","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameApplicationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeApplicationDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/updates/{updateUuid}":{"get":{"tags":["Cloud Compute — Updates"],"summary":"Get a single update","operationId":"get_7","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"updateUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeUpdateDto"}}}}}},"patch":{"tags":["Cloud Compute — Updates"],"summary":"Edit an open update's note","operationId":"edit","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"updateUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeUpdateDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}":{"get":{"tags":["Cloud Compute — Deployments"],"summary":"Get a single deployment","operationId":"getDeployment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}},"delete":{"tags":["Cloud Compute — Deployments"],"summary":"Delete a deployment","operationId":"deleteDeployment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}},"patch":{"tags":["Cloud Compute — Deployments"],"summary":"Edit a deployment's desired image tag / resources","operationId":"editDeployment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/zones/{zoneId}":{"delete":{"tags":["Cloud Compute — Deployments"],"summary":"Remove a zone from a deployment","operationId":"removeZone","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"zoneId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}},"patch":{"tags":["Cloud Compute — Deployments"],"summary":"Update a zone's bounds","operationId":"updateZone","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"zoneId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateZoneRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeDeploymentDto"}}}}}}},"/v2/token":{"get":{"tags":["registry-token-controller"],"operationId":"issue","parameters":[{"name":"service","in":"query","required":false,"schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}}}}},"/api/v2/projects/{projectUuid}/cloudgates/{gatewayUuid}/stats":{"get":{"tags":["Cloud Gateways v2"],"summary":"Live statistics: per-minute traffic (60-minute window) + total + route count","operationId":"stats","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayStatsDto"}}}}}}},"/api/v2/projects/{projectUuid}/cloudgates/{gatewayUuid}/stats/live":{"get":{"tags":["Cloud Gateways v2"],"summary":"Live counter: cumulative all-time traffic (O(1) read, for 2s polling)","operationId":"statsLive","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayLiveDto"}}}}}}},"/api/v1/volume-capacity":{"get":{"tags":["Volume Capacity"],"summary":"Which locations can currently host a new volume","operationId":"capacity","parameters":[{"name":"capacityBytes","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"replicas","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RegionCapacityDto"}}}}}}}},"/api/v1/vm-capacity":{"get":{"tags":["VM Capacity"],"summary":"Which locations can currently host a machine of the given size","operationId":"capacity_1","parameters":[{"name":"vcpuClass","in":"query","required":false,"schema":{"type":"string","default":"MC1","enum":["LC1","LC2","LC3","MC1","MC2","MC3","HC1"]}},{"name":"vcpuCount","in":"query","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"ramBytes","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RegionCapacityDto"}}}}}}}},"/api/v1/public/regions":{"get":{"tags":["Regions (public)"],"summary":"List active, bookable cloud regions (code + display name + flag)","operationId":"list_17","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RegionDto"}}}}}}}},"/api/v1/public/looking-glass/ping":{"get":{"tags":["Looking Glass"],"summary":"Tiny no-op for client-side RTT timing (type=self). 204, no-store. Reports the server processing time via Server-Timing so the client can subtract it from TTFB.","operationId":"ping","responses":{"200":{"description":"OK"}}}},"/api/v1/public/i18n/{locale}":{"get":{"tags":["i18n"],"summary":"Flat translation catalog {key→text} for a locale","operationId":"catalog","parameters":[{"name":"locale","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/v1/public/i18n/locales":{"get":{"tags":["i18n"],"summary":"Available (enabled) languages","operationId":"locales","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LocaleDto"}}}}}}}},"/api/v1/public/domains/tld-policies":{"get":{"tags":["Public"],"summary":"Faehigkeiten je Domainendung (Privacy, Transfer-Sperre, Nameserver-Grenzen)","operationId":"tldPolicies","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TldPolicyResponse"}}}}}}},"/api/v1/public/domains/search":{"get":{"tags":["Public"],"summary":"Domain-Verfuegbarkeit + Preise ueber mehrere TLDs (paginiert, gecached)","operationId":"search","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SearchPage"}}}}}}},"/api/v1/public/contracts":{"get":{"tags":["Contracts (public)"],"summary":"List all published contracts (GENERAL + PRODUCT)","operationId":"list_18","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContractSummaryDto"}}}}}}}},"/api/v1/public/contracts/{slug}":{"get":{"tags":["Contracts (public)"],"summary":"A published contract by slug (incl. subprocessors for PRODUCT contracts)","operationId":"get_8","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContractDetailDto"}}}}}}},"/api/v1/public/contracts/{slug}/file":{"get":{"tags":["Contracts (public)"],"summary":"Download the current published contract file (PDF) by slug","operationId":"file","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/public/campaigns/{slugOrCode}":{"get":{"tags":["Public Campaigns"],"summary":"Public campaign data for the full-screen landing page (by slug or code)","operationId":"landing","parameters":[{"name":"slugOrCode","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CampaignPublicView"}}}}}}},"/api/v1/public/campaigns/{slugOrCode}/image":{"get":{"tags":["Public Campaigns"],"summary":"Serve the campaign hero image bytes","operationId":"image","parameters":[{"name":"slugOrCode","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/public/campaigns/by-code/{code}":{"get":{"tags":["Public Campaigns"],"summary":"Does this code exist, and what credit is associated with it?","operationId":"lookup","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CampaignPublicView"}}}}}}},"/api/v1/public/blog/posts":{"get":{"tags":["Public Blog"],"summary":"Paginated list of published posts, optionally filtered by language/tag","operationId":"list_19","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string"}},{"name":"tag","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageResponseDtoBlogPostSummaryDto"}}}}}}},"/api/v1/public/blog/posts/{slug}":{"get":{"tags":["Public Blog"],"summary":"Single published post by slug, with full markdown body + SEO metadata","operationId":"getBySlug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BlogPostDetailDto"}}}}}}},"/api/v1/public/blog/posts/{slug}/comments":{"get":{"tags":["Public Blog"],"summary":"Paginated comments for a post (reading needs no login; posting does)","operationId":"listComments","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageResponseDtoCommentDto"}}}}}}},"/api/v1/public/blog/feed.xml":{"get":{"tags":["Public Blog"],"summary":"RSS 2.0 feed of recently published posts","operationId":"rss","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/rss+xml;charset=utf-8":{"schema":{"type":"string"}},"application/rss+xml; charset=utf-8":{"schema":{"type":"string"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}":{"get":{"tags":["Cloud Volumes"],"operationId":"get_9","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VolumeDto"}}}}}},"delete":{"tags":["Cloud Volumes"],"operationId":"delete_8","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/files":{"get":{"tags":["Cloud Volumes — File Browser"],"summary":"List a directory","operationId":"list_20","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"path","in":"query","required":false,"schema":{"type":"string","default":"/"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DirectoryListing"}}}}}},"delete":{"tags":["Cloud Volumes — File Browser"],"summary":"Delete a file or directory","operationId":"delete_9","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}},{"name":"recursive","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/files/download":{"get":{"tags":["Cloud Volumes — File Browser"],"summary":"Download a file","operationId":"download","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/sites":{"get":{"tags":["Cloud Volumes"],"summary":"Locations available in the cluster","operationId":"sites","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}":{"get":{"tags":["Virtual Machines"],"summary":"VM details","operationId":"get_10","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}},"delete":{"tags":["Virtual Machines"],"summary":"Delete a VM","operationId":"delete_10","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/metrics":{"get":{"tags":["VM Metrics"],"summary":"Metrics history (in-memory, max ~1h)","operationId":"get_11","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/MetricsResponseDto"}}}}}}},"/api/v1/projects/{projectUuid}/stats":{"get":{"tags":["Stats"],"summary":"Permission-based resource counters of a project","operationId":"projectStats","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}}}}},"/api/v1/projects/{projectUuid}/setup":{"get":{"tags":["Project Setup"],"summary":"Current setup status (address, payment method, completed flag)","operationId":"status_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SetupStatusDto"}}}}}}},"/api/v1/projects/{projectUuid}/roles/permissions/catalog":{"get":{"tags":["Roles"],"summary":"List of all available permissions","operationId":"catalog_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string","enum":["PROJECT_VIEW","PROJECT_UPDATE","PROJECT_DELETE","PROJECT_TRANSFER","MEMBER_VIEW","MEMBER_INVITE","MEMBER_REMOVE","MEMBER_ROLE_ASSIGN","ROLE_VIEW","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","INVITATION_VIEW","INVITATION_CREATE","INVITATION_REVOKE","API_KEY_VIEW","API_KEY_CREATE","API_KEY_UPDATE","API_KEY_DELETE","BILLING_VIEW","BILLING_LIMIT_VIEW","BILLING_LIMIT_SET","BILLING_PAYMENT_METHOD_UPDATE","INVOICE_VIEW","INVOICE_DOWNLOAD","AI_VIEW","AI_DEPLOY","AI_UPDATE","AI_DELETE","AI_TRAINING_EDIT","AI_INVOKE","NOTIFICATION_CONFIG_VIEW","NOTIFICATION_CONFIG_UPDATE","CREDENTIAL_VIEW","CREDENTIAL_CREATE","CREDENTIAL_UPDATE","CREDENTIAL_DELETE","CREDENTIAL_USE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","CLOUDGATE_VIEW","CLOUDGATE_CREATE","CLOUDGATE_UPDATE","CLOUDGATE_DELETE","CLOUDGATE_ROUTE_VIEW","CLOUDGATE_ROUTE_MANAGE","VM_VIEW","VM_CREATE","VM_UPDATE","VM_DELETE","VM_CONSOLE","APPLICATION_VIEW","APPLICATION_CREATE","APPLICATION_UPDATE","APPLICATION_DELETE","APPLICATION_VERSION_CREATE","APPLICATION_CONSOLE","APPLICATION_SHELL","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/storage-usage":{"get":{"tags":["Observatory"],"summary":"Get log storage usage","description":"Current log storage (rows + uncompressed logical bytes), project-scoped from ClickHouse. Observatory gate: `WATCH_VIEW`. Response `StorageUsageDto`: `{logRows, logBytes, generatedAt, services[{service, rows, bytes}]}`.","operationId":"storageUsage","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/spans":{"get":{"tags":["Observatory"],"summary":"Query trace spans","description":"Tenant-scoped spans. Observatory gate: `WATCH_VIEW` + seat licence. Same `?project=` requirement as `/v1/logs`. Response `SpanDto[]`: `{timestamp, service, traceId, spanId, parentSpanId, name, durationNanos, …}`.","operationId":"spans","parameters":[{"name":"project","in":"query","description":"Project UUID — must equal {projectUuid}","required":true},{"name":"from","in":"query","description":"ISO-8601 instant; default: last hour"},{"name":"to","in":"query","description":"ISO-8601 instant; default: now"},{"name":"query","in":"query","description":"Case-insensitive substring filter"},{"name":"limit","in":"query","description":"Max rows (default 100)"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/source-types":{"get":{"tags":["Observatory"],"summary":"List product-metric source types","description":"Catalog of built-in product-metric source types. Observatory gate: `WATCH_VIEW` + seat licence. Response `SourceTypeDto[]`: `{type, label, metrics[{key, label, unit}]}`.","operationId":"sourceTypes","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/source-types/{type}/instances":{"get":{"tags":["Observatory"],"summary":"List instances of a source type","description":"Project instances of a source type, resolved live from cluster Prometheus (empty if none / unreachable, never 500). Observatory gate: `WATCH_VIEW` + seat licence. Response `InstanceDto[]`: `{id, name}`.","operationId":"sourceTypeInstances","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"type","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/services":{"get":{"tags":["Observatory"],"summary":"List service keys","description":"Distinct app/`service.name` keys present in the project's telemetry (last 7 days), as a sorted `string[]`. Observatory gate: `WATCH_VIEW`. Powers the Logs viewer's service dropdown.","operationId":"services","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/services/{service}/instances":{"get":{"tags":["Observatory"],"summary":"List instances of a service","description":"Concurrent instances of one service key, each with its lifetime + running/stale flag. Observatory gate: `WATCH_VIEW`. Response `ServiceInstanceDto[]`: `{instanceId, firstSeen, lastSeen, logCount, running}`.","operationId":"serviceInstances","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"service","in":"path","description":"Service key (`service.name`)","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/oncall/warning":{"get":{"tags":["Observatory"],"summary":"On-call coverage-gap warning","description":"Banner state for coverage gaps. Observatory gate: `WATCH_ALERT_VIEW`. Response `OnCallGapWarningDto`: `{hasGap, gapCount, totalGapMinutes, firstGapFrom, firstGapTo, computedAt}`.","operationId":"oncallWarning","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/oncall/coverage":{"get":{"tags":["Observatory"],"summary":"On-call coverage timeline","description":"Coverage timeline + current responder(s) over the next `weeks` weeks (default 4). Observatory gate: `WATCH_ALERT_VIEW`. Response `OnCallCoverageDto`: `{generatedAt, rangeFrom, rangeTo, currentResponder, currentResponders[], segments[{from,to,covered,responders[]}], gaps[{from,to}]}`.","operationId":"oncallCoverage","parameters":[{"name":"weeks","in":"query","description":"Weeks to project (default 4)"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/metrics":{"get":{"tags":["Observatory"],"summary":"Query metric points","description":"Tenant-scoped metric data points. Observatory gate: `WATCH_VIEW` + seat licence. Same `?project=` requirement as `/v1/logs`. Response `MetricDto[]`: `{timestamp, service, name, value, attributes{}}`.","operationId":"metrics","parameters":[{"name":"project","in":"query","description":"Project UUID — must equal {projectUuid}","required":true},{"name":"from","in":"query","description":"ISO-8601 instant; default: last hour"},{"name":"to","in":"query","description":"ISO-8601 instant; default: now"},{"name":"query","in":"query","description":"Case-insensitive substring filter"},{"name":"limit","in":"query","description":"Max rows (default 100)"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/logs":{"get":{"tags":["Observatory"],"summary":"Query logs","description":"Tenant-scoped log rows. Observatory gate: `WATCH_VIEW` + seat licence. Response `LogDto[]`: `{timestamp, service, severity, body, attributes{}}`. NOTE: observatory currently REQUIRES a `?project=` query param equal to the path project (redundant with the injected identity — see the OpenAPI recommendation); omitting it 400s.","operationId":"logs","parameters":[{"name":"project","in":"query","description":"Project UUID — must equal {projectUuid}. Redundant but currently mandatory.","required":true},{"name":"from","in":"query","description":"ISO-8601 instant; default: last hour"},{"name":"to","in":"query","description":"ISO-8601 instant; default: now"},{"name":"query","in":"query","description":"Case-insensitive substring filter on body/name"},{"name":"limit","in":"query","description":"Max rows (default 100)"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/licenses/summary":{"get":{"tags":["Observatory"],"summary":"Seat licence summary","description":"Observatory gate: `WATCH_VIEW`. Response `LicenseSummaryDto`: `{licensedSeats, freeSeats, billableSeats, eurPerSeatMonth, estMonthlyEur}` (16 €/seat/month, 1 free).","operationId":"licenseSummary","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/licenses/me":{"get":{"tags":["Observatory"],"summary":"Does the caller hold a seat?","description":"Observatory gate: `WATCH_VIEW` (NOT a seat), so an unlicensed member gets an honest answer. Response `{licensed: boolean}`.","operationId":"licenseMe","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/ingest-config":{"get":{"tags":["Observatory"],"summary":"Get OTLP ingest configuration","description":"Where to point your OTLP exporter (non-secret; the ingest token carries tenancy). Observatory gate: `WATCH_VIEW`. Response `IngestConfigDto`: `{otlpEndpoint, otlpGrpcEndpoint, ingestHeader, logsPath:'/v1/logs', metricsPath:'/v1/metrics', tracesPath:'/v1/traces'}`. `ingestHeader` defaults to `X-Observatory-Ingest-Key`; endpoints are blank until the operator configures the public collector (e.g. `https://telemetry.darkstone.de`).","operationId":"ingestConfig","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/errors":{"get":{"tags":["Observatory"],"summary":"List error groups (issues)","description":"Grouped issue list, one row per fingerprint. Observatory gate: `WATCH_VIEW`. Response `ErrorGroupDto[]`: `{fingerprint, type, message, service, severity, count, firstSeen, lastSeen}`.","operationId":"errors","parameters":[{"name":"from","in":"query","description":"ISO-8601 instant; default: last 24h"},{"name":"to","in":"query","description":"ISO-8601 instant; default: now"},{"name":"service","in":"query","description":"Filter by service key"},{"name":"sort","in":"query","description":"Sort field (default `lastSeen`)"},{"name":"limit","in":"query","description":"Max groups (default 100)"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/errors/{fingerprint}":{"get":{"tags":["Observatory"],"summary":"Error issue detail","description":"Stacktrace, occurrence histogram, metadata + recent occurrences for one fingerprint (404 if unknown). Observatory gate: `WATCH_VIEW`. Response `ErrorDetailDto`: `{fingerprint, type, message, service, severity, count, firstSeen, lastSeen, latest, histogram[], recent[]}`.","operationId":"errorDetail","parameters":[{"name":"from","in":"query","description":"ISO-8601 instant; default: last 24h"},{"name":"to","in":"query","description":"ISO-8601 instant; default: now"},{"name":"intervalSeconds","in":"query","description":"Histogram bucket seconds (default 3600)"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"fingerprint","in":"path","description":"Error fingerprint","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/errors/{fingerprint}/logs":{"get":{"tags":["Observatory"],"summary":"Logs correlated to an error","description":"Logs correlated to an issue by `traceId` + window (the Log-History link). Observatory gate: `WATCH_VIEW`. Response `LogDto[]`. The `{fingerprint}` is accepted for a stable URL; correlation is by `traceId`.","operationId":"errorLogs","parameters":[{"name":"traceId","in":"query","description":"Trace id to correlate on"},{"name":"from","in":"query","description":"ISO-8601 instant"},{"name":"to","in":"query","description":"ISO-8601 instant"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"fingerprint","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/alert-rules/{ruleId}/history":{"get":{"tags":["Observatory"],"summary":"Alert per-day status strip","description":"Per-day green/red/grey status for the last `days` days (default/max 60). Observatory gate: `WATCH_ALERT_VIEW` + seat licence. Response `AlertDayStatusDto[]`: `{date, status:'green'|'red'|'grey', firingCount, triggeredSeconds}`.","operationId":"alertRuleHistory","parameters":[{"name":"days","in":"query","description":"Days to include (default/max 60)"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"ruleId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/alert-rules/{ruleId}/events":{"get":{"tags":["Observatory"],"summary":"Alert incident history (paginated)","description":"Firing/resolved occurrences paired into `from → to` incidents, newest first, PAGINATED. Observatory gate: `WATCH_ALERT_VIEW` + seat licence. Response `PageResult<AlertIncidentDto>`: `{content:[{id, ruleId, ruleName, severity, comparator, threshold, value, recipientCount, from, to, open}], page, size, totalElements, totalPages}`.","operationId":"alertRuleEvents","parameters":[{"name":"page","in":"query","description":"0-based page index (default 0)"},{"name":"size","in":"query","description":"Page size (default 10)"},{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"ruleId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/alert-rules/summary":{"get":{"tags":["Observatory"],"summary":"Alert rules summary","description":"Observatory gate: `WATCH_ALERT_VIEW` + seat licence. Response `AlertSummaryDto`: `{ruleCount, enabledCount, firingCount}`.","operationId":"alertSummary","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/alert-rules/events":{"get":{"tags":["Observatory"],"summary":"Recent alert events (project-wide)","description":"Recent fired/resolved occurrences across all rules. Observatory gate: `WATCH_ALERT_VIEW` + seat licence. Response `AlertEventDto[]`: `{id, ruleId, ruleName, severity, type, value, threshold, comparator, recipientCount, at}`.","operationId":"alertEvents","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/notifications":{"get":{"tags":["Notifications"],"summary":"All notification configurations of the project","operationId":"list_21","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationConfig"}}}}}}}},"/api/v1/projects/{projectUuid}/members":{"get":{"tags":["Members"],"summary":"All members with their roles","operationId":"list_22","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object"}}}}}}}}},"/api/v1/projects/{projectUuid}/me/permissions":{"get":{"tags":["Cloud Projects"],"summary":"Effective permissions of the current user in this project","operationId":"myPermissions","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}}}}},"/api/v1/projects/{projectUuid}/invoices":{"get":{"tags":["Invoices"],"summary":"Invoices (paginated, newest first). Default: 10 per page, max 100.","operationId":"list_23","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoicePage"}}}}}}},"/api/v1/projects/{projectUuid}/invoices/{invoiceUuid}":{"get":{"tags":["Invoices"],"summary":"Invoice details","operationId":"get_12","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"invoiceUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Invoice"}}}}}}},"/api/v1/projects/{projectUuid}/invoices/{invoiceUuid}/pdf":{"get":{"tags":["Invoices"],"summary":"Download an invoice as PDF","operationId":"downloadPdf","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"invoiceUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}":{"get":{"tags":["Domains"],"summary":"Domain detail (lock/privacy/verification)","operationId":"detail","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDetailsDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/transfer":{"get":{"tags":["Domains"],"summary":"Transfer-in status (registry-paced)","operationId":"transferStatus","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransferStatus"}}}}}}},"/api/v1/projects/{projectUuid}/domains/{domain}/auth-code":{"get":{"tags":["Domains"],"summary":"Get EPP/auth code for transfer-out (sensitive, never logged)","operationId":"authCode","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AuthCode"}}}}}}},"/api/v1/projects/{projectUuid}/domains/quote":{"get":{"tags":["Domains"],"summary":"Sell-price quote incl. markup (op=register|renew|transfer|restore)","operationId":"quote","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"domain","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"op","in":"query","required":false,"schema":{"type":"string","default":"register"}},{"name":"years","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1,"maximum":10,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/QuoteDto"}}}}}}},"/api/v1/projects/{projectUuid}/domains/availability":{"get":{"tags":["Domains"],"summary":"Check domain availability (cached) incl. sell price (markup)","operationId":"availability","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilityDto"}}}}}}}},"/api/v1/projects/{projectUuid}/contracts":{"get":{"tags":["Contracts (project)"],"summary":"Status of all published product contracts for this project","operationId":"list_24","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AcceptanceStatus"}}}}}}}},"/api/v1/projects/{projectUuid}/contracts/{id}/impact":{"get":{"tags":["Contracts (project)"],"summary":"What a revoke would tear down in this project","operationId":"impact","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RevokeImpact"}}}}}}},"/api/v1/projects/{projectUuid}/contracts/{id}/file":{"get":{"tags":["Contracts (project)"],"summary":"Download the contract file this project accepted (PDF)","operationId":"file_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/compute/deployments":{"get":{"tags":["Cloud Compute — Deployment Index"],"summary":"List every deployment of a project, flattened across applications/environments","operationId":"list_25","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComputeDeploymentTargetDto"}}}}}}}},"/api/v1/projects/{projectUuid}/compute/credentials":{"get":{"tags":["Cloud Compute — Credentials"],"summary":"List the project's compute credentials","operationId":"listCredentials","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComputeCredentialDto"}}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/instances":{"get":{"tags":["Cloud Compute — Applications"],"summary":"List the instances of an application, across all its deployments","operationId":"listApplicationInstances","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseDtoApplicationInstanceDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/instances/{podName}/logs":{"get":{"tags":["Cloud Compute — Applications"],"summary":"Read an instance pod's container logs","operationId":"instanceLogs","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"podName","in":"path","required":true,"schema":{"type":"string"}},{"name":"tailLines","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":500}},{"name":"previous","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/instances/{podName}/events":{"get":{"tags":["Cloud Compute — Applications"],"summary":"List an instance pod's diagnostics","operationId":"instanceEvents","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"podName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PodEventDto"}}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments/{environmentName}/deployments":{"get":{"tags":["Cloud Compute — Deployments"],"summary":"List the deployments of an environment","operationId":"listDeployments","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"environmentName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComputeDeploymentSummaryDto"}}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/instances":{"get":{"tags":["Cloud Compute — Deployments"],"summary":"List the instances of a deployment","operationId":"listInstances","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComputeInstanceDto"}}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/instances/{instanceId}/logs":{"get":{"tags":["Cloud Compute — Deployments"],"summary":"Read an instance's container logs","operationId":"instanceLogs_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"instanceId","in":"path","required":true,"schema":{"type":"string"}},{"name":"tailLines","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":500}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InstanceLogsDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/instances/{instanceId}/events":{"get":{"tags":["Cloud Compute — Deployments"],"summary":"List an instance's diagnostics","operationId":"instanceEvents_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"instanceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PodEventDto"}}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/builds/{buildId}/logs":{"get":{"tags":["Cloud Compute — Deployments"],"summary":"Read a build's railpack logs","operationId":"buildLogs","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"buildId","in":"path","required":true,"schema":{"type":"string"}},{"name":"tailLines","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1000}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BuildLogsDto"}}}}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/deployments/{deploymentUuid}/builds/{buildId}/events":{"get":{"tags":["Cloud Compute — Deployments"],"summary":"List a build's diagnostics","operationId":"buildEvents","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deploymentUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"buildId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PodEventDto"}}}}}}}},"/api/v1/projects/{projectUuid}/cloudgates/{gatewayUuid}/stats":{"get":{"tags":["Cloud Gateways"],"summary":"Live statistics: per-minute traffic (60-minute window) + total + route count","operationId":"stats_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayStatsDto"}}}}}}},"/api/v1/projects/{projectUuid}/cloudgates/{gatewayUuid}/stats/live":{"get":{"tags":["Cloud Gateways"],"summary":"Live counter: cumulative all-time traffic (O(1) read, for 2s polling)","operationId":"statsLive_1","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"gatewayUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GatewayLiveDto"}}}}}}},"/api/v1/projects/{projectUuid}/billing/usage/timeseries":{"get":{"tags":["Billing"],"summary":"Daily usage series for charts. One bucket per day with amounts per ServiceType. months=N goes back N-1 months up to today (default 1).","operationId":"usageTimeseries","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object"}}}}}}}}},"/api/v1/projects/{projectUuid}/billing/stripe-info":{"get":{"tags":["Billing"],"summary":"Stripe configuration status (for the test-mode banner)","operationId":"stripeInfo","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/api/v1/projects/{projectUuid}/billing/spend/{serviceType}":{"get":{"tags":["Billing"],"summary":"Current month-to-date usage","operationId":"getSpend","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"serviceType","in":"path","required":true,"schema":{"type":"string","enum":["AI_INVOKE","AI_TRAINING_STORAGE","VECTORDB_STORAGE","VECTORDB_SEARCH","VECTORDB_WRITE","OBJECT_STORAGE_STORAGE","VOLUMES_STORAGE","VOLUMES_TRAFFIC_OUT","VOLUMES_MIRROR_REPLICA","VOLUMES_BACKUP_STORAGE","VOLUMES_BACKUP_OPERATION","CLOUDGATE_BASE","CLOUDGATE_BASE_DEDICATED","CLOUDGATE_TRAFFIC_OUT","CLOUDGATE_TRAFFIC_IN","CLOUDGATE_ROUTE","COMPUTE_VCPU_LC1","COMPUTE_VCPU_LC2","COMPUTE_VCPU_LC3","COMPUTE_VCPU_MC1","COMPUTE_VCPU_MC2","COMPUTE_VCPU_MC3","COMPUTE_VCPU_HC1","COMPUTE_RAM","COMPUTE_IMAGE_STORAGE","VM_VCPU_LC1","VM_VCPU_LC2","VM_VCPU_LC3","VM_VCPU_MC1","VM_VCPU_MC2","VM_VCPU_MC3","VM_VCPU_HC1","VM_RAM","VM_BOOT_STORAGE","VM_BOOT_MIRROR_REPLICA","REGISTRY_STORAGE","DOMAIN_REGISTER","DOMAIN_RENEW","DOMAIN_TRANSFER","DOMAIN_RESTORE","WATCH_SEAT","WATCH_ALERT","TENANT_NETWORK_BASE"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/api/v1/projects/{projectUuid}/billing/prepaid/balance":{"get":{"tags":["Billing"],"summary":"Current prepaid balance","operationId":"getPrepaidBalance","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/api/v1/projects/{projectUuid}/billing/payment-method":{"get":{"tags":["Billing"],"summary":"Saved default payment method (brand + last4 + expiry). null if none is on file.","operationId":"getSavedPaymentMethod","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SavedPaymentMethod"}}}}}},"delete":{"tags":["Billing"],"summary":"Remove the saved payment method (detached at Stripe). Auto-recharge is disabled automatically.","operationId":"removeSavedPaymentMethod","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/billing/limits":{"get":{"tags":["Billing"],"summary":"All limits of the project","operationId":"listLimits","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BillingLimit"}}}}}}}},"/api/v1/projects/{projectUuid}/ai/{aiUuid}/training/labels":{"get":{"tags":["Artificial Intelligence"],"summary":"Distinct labels of the existing training data","operationId":"listTrainingLabels","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}}}}},"/api/v1/projects/{projectUuid}/ai/{aiUuid}/training/export":{"get":{"tags":["Artificial Intelligence"],"summary":"Export the training data as CSV (images are serialized as base64 in the payload field — no extra handling needed, the payload IS already base64).","operationId":"exportTraining","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"aiUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/api/v1/projects/by-slug/{slug}":{"get":{"tags":["Cloud Projects"],"summary":"Project details by slug ID (e.g. eternal-empires-9282d151)","operationId":"getBySlug_1","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CloudProject"}}}}}}},"/api/v1/project":{"get":{"tags":["API-Key Project Discovery"],"summary":"The project this API key is scoped to (projectUuid, slug, name)","operationId":"current","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectIdentityDto"}}}}}}},"/api/v1/pricing":{"get":{"tags":["Pricing"],"summary":"Full price catalog","operationId":"catalog_2","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PricingDto"}}}}}}},"/api/v1/me/setup/payment-method":{"get":{"tags":["Me Payment Setup"],"summary":"Does the user have a verified setup card? (precondition for provisioning)","operationId":"status_2","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VerifiedDto"}}}}}}},"/api/v1/me/quickdeploy/projects":{"get":{"tags":["Quickdeploy"],"summary":"The caller's projects that are eligible for Quickdeploy's 'deploy into an existing project' choice — i.e. carry APPLICATION_CREATE for Cloud Compute on that project.","operationId":"eligibleProjects","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EligibleProjectDto"}}}}}}}},"/api/v1/me/limits":{"get":{"tags":["Me – Limits"],"summary":"My limits + current usage","operationId":"get_13","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/MyLimitsDto"}}}}}}},"/api/v1/me/contracts":{"get":{"tags":["Contracts (me)"],"summary":"Status of all published account-level (GENERAL) contracts for the current user","operationId":"myContracts","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AcceptanceStatus"}}}}}},"security":[{"session":[]}]}},"/api/v1/me/contracts/{id}/file":{"get":{"tags":["Contracts (me)"],"summary":"Download the account-level contract file this user accepted (PDF)","operationId":"file_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}},"security":[{"session":[]}]}},"/api/v1/invitations/mine":{"get":{"tags":["Invitations"],"summary":"Own invitations (shown in the account notifications)","operationId":"mine","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvitationDto"}}}}}}}},"/api/v1/compute/zones":{"get":{"tags":["Cloud Compute — Zones"],"summary":"List the available compute zones","operationId":"listZones","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComputeZoneDto"}}}}}}}},"/api/v1/compute/sizes":{"get":{"tags":["Cloud Compute — Sizes"],"summary":"List the selectable compute sizes","operationId":"listSizes","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComputeSizeCatalogDto"}}}}}}},"/api/v1/billing/config":{"get":{"tags":["Billing Config"],"summary":"Stripe publishable key + currency for the frontend Elements init","operationId":"config","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/api/v1/auth/webauthn/credentials":{"get":{"tags":["Auth (WebAuthn)"],"summary":"List your own registered passkeys","operationId":"credentials","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CredentialView"}}}}}},"security":[{"session":[]}]}},"/api/v1/auth/me":{"get":{"tags":["Auth"],"summary":"Return the currently logged-in user","operationId":"me","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/api/v1/auth/login":{"get":{"tags":["Auth"],"summary":"Login hint – use /oauth2/authorization/google","operationId":"loginInfo","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/v1/ai/base-models":{"get":{"tags":["AI Base Models"],"summary":"All base models (authentication required) — for the AI deploy picker","operationId":"list_26","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BaseAi"}}}}}}}},"/api/v1/ai/base-models/{baseUuid}/labels":{"get":{"tags":["AI Base Models"],"summary":"Distinct labels of a base model — selectable at deploy time.","operationId":"listLabels","parameters":[{"name":"baseUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}}}}},"/api/v1/account/stats":{"get":{"tags":["Stats"],"summary":"Resource counters of the account (number of projects)","operationId":"accountStats","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}}}}},"/api/v1/account/avatar":{"get":{"tags":["Account"],"summary":"Return the profile picture of your own account (proxied from Google's image CDN)","operationId":"getAvatar","parameters":[{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/users/{userUuid}":{"delete":{"tags":["Cloud Volumes"],"operationId":"deleteUser","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/backups/{backupName}":{"delete":{"tags":["Volume Backups"],"summary":"Delete a backup (blocks in the backup target are freed via garbage collection)","operationId":"delete_11","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"volumeUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"backupName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/virtual-machines/{vmUuid}/backups/{backupName}":{"delete":{"tags":["VM Backups"],"summary":"Delete a VM backup","operationId":"delete_12","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"backupName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/registry/robots/{robotUuid}":{"delete":{"tags":["Container Registry – Robot Accounts"],"summary":"Revoke a robot account — active login sessions are invalidated immediately","operationId":"delete_13","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"robotUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/observatory/v1/oncall/schedules/{scheduleId}":{"delete":{"tags":["Observatory"],"summary":"Delete an on-call schedule","description":"Observatory gate: `WATCH_ONCALL_MANAGE`. 204 No Content.","operationId":"oncallDelete","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"scheduleId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/log-sources/{sourceId}":{"delete":{"tags":["Observatory"],"summary":"Delete a log source","description":"Observatory gate: `WATCH_MANAGE`. 204 No Content.","operationId":"deleteLogSource","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"sourceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/licenses/{licenseId}":{"delete":{"tags":["Observatory"],"summary":"Revoke a seat licence","description":"Observatory gate: `WATCH_MANAGE`. 204 No Content.","operationId":"revokeLicense","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"licenseId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/observatory/v1/ingest-tokens/{tokenId}":{"delete":{"tags":["Observatory"],"summary":"Revoke an ingest token","description":"Observatory gate: `WATCH_MANAGE`. 204 No Content.","operationId":"revokeIngestToken","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tokenId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/v1/projects/{projectUuid}/networks/{networkUuid}/attachments/{vmUuid}":{"delete":{"tags":["Tenant Networks"],"summary":"Detach a VM from the network","description":"Idempotent (not attached counts as success). The secondary interface only disappears on an instance restart — restartRequired reflects whether anything changed.","operationId":"detach","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"networkUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vmUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AttachmentDto"}}}}}}},"/api/v1/projects/{projectUuid}/members/{userUuid}":{"delete":{"tags":["Members"],"summary":"Remove a member","operationId":"remove","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/invitations/{invitationUuid}":{"delete":{"tags":["Invitations"],"summary":"Revoke an invitation (admin)","operationId":"revoke_2","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"invitationUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/projects/{projectUuid}/compute/applications/{appUuid}/environments/{environmentName}":{"delete":{"tags":["Cloud Compute — Applications"],"summary":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"environmentName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/auth/webauthn/credentials/{credentialUuid}":{"delete":{"tags":["Auth (WebAuthn)"],"summary":"Delete one of your own registered passkeys","operationId":"deleteCredential","parameters":[{"name":"credentialUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}},"security":[{"session":[]}]}}},"components":{"schemas":{"RenameGatewayRequestV2":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"GatewayDtoV2":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"size":{"type":"string"},"pendingSize":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"ipCountTarget":{"type":"integer","format":"int32"},"ipCountAssigned":{"type":"integer","format":"int32"},"monthlyPriceEur":{"type":"number"},"nextRenewalAt":{"type":"string","format":"date-time"},"serviceSuspended":{"type":"boolean"},"subdomainSlug":{"type":"string"},"fqdn":{"type":"string"},"status":{"type":"string"}}},"UpdateRouteRequestV2":{"type":"object","properties":{"name":{"type":"string","minLength":1},"targetType":{"type":"string","enum":["CLOUD_VOLUME_SFTP","CLOUD_VOLUME_WEBDAV","CLOUD_STREAMS","AI_INVOKE","OBJECT_STORAGE_BUCKET","VECTOR_DB_COLLECTION","VIRTUAL_MACHINE","CLOUD_COMPUTE_APPLICATION"]},"targetResourceUuid":{"type":"string","format":"uuid"},"targetPort":{"type":"integer","format":"int32"},"proxyProtocol":{"type":"boolean"},"webDomain":{"type":"string"}}},"FirewallConfig":{"type":"object","properties":{"enabled":{"type":"boolean"},"defaultAction":{"type":"string","enum":["ALLOW","DENY"]},"rules":{"type":"array","items":{"$ref":"#/components/schemas/FirewallRule"}}}},"FirewallNode":{"type":"object","properties":{"kind":{"type":"string"},"negate":{"type":"boolean"},"values":{"type":"array","items":{"type":"string"}},"children":{"type":"array","items":{"$ref":"#/components/schemas/FirewallNode"}}}},"FirewallRule":{"type":"object","properties":{"action":{"type":"string","enum":["ALLOW","DENY"]},"match":{"$ref":"#/components/schemas/FirewallNode"}}},"RouteDtoV2":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"gatewayUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"publicPort":{"type":"integer","format":"int32"},"publicPortEnd":{"type":"integer","format":"int32"},"proxyProtocol":{"type":"boolean"},"targetType":{"type":"string"},"targetResourceUuid":{"type":"string","format":"uuid"},"targetResourceName":{"type":"string"},"targetPort":{"type":"integer","format":"int32"},"webDomain":{"type":"string"},"webUrl":{"type":"string"},"certStatus":{"type":"string"},"certMode":{"type":"string"},"certExpiresAt":{"type":"string","format":"date-time"},"firewall":{"$ref":"#/components/schemas/FirewallConfig"}}},"ProjectUpdateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"CloudProject":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"ownerUuid":{"type":"string","format":"uuid"},"uuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"setupCompleted":{"type":"boolean"}}},"PermissionRequest":{"type":"object","properties":{"read":{"type":"boolean"},"write":{"type":"boolean"},"list":{"type":"boolean"},"delete":{"type":"boolean"},"pathPrefix":{"type":"string"}}},"PermissionsDto":{"type":"object","properties":{"read":{"type":"boolean"},"write":{"type":"boolean"},"list":{"type":"boolean"},"delete":{"type":"boolean"},"pathPrefix":{"type":"string"}}},"VolumeUserDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"volumeUuid":{"type":"string","format":"uuid"},"username":{"type":"string"},"hasPassword":{"type":"boolean"},"credentialUuid":{"type":"string","format":"uuid"},"enabled":{"type":"boolean"},"system":{"type":"boolean"},"permissions":{"$ref":"#/components/schemas/PermissionsDto"}}},"PasswordRequest":{"type":"object","properties":{"password":{"type":"string","minLength":1}}},"EnabledRequest":{"type":"object","properties":{"enabled":{"type":"boolean"}}},"CredentialRequest":{"type":"object","properties":{"credentialUuid":{"type":"string","format":"uuid"}},"required":["credentialUuid"]},"ReplicationRequest":{"type":"object","properties":{"primarySite":{"type":"string","minLength":1},"mirrorSites":{"type":"array","items":{"type":"string"}}}},"AnonymousAccessDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"permissions":{"$ref":"#/components/schemas/PermissionsDto"}}},"EncryptionDto":{"type":"object","properties":{"credentialUuid":{"type":"string","format":"uuid"},"byok":{"type":"boolean"},"keyFingerprint":{"type":"string"}}},"ReplicaDto":{"type":"object","properties":{"site":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"nodeName":{"type":"string"}}},"ReplicationDto":{"type":"object","properties":{"primarySite":{"type":"string"},"mirrorSites":{"type":"array","items":{"type":"string"}}}},"VolumeDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"capacityBytes":{"type":"integer","format":"int64"},"storageBytes":{"type":"integer","format":"int64"},"status":{"type":"string"},"encryption":{"$ref":"#/components/schemas/EncryptionDto"},"replication":{"$ref":"#/components/schemas/ReplicationDto"},"replicas":{"type":"array","items":{"$ref":"#/components/schemas/ReplicaDto"}},"anonymousAccess":{"$ref":"#/components/schemas/AnonymousAccessDto"},"attachedVmUuid":{"type":"string","format":"uuid"},"purpose":{"type":"string"},"billingMode":{"type":"string"},"region":{"type":"string"}}},"ScheduleRequest":{"type":"object","properties":{"intervalHours":{"type":"integer","format":"int32"}}},"VolumeBackupPlanDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"fullAmount":{"type":"integer","format":"int32"},"fullUnit":{"type":"string","enum":["HOURS","DAYS","WEEKS","MONTHS","QUARTERS","YEARS"]},"partialAmount":{"type":"integer","format":"int32"},"partialUnit":{"type":"string","enum":["HOURS","DAYS","WEEKS","MONTHS","QUARTERS","YEARS"]},"incrementalAmount":{"type":"integer","format":"int32"},"incrementalUnit":{"type":"string","enum":["HOURS","DAYS","WEEKS","MONTHS","QUARTERS","YEARS"]},"maxFullBackups":{"type":"integer","format":"int32"},"lastFullAt":{"type":"string","format":"date-time"},"lastPartialAt":{"type":"string","format":"date-time"},"lastIncrementalAt":{"type":"string","format":"date-time"},"degradationWarning":{"type":"string"},"historyHours":{"type":"string"},"hierarchyReading":{"type":"string"},"allowedShadowRegions":{"type":"array","items":{"type":"string"},"uniqueItems":true},"shadowTargetWarning":{"type":"string"}}},"AnonymousAccessRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"permissions":{"$ref":"#/components/schemas/PermissionRequest"}},"required":["permissions"]},"ResizeRequestDto":{"type":"object","properties":{"vcpuClass":{"type":"string","enum":["LC1","LC2","LC3","MC1","MC2","MC3","HC1"]},"vcpuCount":{"type":"integer","format":"int32","minimum":1},"ramBytes":{"type":"integer","format":"int64","minimum":1},"bootDiskBytes":{"type":"integer","format":"int64","minimum":0}},"required":["vcpuClass"]},"VirtualMachineDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"vcpuClass":{"type":"string","enum":["LC1","LC2","LC3","MC1","MC2","MC3","HC1"]},"vcpuCount":{"type":"integer","format":"int32"},"ramBytes":{"type":"integer","format":"int64"},"bootVolumeUuid":{"type":"string","format":"uuid"},"dataVolumeUuids":{"type":"array","items":{"type":"string","format":"uuid"}},"imageType":{"type":"string","enum":["LINUX_UBUNTU_22_04","LINUX_UBUNTU_24_04","LINUX_DEBIAN_12","LINUX_ALPINE_3_19","CUSTOM_QCOW2"]},"customImageUrl":{"type":"string"},"sshCredentialUuid":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["PROVISIONING","STOPPED","STARTING","RUNNING","STOPPING","FAILED"]},"statusMessage":{"type":"string"},"siteName":{"type":"string"},"region":{"type":"string"},"gatewayUuid":{"type":"string","format":"uuid"},"exposedPorts":{"type":"array","items":{"type":"integer","format":"int32"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"billingMode":{"type":"string","enum":["PER_MINUTE","PER_DAY"]},"startedAt":{"type":"string","format":"date-time"},"primaryIp":{"type":"string"},"gatewayRouteCount":{"type":"integer","format":"int64"},"desiredVcpuClass":{"type":"string","enum":["LC1","LC2","LC3","MC1","MC2","MC3","HC1"]},"desiredVcpuCount":{"type":"integer","format":"int32"},"desiredRamBytes":{"type":"integer","format":"int64"},"pendingResizeRequiresRestart":{"type":"boolean"},"resizeRequestedAt":{"type":"string","format":"date-time"},"bootFirmware":{"type":"string","enum":["BIOS","UEFI"]},"cloudInitMode":{"type":"string","enum":["MERGE","REPLACE"]},"hasUserCloudInit":{"type":"boolean"},"clusterName":{"type":"string"},"internalIp":{"type":"string"},"tenantIps":{"type":"array","items":{"type":"string"}},"bootDiskResizePendingRestart":{"type":"boolean"},"networkAttachmentPendingRestart":{"type":"boolean"}}},"UpdateDataVolumesRequestDto":{"type":"object","properties":{"dataVolumeUuids":{"type":"array","items":{"type":"string","format":"uuid"}},"allowCrossRegion":{"type":"boolean"}}},"UpdateBootReplicationRequestDto":{"type":"object","properties":{"mirrorSites":{"type":"array","items":{"type":"string"}}}},"ScheduleRequestDto":{"type":"object","properties":{"intervalHours":{"type":"integer","format":"int32"}}},"BackupPlanSpec":{"type":"object","properties":{"enabled":{"type":"boolean"},"fullAmount":{"type":"integer","format":"int32"},"fullUnit":{"type":"string","enum":["HOURS","DAYS","WEEKS","MONTHS","QUARTERS","YEARS"]},"partialAmount":{"type":"integer","format":"int32"},"partialUnit":{"type":"string","enum":["HOURS","DAYS","WEEKS","MONTHS","QUARTERS","YEARS"]},"incrementalAmount":{"type":"integer","format":"int32"},"incrementalUnit":{"type":"string","enum":["HOURS","DAYS","WEEKS","MONTHS","QUARTERS","YEARS"]},"maxFullBackups":{"type":"integer","format":"int32"},"lastFullAt":{"type":"string","format":"date-time"},"lastPartialAt":{"type":"string","format":"date-time"},"lastIncrementalAt":{"type":"string","format":"date-time"},"degradationWarning":{"type":"string"},"allowedShadowRegions":{"type":"array","items":{"type":"string"},"uniqueItems":true},"shadowTargetWarning":{"type":"string"},"incrementalHours":{"type":"number"},"fullHours":{"type":"number"},"partialHours":{"type":"number"},"hierarchyValid":{"type":"boolean"}}},"BillingSetupRequest":{"type":"object","properties":{"customerType":{"type":"string","enum":["PRIVATE","BUSINESS"]},"contactFirstName":{"type":"string"},"contactLastName":{"type":"string"},"address":{"$ref":"#/components/schemas/PostalAddress"},"vatId":{"type":"string"},"b2bConfirmed":{"type":"boolean"}}},"PostalAddress":{"type":"object","properties":{"streetLine":{"type":"string"},"addressLine2":{"type":"string"},"postalCode":{"type":"string"},"city":{"type":"string"},"countryCode":{"type":"string"}}},"SetupStatusDto":{"type":"object","properties":{"setupCompleted":{"type":"boolean"},"customerType":{"type":"string","enum":["PRIVATE","BUSINESS"]},"vatId":{"type":"string"},"contactFirstName":{"type":"string"},"contactLastName":{"type":"string"},"address":{"$ref":"#/components/schemas/PostalAddress"},"b2bConfirmed":{"type":"boolean"},"claimedCampaignCode":{"type":"string"},"claimedCampaignCreditEur":{"type":"number"}}},"RoleRenameRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"Role":{"type":"object","properties":{"name":{"type":"string"},"permissions":{"type":"array","items":{"type":"string","enum":["PROJECT_VIEW","PROJECT_UPDATE","PROJECT_DELETE","PROJECT_TRANSFER","MEMBER_VIEW","MEMBER_INVITE","MEMBER_REMOVE","MEMBER_ROLE_ASSIGN","ROLE_VIEW","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","INVITATION_VIEW","INVITATION_CREATE","INVITATION_REVOKE","API_KEY_VIEW","API_KEY_CREATE","API_KEY_UPDATE","API_KEY_DELETE","BILLING_VIEW","BILLING_LIMIT_VIEW","BILLING_LIMIT_SET","BILLING_PAYMENT_METHOD_UPDATE","INVOICE_VIEW","INVOICE_DOWNLOAD","AI_VIEW","AI_DEPLOY","AI_UPDATE","AI_DELETE","AI_TRAINING_EDIT","AI_INVOKE","NOTIFICATION_CONFIG_VIEW","NOTIFICATION_CONFIG_UPDATE","CREDENTIAL_VIEW","CREDENTIAL_CREATE","CREDENTIAL_UPDATE","CREDENTIAL_DELETE","CREDENTIAL_USE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","CLOUDGATE_VIEW","CLOUDGATE_CREATE","CLOUDGATE_UPDATE","CLOUDGATE_DELETE","CLOUDGATE_ROUTE_VIEW","CLOUDGATE_ROUTE_MANAGE","VM_VIEW","VM_CREATE","VM_UPDATE","VM_DELETE","VM_CONSOLE","APPLICATION_VIEW","APPLICATION_CREATE","APPLICATION_UPDATE","APPLICATION_DELETE","APPLICATION_VERSION_CREATE","APPLICATION_CONSOLE","APPLICATION_SHELL","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true},"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"}}},"RolePermissionsRequest":{"type":"object","properties":{"permissions":{"type":"array","items":{"type":"string","enum":["PROJECT_VIEW","PROJECT_UPDATE","PROJECT_DELETE","PROJECT_TRANSFER","MEMBER_VIEW","MEMBER_INVITE","MEMBER_REMOVE","MEMBER_ROLE_ASSIGN","ROLE_VIEW","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","INVITATION_VIEW","INVITATION_CREATE","INVITATION_REVOKE","API_KEY_VIEW","API_KEY_CREATE","API_KEY_UPDATE","API_KEY_DELETE","BILLING_VIEW","BILLING_LIMIT_VIEW","BILLING_LIMIT_SET","BILLING_PAYMENT_METHOD_UPDATE","INVOICE_VIEW","INVOICE_DOWNLOAD","AI_VIEW","AI_DEPLOY","AI_UPDATE","AI_DELETE","AI_TRAINING_EDIT","AI_INVOKE","NOTIFICATION_CONFIG_VIEW","NOTIFICATION_CONFIG_UPDATE","CREDENTIAL_VIEW","CREDENTIAL_CREATE","CREDENTIAL_UPDATE","CREDENTIAL_DELETE","CREDENTIAL_USE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","CLOUDGATE_VIEW","CLOUDGATE_CREATE","CLOUDGATE_UPDATE","CLOUDGATE_DELETE","CLOUDGATE_ROUTE_VIEW","CLOUDGATE_ROUTE_MANAGE","VM_VIEW","VM_CREATE","VM_UPDATE","VM_DELETE","VM_CONSOLE","APPLICATION_VIEW","APPLICATION_CREATE","APPLICATION_UPDATE","APPLICATION_DELETE","APPLICATION_VERSION_CREATE","APPLICATION_CONSOLE","APPLICATION_SHELL","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true}},"required":["permissions"]},"TargetDto":{"type":"object","properties":{"type":{"type":"string","enum":["USER","ROLE","EMAIL"]},"value":{"type":"string","minLength":1}},"required":["type"]},"TargetsRequest":{"type":"object","properties":{"targets":{"type":"array","items":{"$ref":"#/components/schemas/TargetDto"}}},"required":["targets"]},"NotificationConfig":{"type":"object","properties":{"category":{"type":"string","enum":["SECURITY","BILLING"]},"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"targets":{"type":"array","items":{"$ref":"#/components/schemas/NotificationTarget"}}}},"NotificationTarget":{"type":"object","properties":{"value":{"type":"string"},"type":{"type":"string","enum":["USER","ROLE","EMAIL"]}}},"UpdateTenantNetworkRequestDto":{"type":"object","properties":{"name":{"type":"string"}}},"TenantNetworkDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"vni":{"type":"integer","format":"int32"},"cidr":{"type":"string"},"region":{"type":"string"},"state":{"type":"string","enum":["PENDING","READY","FAILED"]},"attachedVmUuids":{"type":"array","items":{"type":"string","format":"uuid"}},"attachedAppUuids":{"type":"array","items":{"type":"string","format":"uuid"}},"stateMessage":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"LockRequest":{"type":"object","properties":{"locked":{"type":"boolean"}}},"DomainDetailsDto":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"registryStatus":{"type":"string"},"verificationStatus":{"type":"string"},"autoRenew":{"type":"boolean"},"transferLock":{"type":"boolean"},"privacyLevel":{"type":"string"},"registeredAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"nameservers":{"type":"array","items":{"type":"string"}},"delegatedToCloudgate":{"type":"boolean"}}},"ToggleRequest":{"type":"object","properties":{"enabled":{"type":"boolean"}}},"NameserverRequest":{"type":"object","properties":{"delegateToCloudgate":{"type":"boolean"},"nameservers":{"type":"array","items":{"type":"string"}}}},"DnsRecordImpl":{"type":"object","properties":{"type":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS","SRV","CAA"]},"name":{"type":"string","maxLength":253,"minLength":0},"value":{"type":"string","maxLength":4096,"minLength":0},"ttl":{"type":"integer","format":"int32","maximum":604800,"minimum":1},"priority":{"type":"integer","format":"int32","maximum":65535,"minimum":0}},"required":["name","type"]},"DnsRecordsRequest":{"type":"object","properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecordImpl"}}}},"DnsRecord":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"priority":{"type":"integer","format":"int32"},"type":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS","SRV","CAA"]},"ttl":{"type":"integer","format":"int32"}}},"CredentialUpdateRequest":{"type":"object","properties":{"name":{"type":"string"},"notes":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"expiresAtSet":{"type":"boolean"},"username":{"type":"string"},"usernameSet":{"type":"boolean"}}},"Credential":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["API_TOKEN","USERNAME_PASSWORD","SSH_KEY","ENCRYPTION_KEY","OTHER"]},"username":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","EXPIRING_SOON","EXPIRED","INVALID","UNKNOWN"]},"updatedAt":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"notes":{"type":"string"},"createdByUuid":{"type":"string","format":"uuid"}}},"RotateSecretRequest":{"type":"object","properties":{"secret":{"type":"string","minLength":1}}},"SetComputeDnsRequest":{"type":"object","properties":{"profile":{"type":"string","enum":["EU","US","CUSTOM"]},"customNameservers":{"type":"array","items":{"type":"string"}}}},"ComputeDnsSettingsDto":{"type":"object","properties":{"profile":{"type":"string","enum":["EU","US","CUSTOM"]},"explicit":{"type":"boolean"},"nameservers":{"type":"array","items":{"type":"string"}},"customNameservers":{"type":"array","items":{"type":"string"}},"maxCustomNameservers":{"type":"integer","format":"int32"},"appliedToInstances":{"type":"boolean"}}},"Mount":{"type":"object","properties":{"volumeId":{"type":"string"},"mountPath":{"type":"string"},"readOnly":{"type":"boolean"}}},"SetVolumeMountsRequest":{"type":"object","properties":{"mounts":{"type":"array","items":{"$ref":"#/components/schemas/Mount"}}}},"AutoscalingTargetDto":{"type":"object","properties":{"metric":{"type":"string"},"targetValue":{"type":"integer","format":"int32"}}},"ComputeDeploymentDto":{"type":"object","properties":{"uuid":{"type":"string"},"applicationUuid":{"type":"string"},"environmentName":{"type":"string"},"imageSource":{"$ref":"#/components/schemas/ImageSourceDto"},"imageTag":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourceConfigurationDto"},"loadBalancerMode":{"type":"string"},"zoneConfigurations":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentZoneConfigurationDto"}},"containerPort":{"type":"integer","format":"int32"},"containerPortOrigin":{"type":"string"},"healthCheck":{"$ref":"#/components/schemas/HealthCheckDto"},"dnsProfile":{"type":"string"},"dnsCustomNameservers":{"type":"array","items":{"type":"string"}},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableDto"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMountDto"}},"network":{"$ref":"#/components/schemas/DeploymentNetworkDto"},"autoscalingEnabled":{"type":"boolean"},"autoscalingTargets":{"type":"array","items":{"$ref":"#/components/schemas/AutoscalingTargetDto"}},"terminationGracePeriodSeconds":{"type":"integer","format":"int32"},"stopped":{"type":"boolean"},"billingSuspended":{"type":"boolean"},"imageResolutionError":{"type":"string"},"currentRollout":{"$ref":"#/components/schemas/RolloutDto"},"rolloutHistory":{"type":"array","items":{"$ref":"#/components/schemas/RolloutDto"}},"availableTags":{"type":"array","items":{"type":"string"}},"configurationWarnings":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"DeploymentNetworkDto":{"type":"object","properties":{"tenantNetworkName":{"type":"string"},"internalDnsName":{"type":"string"},"externalRoute":{"$ref":"#/components/schemas/ExternalRouteDto"}}},"DeploymentZoneConfigurationDto":{"type":"object","properties":{"zoneId":{"type":"string"},"zoneName":{"type":"string"},"min":{"type":"integer","format":"int32"},"max":{"type":"integer","format":"int32"}}},"EnvironmentVariableDto":{"type":"object","properties":{"name":{"type":"string"},"source":{"type":"string"},"value":{"type":"string"},"credentialId":{"type":"string"},"credentialField":{"type":"string"}}},"ExternalRouteDto":{"type":"object","properties":{"hostname":{"type":"string"},"cloudgateUuid":{"type":"string"}}},"HealthCheckDto":{"type":"object","properties":{"type":{"type":"string"},"path":{"type":"string"},"port":{"type":"integer","format":"int32"},"image":{"$ref":"#/components/schemas/ImageHealthcheckDto"}}},"ImageHealthcheckDto":{"type":"object","properties":{"test":{"type":"array","items":{"type":"string"}},"runnable":{"type":"boolean"},"intervalSeconds":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"startPeriodSeconds":{"type":"integer","format":"int32"},"retries":{"type":"integer","format":"int32"}}},"ImageSourceDto":{"type":"object","properties":{"type":{"type":"string"},"repositoryName":{"type":"string"},"host":{"type":"string"},"port":{"type":"integer","format":"int32"},"repository":{"type":"string"},"secure":{"type":"boolean"},"repositoryUrl":{"type":"string"},"credentialId":{"type":"string"}}},"ResourceConfigurationDto":{"type":"object","properties":{"memoryMb":{"type":"integer","format":"int32"},"cpuMillis":{"type":"integer","format":"int32"},"cpuClass":{"type":"string"},"customSize":{"type":"boolean"}}},"RolloutDto":{"type":"object","properties":{"id":{"type":"string"},"fromTag":{"type":"string"},"toTag":{"type":"string"},"fromResources":{"$ref":"#/components/schemas/ResourceConfigurationDto"},"toResources":{"$ref":"#/components/schemas/ResourceConfigurationDto"},"status":{"type":"string"},"startedAt":{"type":"string","format":"date-time"},"finishedAt":{"type":"string","format":"date-time"}}},"VolumeMountDto":{"type":"object","properties":{"volumeId":{"type":"string"},"mountPath":{"type":"string"},"readOnly":{"type":"boolean"}}},"SetLoadBalancerModeRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["ROUND_ROBIN","LEAST_CONNECTIONS","STICKY_SESSION","FULL_AWARE"]}}},"SetHealthCheckRequest":{"type":"object","properties":{"type":{"type":"string"},"path":{"type":"string"},"port":{"type":"integer","format":"int32"}}},"SetExternalRouteRequest":{"type":"object","properties":{"hostname":{"type":"string"},"cloudgateUuid":{"type":"string"}}},"SetEnvironmentVariablesRequest":{"type":"object","properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/Variable"}}}},"Variable":{"type":"object","properties":{"name":{"type":"string"},"source":{"type":"string"},"value":{"type":"string"},"credentialId":{"type":"string"},"credentialField":{"type":"string"}}},"SetDeploymentDnsRequest":{"type":"object","properties":{"profile":{"type":"string","enum":["EU","US","CUSTOM"]},"customNameservers":{"type":"array","items":{"type":"string"}},"profileOrNull":{"type":"string","enum":["EU","US","CUSTOM"]}}},"SetContainerPortRequest":{"type":"object","properties":{"containerPort":{"type":"integer","format":"int32"}}},"SetAutoscalingRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"terminationGracePeriodSeconds":{"type":"integer","format":"int32"},"targets":{"type":"array","items":{"$ref":"#/components/schemas/TargetRequest"}}}},"TargetRequest":{"type":"object","properties":{"metric":{"type":"string","enum":["CPU","MEMORY","REQUEST_RATE"]},"targetValue":{"type":"integer","format":"int32"}}},"RenameGatewayRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"GatewayDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"subdomainSlug":{"type":"string"},"fqdn":{"type":"string"},"ipv4s":{"type":"array","items":{"type":"string"}},"status":{"type":"string"}}},"HealthCheckConfig":{"type":"object","properties":{"enabled":{"type":"boolean"},"url":{"type":"string"}}},"UpdateRouteRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"protocol":{"type":"string","enum":["TCP","UDP","TCP_AND_UDP"]},"loadBalancingMode":{"type":"string","enum":["RANDOM","BEST_CONNECTION"]},"healthCheck":{"$ref":"#/components/schemas/HealthCheckConfig"},"targetType":{"type":"string","enum":["CLOUD_VOLUME_SFTP","CLOUD_VOLUME_WEBDAV","CLOUD_STREAMS","AI_INVOKE","OBJECT_STORAGE_BUCKET","VECTOR_DB_COLLECTION","VIRTUAL_MACHINE","CLOUD_COMPUTE_APPLICATION"]},"targetResourceUuid":{"type":"string","format":"uuid"},"targetPort":{"type":"integer","format":"int32"},"webDomain":{"type":"string"}}},"RouteDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"gatewayUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"publicPort":{"type":"integer","format":"int32"},"protocol":{"type":"string"},"targetType":{"type":"string"},"targetResourceUuid":{"type":"string","format":"uuid"},"targetResourceName":{"type":"string"},"targetPort":{"type":"integer","format":"int32"},"loadBalancingMode":{"type":"string"},"healthCheck":{"$ref":"#/components/schemas/HealthCheckConfig"},"webDomain":{"type":"string"},"webUrl":{"type":"string"},"certStatus":{"type":"string"},"certMode":{"type":"string"},"certExpiresAt":{"type":"string","format":"date-time"}}},"LimitRequest":{"type":"object","properties":{"hardLimitEur":{"type":"number"},"softLimitEur":{"type":"number"}},"required":["hardLimitEur","softLimitEur"]},"BillingLimit":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"serviceType":{"type":"string","enum":["AI_INVOKE","AI_TRAINING_STORAGE","VECTORDB_STORAGE","VECTORDB_SEARCH","VECTORDB_WRITE","OBJECT_STORAGE_STORAGE","VOLUMES_STORAGE","VOLUMES_TRAFFIC_OUT","VOLUMES_MIRROR_REPLICA","VOLUMES_BACKUP_STORAGE","VOLUMES_BACKUP_OPERATION","CLOUDGATE_BASE","CLOUDGATE_BASE_DEDICATED","CLOUDGATE_TRAFFIC_OUT","CLOUDGATE_TRAFFIC_IN","CLOUDGATE_ROUTE","COMPUTE_VCPU_LC1","COMPUTE_VCPU_LC2","COMPUTE_VCPU_LC3","COMPUTE_VCPU_MC1","COMPUTE_VCPU_MC2","COMPUTE_VCPU_MC3","COMPUTE_VCPU_HC1","COMPUTE_RAM","COMPUTE_IMAGE_STORAGE","VM_VCPU_LC1","VM_VCPU_LC2","VM_VCPU_LC3","VM_VCPU_MC1","VM_VCPU_MC2","VM_VCPU_MC3","VM_VCPU_HC1","VM_RAM","VM_BOOT_STORAGE","VM_BOOT_MIRROR_REPLICA","REGISTRY_STORAGE","DOMAIN_REGISTER","DOMAIN_RENEW","DOMAIN_TRANSFER","DOMAIN_RESTORE","WATCH_SEAT","WATCH_ALERT","TENANT_NETWORK_BASE"]},"monthlySoftLimitEur":{"type":"number"},"monthlyHardLimitEur":{"type":"number"}}},"AutoRechargeRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"thresholdEur":{"type":"number"},"amountEur":{"type":"number"}},"required":["amountEur","thresholdEur"]},"AutoRechargeConfig":{"type":"object","properties":{"enabled":{"type":"boolean"},"thresholdEur":{"type":"number"},"amountEur":{"type":"number"},"hasPaymentMethod":{"type":"boolean"},"pendingCheckoutUrl":{"type":"string"}}},"BillingProfileRequest":{"type":"object","properties":{"vatId":{"type":"string"},"contactFirstName":{"type":"string","minLength":1},"contactLastName":{"type":"string","minLength":1},"address":{"$ref":"#/components/schemas/PostalAddress"}},"required":["address"]},"ApiKeyRenameRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"ApiKeyDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"prefix":{"type":"string"},"permissions":{"type":"array","items":{"type":"string","enum":["PROJECT_VIEW","PROJECT_UPDATE","PROJECT_DELETE","PROJECT_TRANSFER","MEMBER_VIEW","MEMBER_INVITE","MEMBER_REMOVE","MEMBER_ROLE_ASSIGN","ROLE_VIEW","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","INVITATION_VIEW","INVITATION_CREATE","INVITATION_REVOKE","API_KEY_VIEW","API_KEY_CREATE","API_KEY_UPDATE","API_KEY_DELETE","BILLING_VIEW","BILLING_LIMIT_VIEW","BILLING_LIMIT_SET","BILLING_PAYMENT_METHOD_UPDATE","INVOICE_VIEW","INVOICE_DOWNLOAD","AI_VIEW","AI_DEPLOY","AI_UPDATE","AI_DELETE","AI_TRAINING_EDIT","AI_INVOKE","NOTIFICATION_CONFIG_VIEW","NOTIFICATION_CONFIG_UPDATE","CREDENTIAL_VIEW","CREDENTIAL_CREATE","CREDENTIAL_UPDATE","CREDENTIAL_DELETE","CREDENTIAL_USE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","CLOUDGATE_VIEW","CLOUDGATE_CREATE","CLOUDGATE_UPDATE","CLOUDGATE_DELETE","CLOUDGATE_ROUTE_VIEW","CLOUDGATE_ROUTE_MANAGE","VM_VIEW","VM_CREATE","VM_UPDATE","VM_DELETE","VM_CONSOLE","APPLICATION_VIEW","APPLICATION_CREATE","APPLICATION_UPDATE","APPLICATION_DELETE","APPLICATION_VERSION_CREATE","APPLICATION_CONSOLE","APPLICATION_SHELL","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true},"createdByUuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","format":"date-time"},"revoked":{"type":"boolean"}}},"ApiKeyPermissionsRequest":{"type":"object","properties":{"permissions":{"type":"array","items":{"type":"string","enum":["PROJECT_VIEW","PROJECT_UPDATE","PROJECT_DELETE","PROJECT_TRANSFER","MEMBER_VIEW","MEMBER_INVITE","MEMBER_REMOVE","MEMBER_ROLE_ASSIGN","ROLE_VIEW","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","INVITATION_VIEW","INVITATION_CREATE","INVITATION_REVOKE","API_KEY_VIEW","API_KEY_CREATE","API_KEY_UPDATE","API_KEY_DELETE","BILLING_VIEW","BILLING_LIMIT_VIEW","BILLING_LIMIT_SET","BILLING_PAYMENT_METHOD_UPDATE","INVOICE_VIEW","INVOICE_DOWNLOAD","AI_VIEW","AI_DEPLOY","AI_UPDATE","AI_DELETE","AI_TRAINING_EDIT","AI_INVOKE","NOTIFICATION_CONFIG_VIEW","NOTIFICATION_CONFIG_UPDATE","CREDENTIAL_VIEW","CREDENTIAL_CREATE","CREDENTIAL_UPDATE","CREDENTIAL_DELETE","CREDENTIAL_USE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","CLOUDGATE_VIEW","CLOUDGATE_CREATE","CLOUDGATE_UPDATE","CLOUDGATE_DELETE","CLOUDGATE_ROUTE_VIEW","CLOUDGATE_ROUTE_MANAGE","VM_VIEW","VM_CREATE","VM_UPDATE","VM_DELETE","VM_CONSOLE","APPLICATION_VIEW","APPLICATION_CREATE","APPLICATION_UPDATE","APPLICATION_DELETE","APPLICATION_VERSION_CREATE","APPLICATION_CONSOLE","APPLICATION_SHELL","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true}},"required":["permissions"]},"RenameRequestDto":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"DeployedAi":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["TEXT_CLASSIFICATION","IMAGE_CLASSIFICATION"]},"updatedAt":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"}}},"TrainingRequestDto":{"type":"object","properties":{"label":{"type":"string","minLength":1},"payload":{"type":"string","minLength":1}}},"TrainingEntry":{"type":"object","properties":{"payload":{"type":"string"},"label":{"type":"string"},"uuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"deployedAiUuid":{"type":"string","format":"uuid"}}},"OnboardingRequest":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"acceptedLegal":{"type":"boolean"},"campaignCode":{"type":"string"}}},"OnboardingStatusDto":{"type":"object","properties":{"onboardingCompleted":{"type":"boolean"},"companyName":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"signupCampaignCode":{"type":"string"}}},"LegalAcceptResultDto":{"type":"object","properties":{"legalVersion":{"type":"string"},"requiresLegalReAccept":{"type":"boolean"}}},"ReactionRequest":{"type":"object","properties":{"emoji":{"type":"string","enum":["THUMBS_UP","HEART","LAUGH","WOW","CELEBRATE"]}},"required":["emoji"]},"ReactionToggleResponseDto":{"type":"object","properties":{"myReaction":{"type":"string","enum":["THUMBS_UP","HEART","LAUGH","WOW","CELEBRATE"]},"reactionCounts":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}},"UpdateAccountRequest":{"type":"object","properties":{"displayName":{"type":"string"}}},"AccountProfileRequest":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}},"UpdateLocaleRequest":{"type":"object","properties":{"locale":{"type":"string"}}},"CreateGatewayRequestV2":{"type":"object","properties":{"name":{"type":"string","minLength":1},"type":{"type":"string","enum":["SHARED","DEDICATED"]},"region":{"type":"string"}}},"CreateRouteRequestV2":{"type":"object","properties":{"name":{"type":"string","minLength":1},"targetType":{"type":"string","enum":["CLOUD_VOLUME_SFTP","CLOUD_VOLUME_WEBDAV","CLOUD_STREAMS","AI_INVOKE","OBJECT_STORAGE_BUCKET","VECTOR_DB_COLLECTION","VIRTUAL_MACHINE","CLOUD_COMPUTE_APPLICATION"]},"targetResourceUuid":{"type":"string","format":"uuid"},"targetPort":{"type":"integer","format":"int32"},"publicPort":{"type":"integer","format":"int32"},"publicPortEnd":{"type":"integer","format":"int32"},"proxyProtocol":{"type":"boolean"},"webDomain":{"type":"string"}},"required":["targetType"]},"LandRequest":{"type":"object","properties":{"repository":{"type":"string"},"ref":{"type":"string"},"utmSource":{"type":"string"}}},"EventDto":{"type":"object","properties":{"eventUuid":{"type":"string","format":"uuid"},"repository":{"type":"string"},"referralAccountUuid":{"type":"string","format":"uuid"}}},"LookingGlassCheckRequestDto":{"type":"object","properties":{"type":{"type":"string","enum":["self","remote-ip"],"writeOnly":true},"target":{"type":"string","writeOnly":true},"region":{"type":"string","writeOnly":true}}},"ProjectCreateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"CreateVolumeRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"capacityBytes":{"type":"integer","format":"int64"},"primarySite":{"type":"string"},"mirrorSites":{"type":"array","items":{"type":"string"}},"encryptionCredentialUuid":{"type":"string","format":"uuid"},"byokKeyBase64":{"type":"string"},"encryptionKeyName":{"type":"string"},"billingMode":{"type":"string","enum":["PER_MINUTE","PER_DAY"]},"region":{"type":"string"}}},"CreateUserRequest":{"type":"object","properties":{"username":{"type":"string","minLength":1},"password":{"type":"string"},"credentialUuid":{"type":"string","format":"uuid"},"permissions":{"$ref":"#/components/schemas/PermissionRequest"}},"required":["permissions"]},"FileEntry":{"type":"object","properties":{"name":{"type":"string"},"directory":{"type":"boolean"},"size":{"type":"integer","format":"int64"},"lastModified":{"type":"string","format":"date-time"}}},"CreateBackupRequest":{"type":"object","properties":{"label":{"type":"string"}}},"CreateVirtualMachineRequestDto":{"type":"object","properties":{"name":{"type":"string","minLength":1},"vcpuClass":{"type":"string","enum":["LC1","LC2","LC3","MC1","MC2","MC3","HC1"]},"vcpuCount":{"type":"integer","format":"int32","minimum":1},"ramBytes":{"type":"integer","format":"int64","minimum":1},"bootDiskCapacityBytes":{"type":"integer","format":"int64"},"bootDiskPrimarySite":{"type":"string"},"region":{"type":"string"},"bootDiskMirrorSites":{"type":"array","items":{"type":"string"}},"dataVolumeUuids":{"type":"array","items":{"type":"string","format":"uuid"}},"imageType":{"type":"string","enum":["LINUX_UBUNTU_22_04","LINUX_UBUNTU_24_04","LINUX_DEBIAN_12","LINUX_ALPINE_3_19","CUSTOM_QCOW2"]},"customImageUrl":{"type":"string"},"sshCredentialUuid":{"type":"string","format":"uuid"},"encryptionCredentialUuid":{"type":"string","format":"uuid"},"billingMode":{"type":"string","enum":["PER_MINUTE","PER_DAY"]},"bootFirmware":{"type":"string","enum":["BIOS","UEFI"]},"userCloudInitUserData":{"type":"string","maxLength":60000,"minLength":0},"userCloudInitNetworkData":{"type":"string","maxLength":60000,"minLength":0},"cloudInitMode":{"type":"string","enum":["MERGE","REPLACE"]}},"required":["imageType","vcpuClass"]},"CreateBackupRequestDto":{"type":"object","properties":{"label":{"type":"string"}}},"TransferRequest":{"type":"object","properties":{"newOwnerUuid":{"type":"string","format":"uuid"},"confirmName":{"type":"string"}},"required":["newOwnerUuid"]},"RoleCreateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"permissions":{"type":"array","items":{"type":"string","enum":["PROJECT_VIEW","PROJECT_UPDATE","PROJECT_DELETE","PROJECT_TRANSFER","MEMBER_VIEW","MEMBER_INVITE","MEMBER_REMOVE","MEMBER_ROLE_ASSIGN","ROLE_VIEW","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","INVITATION_VIEW","INVITATION_CREATE","INVITATION_REVOKE","API_KEY_VIEW","API_KEY_CREATE","API_KEY_UPDATE","API_KEY_DELETE","BILLING_VIEW","BILLING_LIMIT_VIEW","BILLING_LIMIT_SET","BILLING_PAYMENT_METHOD_UPDATE","INVOICE_VIEW","INVOICE_DOWNLOAD","AI_VIEW","AI_DEPLOY","AI_UPDATE","AI_DELETE","AI_TRAINING_EDIT","AI_INVOKE","NOTIFICATION_CONFIG_VIEW","NOTIFICATION_CONFIG_UPDATE","CREDENTIAL_VIEW","CREDENTIAL_CREATE","CREDENTIAL_UPDATE","CREDENTIAL_DELETE","CREDENTIAL_USE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","CLOUDGATE_VIEW","CLOUDGATE_CREATE","CLOUDGATE_UPDATE","CLOUDGATE_DELETE","CLOUDGATE_ROUTE_VIEW","CLOUDGATE_ROUTE_MANAGE","VM_VIEW","VM_CREATE","VM_UPDATE","VM_DELETE","VM_CONSOLE","APPLICATION_VIEW","APPLICATION_CREATE","APPLICATION_UPDATE","APPLICATION_DELETE","APPLICATION_VERSION_CREATE","APPLICATION_CONSOLE","APPLICATION_SHELL","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true}},"required":["permissions"]},"RegistryRobotCreateRequest":{"type":"object","properties":{"name":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._-]{0,62}[a-z0-9]$"},"scopes":{"type":"array","items":{"type":"string","enum":["PULL","PUSH","DELETE"]},"minItems":1,"uniqueItems":true},"notes":{"type":"string","maxLength":280,"minLength":0}}},"RobotCreatedDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"dockerUsername":{"type":"string"},"password":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["PULL","PUSH","DELETE"]},"uniqueItems":true},"createdAt":{"type":"string","format":"date-time"}}},"CreateTenantNetworkRequestDto":{"type":"object","properties":{"name":{"type":"string","minLength":1},"cidr":{"type":"string"},"region":{"type":"string"}}},"AttachRequestDto":{"type":"object","properties":{"vmUuid":{"type":"string","format":"uuid"}},"required":["vmUuid"]},"AttachmentDto":{"type":"object","properties":{"networkUuid":{"type":"string","format":"uuid"},"vmUuid":{"type":"string","format":"uuid"},"restartRequired":{"type":"boolean"},"networkState":{"type":"string","enum":["PENDING","READY","FAILED"]}}},"BulkAttachRequestDto":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/Member"},"minItems":1}}},"Member":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["VM","APP"]}},"required":["uuid"]},"BulkAttachmentResultDto":{"type":"object","properties":{"resourceUuid":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["VM","APP"]},"attached":{"type":"boolean"},"restartRequired":{"type":"boolean"},"error":{"type":"string"}}},"InvitationCreateRequest":{"type":"object","properties":{"roleUuid":{"type":"string","format":"uuid"},"email":{"type":"string"}},"required":["email","roleUuid"]},"InvitationDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"roleUuid":{"type":"string","format":"uuid"},"inviteeEmail":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}}},"RegisterRequest":{"type":"object","properties":{"domain":{"type":"string","minLength":1},"years":{"type":"integer","format":"int32","maximum":10,"minimum":1},"autoRenew":{"type":"boolean"},"privacyProtection":{"type":"boolean"}}},"DomainDto":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"registryStatus":{"type":"string"},"autoRenew":{"type":"boolean"},"expiresAt":{"type":"string","format":"date-time"},"nameservers":{"type":"array","items":{"type":"string"}},"delegatedToCloudgate":{"type":"boolean"},"parked":{"type":"boolean"}}},"RenewRequest":{"type":"object","properties":{"years":{"type":"integer","format":"int32","maximum":10,"minimum":1}}},"TransferInRequest":{"type":"object","properties":{"domain":{"type":"string","minLength":1},"authCode":{"type":"string"},"autoRenew":{"type":"boolean"},"privacyProtection":{"type":"boolean"}}},"CredentialCreateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"type":{"type":"string","enum":["API_TOKEN","USERNAME_PASSWORD","SSH_KEY","ENCRYPTION_KEY","OTHER"]},"username":{"type":"string"},"secret":{"type":"string","minLength":1},"expiresAt":{"type":"string","format":"date-time"},"notes":{"type":"string"}},"required":["type"]},"RevokeResult":{"type":"object","properties":{"product":{"type":"string","enum":["VOLUMES","VM","AI","CLOUDGATE","DOMAINS","REGISTRY","COMPUTE"]},"deletedServices":{"type":"integer","format":"int32"},"failedServices":{"type":"integer","format":"int32"},"fullyClean":{"type":"boolean"}}},"AcceptanceStatus":{"type":"object","properties":{"contractId":{"type":"string","format":"uuid"},"slug":{"type":"string"},"title":{"type":"string"},"type":{"type":"string","enum":["GENERAL","PRODUCT"]},"product":{"type":"string","enum":["VOLUMES","VM","AI","CLOUDGATE","DOMAINS","REGISTRY","COMPUTE"]},"currentVersion":{"type":"integer","format":"int32"},"accepted":{"type":"boolean"},"needsReAccept":{"type":"boolean"},"acceptedVersion":{"type":"integer","format":"int32"},"acceptedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["MARKDOWN","PDF"]},"acceptedFileName":{"type":"string"},"acceptedSha256":{"type":"string"},"acceptedMode":{"type":"string","enum":["EXPLICIT","TACIT"]},"objectionDeadline":{"type":"string","format":"date-time"}}},"CreateApplicationRequest":{"type":"object","properties":{"name":{"type":"string"}}},"ComputeApplicationDto":{"type":"object","properties":{"uuid":{"type":"string"},"projectUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"environments":{"type":"array","items":{"$ref":"#/components/schemas/ComputeEnvironmentDto"}},"activeEnvironmentName":{"type":"string"},"primaryEnvironmentName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ComputeEnvironmentDto":{"type":"object","properties":{"name":{"type":"string"},"locked":{"type":"boolean"},"primary":{"type":"boolean"},"deploymentCount":{"type":"integer","format":"int32"}}},"CreateUpdateRequest":{"type":"object","properties":{"fromEnvironmentName":{"type":"string"},"toEnvironmentName":{"type":"string"},"note":{"type":"string"}}},"ComputeUpdateChangeDto":{"type":"object","properties":{"deploymentName":{"type":"string"},"type":{"type":"string"},"previousTag":{"type":"string"},"targetTag":{"type":"string"},"previousResources":{"$ref":"#/components/schemas/ResourceConfigurationDto"},"targetResources":{"$ref":"#/components/schemas/ResourceConfigurationDto"}}},"ComputeUpdateDto":{"type":"object","properties":{"uuid":{"type":"string"},"applicationUuid":{"type":"string"},"fromEnvironmentName":{"type":"string"},"toEnvironmentName":{"type":"string"},"status":{"type":"string"},"note":{"type":"string"},"changes":{"type":"array","items":{"$ref":"#/components/schemas/ComputeUpdateChangeDto"}},"createdAt":{"type":"string","format":"date-time"},"appliedAt":{"type":"string","format":"date-time"}}},"CreateEnvironmentRequest":{"type":"object","properties":{"name":{"type":"string"},"baseEnvironmentName":{"type":"string"}}},"AddZoneRequest":{"type":"object","properties":{"zoneId":{"type":"string"},"min":{"type":"integer","format":"int32"},"max":{"type":"integer","format":"int32"},"replicas":{"type":"integer","format":"int32"}}},"CreateOciDeploymentRequest":{"type":"object","properties":{"url":{"type":"string"},"credentialId":{"type":"string"},"tag":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourceConfigurationRequest"},"zone":{"$ref":"#/components/schemas/AddZoneRequest"},"zones":{"type":"array","items":{"$ref":"#/components/schemas/AddZoneRequest"}}}},"ResourceConfigurationRequest":{"type":"object","properties":{"memoryMb":{"type":"integer","format":"int32"},"cpuMillis":{"type":"integer","format":"int32"},"cpuClass":{"type":"string","enum":["LC1","LC2","LC3","MC1","MC2","MC3","HC1"]}}},"CreateGitHubDeploymentRequest":{"type":"object","properties":{"url":{"type":"string"},"credentialId":{"type":"string"},"tag":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourceConfigurationRequest"},"zone":{"$ref":"#/components/schemas/AddZoneRequest"},"zones":{"type":"array","items":{"$ref":"#/components/schemas/AddZoneRequest"}}}},"SendConsoleCommandRequest":{"type":"object","properties":{"command":{"type":"string"}}},"ConsoleCommandResultDto":{"type":"object","properties":{"instanceId":{"type":"string"},"command":{"type":"string"},"sentAt":{"type":"string","format":"date-time"},"hint":{"type":"string"}}},"BuildStatusDto":{"type":"object","properties":{"buildId":{"type":"string"},"status":{"type":"string","enum":["PENDING","RUNNING","SUCCEEDED","FAILED","CANCELLED"]},"trigger":{"type":"string","enum":["PUSH","MANUAL","INITIAL"]},"repositoryName":{"type":"string"},"gitRef":{"type":"string"},"commitSha":{"type":"string"},"imageTag":{"type":"string"},"fullImageName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"finishedAt":{"type":"string","format":"date-time"},"failureReason":{"type":"string"}}},"CreateGatewayRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"CreateRouteRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"targetType":{"type":"string","enum":["CLOUD_VOLUME_SFTP","CLOUD_VOLUME_WEBDAV","CLOUD_STREAMS","AI_INVOKE","OBJECT_STORAGE_BUCKET","VECTOR_DB_COLLECTION","VIRTUAL_MACHINE","CLOUD_COMPUTE_APPLICATION"]},"targetResourceUuid":{"type":"string","format":"uuid"},"targetPort":{"type":"integer","format":"int32"},"protocol":{"type":"string","enum":["TCP","UDP","TCP_AND_UDP"]},"loadBalancingMode":{"type":"string","enum":["RANDOM","BEST_CONNECTION"]},"healthCheck":{"$ref":"#/components/schemas/HealthCheckConfig"},"webDomain":{"type":"string"}},"required":["targetType"]},"TopUpRequest":{"type":"object","properties":{"amountEur":{"type":"number"}},"required":["amountEur"]},"TopUpIntent":{"type":"object","properties":{"paymentIntentId":{"type":"string"},"clientSecret":{"type":"string"},"amountEur":{"type":"number"},"status":{"type":"string"}}},"CheckoutSession":{"type":"object","properties":{"sessionId":{"type":"string"},"clientSecret":{"type":"string"}}},"ApiKeyCreateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"permissions":{"type":"array","items":{"type":"string","enum":["PROJECT_VIEW","PROJECT_UPDATE","PROJECT_DELETE","PROJECT_TRANSFER","MEMBER_VIEW","MEMBER_INVITE","MEMBER_REMOVE","MEMBER_ROLE_ASSIGN","ROLE_VIEW","ROLE_CREATE","ROLE_UPDATE","ROLE_DELETE","INVITATION_VIEW","INVITATION_CREATE","INVITATION_REVOKE","API_KEY_VIEW","API_KEY_CREATE","API_KEY_UPDATE","API_KEY_DELETE","BILLING_VIEW","BILLING_LIMIT_VIEW","BILLING_LIMIT_SET","BILLING_PAYMENT_METHOD_UPDATE","INVOICE_VIEW","INVOICE_DOWNLOAD","AI_VIEW","AI_DEPLOY","AI_UPDATE","AI_DELETE","AI_TRAINING_EDIT","AI_INVOKE","NOTIFICATION_CONFIG_VIEW","NOTIFICATION_CONFIG_UPDATE","CREDENTIAL_VIEW","CREDENTIAL_CREATE","CREDENTIAL_UPDATE","CREDENTIAL_DELETE","CREDENTIAL_USE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","CLOUDGATE_VIEW","CLOUDGATE_CREATE","CLOUDGATE_UPDATE","CLOUDGATE_DELETE","CLOUDGATE_ROUTE_VIEW","CLOUDGATE_ROUTE_MANAGE","VM_VIEW","VM_CREATE","VM_UPDATE","VM_DELETE","VM_CONSOLE","APPLICATION_VIEW","APPLICATION_CREATE","APPLICATION_UPDATE","APPLICATION_DELETE","APPLICATION_VERSION_CREATE","APPLICATION_CONSOLE","APPLICATION_SHELL","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true},"expiresAt":{"type":"string","format":"date-time"}},"required":["permissions"]},"DeployRequestDto":{"type":"object","properties":{"name":{"type":"string","minLength":1},"type":{"type":"string","enum":["TEXT_CLASSIFICATION","IMAGE_CLASSIFICATION"]},"baseModelUuid":{"type":"string","format":"uuid"},"baseModelLabels":{"type":"array","items":{"type":"string"}}},"required":["type"]},"ImportResultDto":{"type":"object","properties":{"imported":{"type":"integer","format":"int32"}}},"InvokeRequestDto":{"type":"object","properties":{"payload":{"type":"string","maxLength":25165824,"minLength":0}}},"AiInvocationResult":{"type":"object","properties":{"label":{"type":"string"},"ranking":{"type":"array","items":{"$ref":"#/components/schemas/LabelScore"}},"confidence":{"type":"number","format":"double"}}},"InvokeResponseDto":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/AiInvocationResult"},"appliedThrottleMs":{"type":"integer","format":"int64"}}},"LabelScore":{"type":"object","properties":{"label":{"type":"string"},"score":{"type":"number","format":"double"}}},"ProvisionRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"vatId":{"type":"string"},"contactFirstName":{"type":"string","minLength":1},"contactLastName":{"type":"string","minLength":1},"address":{"$ref":"#/components/schemas/PostalAddress"},"b2bConfirmed":{"type":"boolean"}},"required":["address"]},"BindUserRequest":{"type":"object","properties":{"newSignup":{"type":"boolean"}}},"BindProjectRequest":{"type":"object","properties":{"projectUuid":{"type":"string","format":"uuid"},"newProject":{"type":"boolean"}}},"BindDeploymentRequest":{"type":"object","properties":{"applicationUuid":{"type":"string","format":"uuid"},"environmentName":{"type":"string"},"deploymentUuid":{"type":"string","format":"uuid"}}},"AffiliateRequest":{"type":"object","properties":{"code":{"type":"string"}}},"AffiliateResultDto":{"type":"object","properties":{"assigned":{"type":"boolean"}}},"CreateCommentRequest":{"type":"object","properties":{"content":{"type":"string","maxLength":3000,"minLength":0}}},"CommentDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"authorDisplayName":{"type":"string"},"authorAvatarUrl":{"type":"string"},"content":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"reactionCounts":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"myReaction":{"type":"string","enum":["THUMBS_UP","HEART","LAUGH","WOW","CELEBRATE"]}}},"JsonNode":{"type":"object"},"RegisterVerifyRequest":{"type":"object","properties":{"label":{"type":"string"},"credential":{"$ref":"#/components/schemas/JsonNode"}}},"CredentialView":{"type":"object","properties":{"uuid":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","format":"date-time"}}},"LoginVerifyRequest":{"type":"object","properties":{"credential":{"$ref":"#/components/schemas/JsonNode"}}},"AccountView":{"type":"object","properties":{"uuid":{"type":"string"},"email":{"type":"string"},"emailVerified":{"type":"boolean"},"onboardingCompleted":{"type":"boolean"}}},"LoginResponse":{"type":"object","properties":{"status":{"type":"string"},"account":{"$ref":"#/components/schemas/AccountView"}}},"VerifyEmailRequest":{"type":"object","properties":{"code":{"type":"string"}}},"SignupRequest":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}}},"ResetPasswordRequest":{"type":"object","properties":{"token":{"type":"string"},"newPassword":{"type":"string"}}},"RequestResetRequest":{"type":"object","properties":{"email":{"type":"string"}}},"LoginRequest":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}}},"RenameApplicationRequest":{"type":"object","properties":{"name":{"type":"string"}}},"EditUpdateRequest":{"type":"object","properties":{"note":{"type":"string"}}},"UpdateDeploymentRequest":{"type":"object","properties":{"tag":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourceConfigurationRequest"}}},"UpdateZoneRequest":{"type":"object","properties":{"min":{"type":"integer","format":"int32"},"max":{"type":"integer","format":"int32"},"replicas":{"type":"integer","format":"int32"}}},"TokenResponse":{"type":"object","properties":{"token":{"type":"string"},"access_token":{"type":"string"},"expires_in":{"type":"integer","format":"int32"},"issued_at":{"type":"string"}}},"GatewayStatsDto":{"type":"object","properties":{"series":{"type":"array","items":{"$ref":"#/components/schemas/MinuteBucket"}},"totalBytesIn60m":{"type":"integer","format":"int64"},"totalBytesOut60m":{"type":"integer","format":"int64"},"totalBytesIn24h":{"type":"integer","format":"int64"},"totalBytesOut24h":{"type":"integer","format":"int64"},"routeCount":{"type":"integer","format":"int64"},"generatedAt":{"type":"string","format":"date-time"}}},"MinuteBucket":{"type":"object","properties":{"minute":{"type":"string","format":"date-time"},"bytesIn":{"type":"integer","format":"int64"},"bytesOut":{"type":"integer","format":"int64"}}},"GatewayLiveDto":{"type":"object","properties":{"totalBytesIn":{"type":"integer","format":"int64"},"totalBytesOut":{"type":"integer","format":"int64"},"generatedAt":{"type":"string","format":"date-time"}}},"RegionCapacityDto":{"type":"object","properties":{"region":{"type":"string"},"available":{"type":"boolean"},"measured":{"type":"boolean"},"reason":{"type":"string"}}},"RegionDto":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"location":{"type":"string"},"countryCode":{"type":"string"}}},"LocaleDto":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"}}},"TldPolicyResponse":{"type":"object","properties":{"defaults":{"$ref":"#/components/schemas/TldPolicyView"},"tlds":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/TldPolicyView"}}}},"TldPolicyView":{"type":"object","properties":{"tld":{"type":"string"},"whoisPrivacy":{"type":"boolean"},"transferLock":{"type":"boolean"},"minNameservers":{"type":"integer","format":"int32"},"maxNameservers":{"type":"integer","format":"int32"},"registrantCountry":{"type":"string"}}},"SearchPage":{"type":"object","properties":{"query":{"type":"string"},"preferredTld":{"type":"string"},"page":{"type":"integer","format":"int32"},"pageSize":{"type":"integer","format":"int32"},"totalPages":{"type":"integer","format":"int32"},"totalTlds":{"type":"integer","format":"int32"},"results":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}},"SearchResult":{"type":"object","properties":{"domain":{"type":"string"},"tld":{"type":"string"},"available":{"type":"boolean"},"premium":{"type":"boolean"},"pricePerYear":{"type":"number","format":"double"},"currency":{"type":"string"},"source":{"type":"string"}}},"ContractSummaryDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"title":{"type":"string"},"type":{"type":"string","enum":["GENERAL","PRODUCT"]},"product":{"type":"string","enum":["VOLUMES","VM","AI","CLOUDGATE","DOMAINS","REGISTRY","COMPUTE"]},"version":{"type":"integer","format":"int32"},"format":{"type":"string","enum":["MARKDOWN","PDF"]}}},"ContractDetailDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"title":{"type":"string"},"type":{"type":"string","enum":["GENERAL","PRODUCT"]},"product":{"type":"string","enum":["VOLUMES","VM","AI","CLOUDGATE","DOMAINS","REGISTRY","COMPUTE"]},"content":{"type":"string"},"version":{"type":"integer","format":"int32"},"subprocessors":{"type":"array","items":{"$ref":"#/components/schemas/SubprocessorDto"}},"format":{"type":"string","enum":["MARKDOWN","PDF"]},"fileName":{"type":"string"},"fileSizeBytes":{"type":"integer","format":"int64"},"fileSha256":{"type":"string"}}},"SubprocessorDto":{"type":"object","properties":{"companyName":{"type":"string"},"activity":{"type":"string"}}},"CampaignPublicView":{"type":"object","properties":{"code":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"startCreditEur":{"type":"number"},"startsAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"available":{"type":"boolean"},"hasImage":{"type":"boolean"},"imageUpdatedAt":{"type":"string","format":"date-time"}}},"BlogAuthorDto":{"type":"object","properties":{"name":{"type":"string"},"avatarUrl":{"type":"string"}}},"BlogPostSummaryDto":{"type":"object","properties":{"slug":{"type":"string"},"language":{"type":"string"},"title":{"type":"string"},"excerpt":{"type":"string"},"coverImageUrl":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"publishedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"author":{"$ref":"#/components/schemas/BlogAuthorDto"},"readingTimeMinutes":{"type":"integer","format":"int32"}}},"PageResponseDtoBlogPostSummaryDto":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/BlogPostSummaryDto"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"}}},"BlogPostDetailDto":{"type":"object","properties":{"slug":{"type":"string"},"language":{"type":"string"},"title":{"type":"string"},"seoTitle":{"type":"string"},"metaDescription":{"type":"string"},"canonicalUrl":{"type":"string"},"ogImageUrl":{"type":"string"},"coverImageUrl":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"bodyMarkdown":{"type":"string"},"publishedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"author":{"$ref":"#/components/schemas/BlogAuthorDto"},"translations":{"type":"array","items":{"$ref":"#/components/schemas/BlogTranslationLinkDto"}},"commentCount":{"type":"integer","format":"int64"},"readingTimeMinutes":{"type":"integer","format":"int32"}}},"BlogTranslationLinkDto":{"type":"object","properties":{"language":{"type":"string"},"slug":{"type":"string"}}},"PageResponseDtoCommentDto":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/CommentDto"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"}}},"DirectoryListing":{"type":"object","properties":{"path":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/FileEntry"}}}},"LonghornBackupInfo":{"type":"object","properties":{"name":{"type":"string"},"state":{"type":"string"},"size":{"type":"integer","format":"int64"},"createdAt":{"type":"string"},"progress":{"type":"string"},"error":{"type":"string"},"kind":{"type":"string"},"region":{"type":"string"}}},"MetricsResponseDto":{"type":"object","properties":{"samples":{"type":"array","items":{"$ref":"#/components/schemas/SamplePointDto"}}}},"SamplePointDto":{"type":"object","properties":{"at":{"type":"string","format":"date-time"},"cpuMilliCores":{"type":"integer","format":"int64"},"memoryBytes":{"type":"integer","format":"int64"},"netRxBytesPerSec":{"type":"integer","format":"int64"},"netTxBytesPerSec":{"type":"integer","format":"int64"},"diskReadBytesPerSec":{"type":"integer","format":"int64"},"diskWriteBytesPerSec":{"type":"integer","format":"int64"}}},"BackupInfo":{"type":"object","properties":{"name":{"type":"string"},"state":{"type":"string"},"size":{"type":"integer","format":"int64"},"region":{"type":"string"},"kind":{"type":"string"},"error":{"type":"string"},"createdAt":{"type":"string"},"progress":{"type":"string"}}},"RobotDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"dockerUsername":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["PULL","PUSH","DELETE"]},"uniqueItems":true},"system":{"type":"boolean"},"notes":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","format":"date-time"}}},"Invoice":{"type":"object","properties":{"number":{"type":"string"},"kind":{"type":"string","enum":["PREPAID_TOPUP"]},"status":{"type":"string","enum":["DRAFT","OPEN","PAID","FAILED","VOID"]},"uuid":{"type":"string","format":"uuid"},"projectUuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"period":{"type":"string","example":"2025-03"},"totalEur":{"type":"number"},"taxEur":{"type":"number"},"paidAt":{"type":"string","format":"date-time"},"stripeInvoiceId":{"type":"string"}}},"InvoicePage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Invoice"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"total":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"}}},"TransferStatus":{"type":"object","properties":{"message":{"type":"string"},"state":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","CANCELLED","FAILED","UNKNOWN"]},"domain":{"type":"string"}}},"AuthCode":{"type":"object","properties":{"domain":{"type":"string"},"code":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"}}},"QuoteDto":{"type":"object","properties":{"domain":{"type":"string"},"operation":{"type":"string"},"years":{"type":"integer","format":"int32"},"sellGross":{"type":"number","format":"double"},"currency":{"type":"string"}}},"AvailabilityDto":{"type":"object","properties":{"domain":{"type":"string"},"available":{"type":"boolean"},"premium":{"type":"boolean"},"sellGross":{"type":"number","format":"double"},"renewSellGross":{"type":"number","format":"double"},"currency":{"type":"string"}}},"PagedResponseCredential":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Credential"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"total":{"type":"integer","format":"int32"},"totalPages":{"type":"integer","format":"int32"}}},"AffectedResource":{"type":"object","properties":{"kind":{"type":"string","enum":["VM","VOLUME","GATEWAY","COMPUTE_APP"]},"name":{"type":"string"}}},"RevokeImpact":{"type":"object","properties":{"product":{"type":"string","enum":["VOLUMES","VM","AI","CLOUDGATE","DOMAINS","REGISTRY","COMPUTE"]},"teardownKinds":{"type":"array","items":{"type":"string","enum":["VM","VOLUME","GATEWAY","COMPUTE_APP"]}},"destructive":{"type":"boolean"},"affected":{"type":"array","items":{"$ref":"#/components/schemas/AffectedResource"}}}},"ComputeDeploymentTargetDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"applicationUuid":{"type":"string","format":"uuid"},"applicationName":{"type":"string"},"environmentName":{"type":"string"},"repositoryName":{"type":"string"},"imageTag":{"type":"string"}}},"ComputeCredentialDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}}},"ComputeApplicationSummaryDto":{"type":"object","properties":{"uuid":{"type":"string"},"projectUuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"environmentCount":{"type":"integer","format":"int32"},"deploymentCount":{"type":"integer","format":"int32"},"instanceCount":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ApplicationInstanceDto":{"type":"object","properties":{"id":{"type":"string"},"podName":{"type":"string"},"deploymentUuid":{"type":"string"},"environmentName":{"type":"string"},"status":{"type":"string"},"zoneId":{"type":"string"},"zoneName":{"type":"string"},"imageTag":{"type":"string"},"host":{"type":"string"},"port":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"}}},"PagedResponseDtoApplicationInstanceDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationInstanceDto"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"total":{"type":"integer","format":"int32"},"totalPages":{"type":"integer","format":"int32"}}},"PodEventDto":{"type":"object","properties":{"type":{"type":"string"},"reason":{"type":"string"},"message":{"type":"string"},"count":{"type":"integer","format":"int32"},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"},"severity":{"type":"string"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"hint":{"type":"string"},"raw":{"type":"string"},"occurrences":{"type":"integer","format":"int32"}}},"ComputeDeploymentSummaryDto":{"type":"object","properties":{"uuid":{"type":"string"},"applicationUuid":{"type":"string"},"environmentName":{"type":"string"},"imageSourceType":{"type":"string"},"repositoryName":{"type":"string"},"imageTag":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourceConfigurationDto"},"loadBalancerMode":{"type":"string"},"instanceCount":{"type":"integer","format":"int32"},"runningInstanceCount":{"type":"integer","format":"int32"},"rolloutStatus":{"type":"string"},"autoscalingEnabled":{"type":"boolean"},"stopped":{"type":"boolean"},"billingSuspended":{"type":"boolean"},"configurationWarnings":{"type":"array","items":{"type":"string"}}}},"ComputeInstanceDto":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"zoneId":{"type":"string"},"zoneName":{"type":"string"},"imageTag":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourceConfigurationDto"},"host":{"type":"string"},"port":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"}}},"InstanceLogsDto":{"type":"object","properties":{"instanceId":{"type":"string"},"podName":{"type":"string"},"content":{"type":"string"},"tailLines":{"type":"integer","format":"int32"}}},"BuildLogsDto":{"type":"object","properties":{"buildId":{"type":"string"},"content":{"type":"string"}}},"SavedPaymentMethod":{"type":"object","properties":{"paymentMethodId":{"type":"string"},"brand":{"type":"string"},"last4":{"type":"string"},"expMonth":{"type":"integer","format":"int32"},"expYear":{"type":"integer","format":"int32"}}},"BillingProfileDto":{"type":"object","properties":{"companyName":{"type":"string"},"vatId":{"type":"string"},"contactFirstName":{"type":"string"},"contactLastName":{"type":"string"},"address":{"$ref":"#/components/schemas/PostalAddress"}}},"TrainingPageDto":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/TrainingEntry"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"}}},"ProjectIdentityDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"ComputeVcpuPricing":{"type":"object","properties":{"lc1":{"type":"number"},"lc2":{"type":"number"},"lc3":{"type":"number"},"mc1":{"type":"number"},"mc2":{"type":"number"},"mc3":{"type":"number"},"hc1":{"type":"number"}}},"PricingDto":{"type":"object","properties":{"aiInferenceEurPerTokenGb":{"type":"number"},"aiTrainingDataEurPerGb":{"type":"number"},"vectordbStorageEurPerGbMonth":{"type":"number"},"vectordbSearchEurPerQuery":{"type":"number"},"vectordbWriteEurPerQuery":{"type":"number"},"objectStorageEurPerGbMonth":{"type":"number"},"volumesStorageEurPerGbMonth":{"type":"number"},"volumesBackupStorageEurPerGbMonth":{"type":"number"},"volumesTrafficOutEurPerGb":{"type":"number"},"volumesMirrorReplicaEurPerGbMonth":{"type":"number"},"cloudgateBaseEurPerMonth":{"type":"number"},"cloudgateDedicatedBaseEurPerMonth":{"type":"number"},"cloudgateDedicatedIpEurPerMonth":{"type":"number"},"cloudgateSharedIpEurPerMonth":{"type":"number"},"cloudgateRoutePortEurPerMonth":{"type":"number"},"cloudgateTrafficOutEurPerGb":{"type":"number"},"cloudgateTrafficInEurPerGb":{"type":"number"},"computeRamEurPerGbMonth":{"type":"number"},"computeImageEurPerGbMonth":{"type":"number"},"computeVcpu":{"$ref":"#/components/schemas/ComputeVcpuPricing"},"vmRamEurPerGbMonth":{"type":"number"},"vmBootStorageEurPerGbMonth":{"type":"number"},"vmBootMirrorReplicaEurPerGbMonth":{"type":"number"},"vmVcpu":{"$ref":"#/components/schemas/ComputeVcpuPricing"},"instancePerMinuteMultiplier":{"type":"number"},"instancePerDayMultiplier":{"type":"number"},"signupCreditEur":{"type":"number"},"taxRate":{"type":"number"},"currency":{"type":"string"}}},"VerifiedDto":{"type":"object","properties":{"verified":{"type":"boolean"}}},"EligibleProjectDto":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"MyLimitsDto":{"type":"object","properties":{"maxVcpus":{"type":"integer","format":"int32"},"maxRamBytes":{"type":"integer","format":"int64"},"maxStorageBytes":{"type":"integer","format":"int64"},"maxDedicatedIps":{"type":"integer","format":"int32"},"maxGatewayMbps":{"type":"integer","format":"int32"},"currentVcpus":{"type":"integer","format":"int32"},"currentRamBytes":{"type":"integer","format":"int64"},"currentStorageBytes":{"type":"integer","format":"int64"},"currentVolumeBytes":{"type":"integer","format":"int64"},"currentBucketBytes":{"type":"integer","format":"int64"},"currentVectorBytes":{"type":"integer","format":"int64"},"currentAiTrainingBytes":{"type":"integer","format":"int64"}}},"ComputeZoneDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"ComputeSizeCatalogDto":{"type":"object","properties":{"cpuClasses":{"type":"array","items":{"$ref":"#/components/schemas/CpuClassDto"}},"cpuMillisSteps":{"type":"array","items":{"type":"integer","format":"int32"}},"memoryMbSteps":{"type":"array","items":{"type":"integer","format":"int32"}}}},"CpuClassDto":{"type":"object","properties":{"name":{"type":"string"},"baseGhz":{"type":"number","format":"double"}}},"BaseAi":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["TEXT_CLASSIFICATION","IMAGE_CLASSIFICATION"]},"description":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","description":"API key auth: header X-API-Key or Authorization: Bearer ds_<secret>","name":"X-API-Key","in":"header"}}}}