-
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) · 141 KB
/
Copy pathopenapi-spec.json
File metadata and controls
1 lines (1 loc) · 141 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":"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 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 Keys","description":"Manage the API keys of a project"},{"name":"AI Base Models","description":"Cluster-wide base models (read-only for customers)."},{"name":"Billing","description":"Billing, limits, prepaid"},{"name":"Credentials","description":"Credentials vault: API tokens, SSH keys, passwords and encryption keys with expiry dates."},{"name":"Tenant Networks","description":"Self-service virtuelle Netzwerke (VLAN/VPC) mit eigener VXLAN-VNI + IPAM. Feature-flag-gated (cloud.networks.enabled)."},{"name":"Data-Plane: AI","description":"OpenAI-compatible invocation via the cloud gateway."},{"name":"Onboarding","description":"Profile setup + campaign affiliate tracking"},{"name":"Pricing","description":"Current price catalog of all cloud products (gross, EUR)."},{"name":"Stats","description":"Resource counters for skeleton sizing"},{"name":"i18n","description":"Public translation catalogs"},{"name":"Cloud Gateways","description":"Host-independent public endpoints for cloud resources. Routes bind TCP+UDP ports to specific resources (volume, bucket, collection, ...)."},{"name":"Public Campaigns","description":"Anonymous lookups for the cookie banner"},{"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":"Artificial Intelligence","description":"AIs deployed per project: text and image classifiers with embedded training data."},{"name":"Notifications","description":"Notification recipients per category"},{"name":"Roles","description":"Manage roles & permissions"},{"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":"Volume Backups","description":"Incremental backups per volume (self-service)."},{"name":"Me – Limits","description":"Own resource limits + current usage."},{"name":"Volume Snapshots","description":"Longhorn snapshot management for customer recovery use cases."},{"name":"Cloud Volumes","description":"Encrypted block volumes via Longhorn, with optional SFTP access through the gateway."},{"name":"Stripe Webhook","description":"Stripe event reception"},{"name":"Cloud Volumes — File Browser","description":"Web file browser for a Cloud Volume. No gateway needed; the forwarding layer talks internally to the volumes-sftp pod that has the PVCs mounted."}],"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}/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/UpdateRequest"}}},"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}/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/ResizeRequest"}}},"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 the mounted data volumes (the VM must be stopped)","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/UpdateDataVolumesRequest"}}},"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/UpdateBootReplicationRequest"}}},"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/ScheduleRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}}},"/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/RenameRequest"}}},"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/PermissionsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Role"}}}}}}},"/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}/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_1","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/UpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Credential"}}}}}},"delete":{"tags":["Credentials"],"summary":"Delete a credential","operationId":"delete_3","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}/cloudgates/{gatewayUuid}":{"get":{"tags":["Cloud Gateways"],"operationId":"get_3","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_4","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"]}}],"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/RenameRequest"}}},"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/PermissionsRequest"}}},"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/RenameRequest"}}},"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_5","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/TrainingRequest"}}},"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/account":{"put":{"tags":["Account"],"summary":"Edit your own account (display name). Email = Google identity, not changeable.","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":{"put":{"tags":["Account"],"summary":"Change the personal address of your own account (NOT the billing address — that is per project)","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"}}}}}}},"/data/v1/ai/v1/chat/completions":{"post":{"tags":["Data-Plane: AI"],"summary":"Classification (OpenAI Chat Completions compatible)","operationId":"chatCompletion","parameters":[{"name":"X-Cloudgate-Target-Resource","in":"header","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cloudgate-Route","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}}}}},"/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/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/CheckRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/v1/projects":{"get":{"tags":["Cloud Projects"],"summary":"All projects of the user","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/CreateRequest"}}},"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}/snapshots":{"get":{"tags":["Volume Snapshots"],"summary":"List the snapshots 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/SnapshotInfo"}}}}}}},"post":{"tags":["Volume Snapshots"],"summary":"Create a manual snapshot (e.g. before a risky operation)","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/CreateSnapshotRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/v1/projects/{projectUuid}/volumes/{volumeUuid}/snapshots/{snapshotName}/restore":{"post":{"tags":["Volume Snapshots"],"summary":"In-place revert to a snapshot — the volume is briefly unavailable","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":"snapshotName","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/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_4","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/BackupInfo"}}}}}}},"post":{"tags":["Volume Backups"],"summary":"Create an incremental backup","operationId":"create_4","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_1","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_5","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_5","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequest"}}},"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","operationId":"list_6","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_6","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/CreateBackupRequest"}}}},"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_2","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","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"}}}},"/api/v1/projects/{projectUuid}/roles":{"get":{"tags":["Roles"],"summary":"All roles of the project","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/Role"}}}}}}},"post":{"tags":["Roles"],"summary":"Create a role","operationId":"create_7","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequest"}}},"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}/networks":{"get":{"tags":["Tenant Networks"],"summary":"Netzwerke des Projekts auflisten","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":"Ein Netzwerk anlegen","operationId":"create_8","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TenantNetworkDto"}}}}}}},"/api/v1/projects/{projectUuid}/networks/{networkUuid}/attachments":{"get":{"tags":["Tenant Networks"],"summary":"Angehaengte VMs eines Netzwerks auflisten","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":"Eine VM in das Netzwerk haengen (MOVE-Semantik)","description":"Eine VM ist in HOECHSTENS einem Netz. Haengt die VM schon in einem anderen Netz, wird sie dorthin VERSCHOBEN (erst aus dem alten getrennt, dann ins neue gehaengt) — danach ist sie in genau diesem Netz. Idempotent, wenn sie schon hier haengt. Doppelter IDOR-Guard (Netz UND VM muessen zum Pfad-Projekt gehoeren). KubeVirt uebernimmt das geaenderte Secondary-Interface erst beim VMI-Neustart → restartRequired=true signalisiert '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/AttachRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AttachmentDto"}}}}}}},"/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/CreateRequest"}}},"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_3","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/CreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Credential"}}}}}}},"/api/v1/projects/{projectUuid}/cloudgates":{"get":{"tags":["Cloud Gateways"],"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/GatewayDto"}}}}}}},"post":{"tags":["Cloud Gateways"],"operationId":"create_11","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 via the checkout.session.completed webhook.","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/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_13","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_12","parameters":[{"name":"projectUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequest"}}},"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_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/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/DeployRequest"}}},"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/TrainingPage"}}}}}},"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/TrainingRequest"}}},"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/ImportResult"}}}}}}},"/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/InvokeRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvokeResponse"}}}}}}},"/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/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","parameters":[{"name":"invitationUuid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationDto"}}}}}}},"/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/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/public/regions":{"get":{"tags":["Public"],"summary":"Active cloud regions (display source of truth = admin dashboard)","operationId":"list_15","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RegionView"}}}}}}}},"/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/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/projects/{projectUuid}/volumes/{volumeUuid}":{"get":{"tags":["Cloud Volumes"],"operationId":"get_4","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_6","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_16","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_7","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_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":{"$ref":"#/components/schemas/VirtualMachineDto"}}}}}},"delete":{"tags":["Virtual Machines"],"summary":"Delete a VM","operationId":"delete_8","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_6","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/MetricsResponse"}}}}}}},"/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","VECTORDB_VIEW","VECTORDB_COLLECTION_CREATE","VECTORDB_COLLECTION_UPDATE","VECTORDB_COLLECTION_DELETE","VECTORDB_POINTS_READ","VECTORDB_POINTS_WRITE","VECTORDB_SEARCH","OBJECT_STORAGE_VIEW","OBJECT_STORAGE_BUCKET_CREATE","OBJECT_STORAGE_BUCKET_DELETE","OBJECT_STORAGE_BUCKET_CONFIGURE","OBJECT_STORAGE_OBJECT_READ","OBJECT_STORAGE_OBJECT_WRITE","OBJECT_STORAGE_OBJECT_DELETE","OBJECT_STORAGE_CREDENTIAL_MANAGE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","SUPPORT_VIEW","SUPPORT_CREATE","SUPPORT_WRITE","SUPPORT_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","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true}}}}}}},"/api/v1/projects/{projectUuid}/notifications":{"get":{"tags":["Notifications"],"summary":"All notification configurations of the project","operationId":"list_17","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}/networks/{networkUuid}":{"get":{"tags":["Tenant Networks"],"summary":"Netzwerk-Details","operationId":"get_7","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"}}}}}},"delete":{"tags":["Tenant Networks"],"summary":"Ein Netzwerk loeschen","operationId":"delete_9","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}/members":{"get":{"tags":["Members"],"summary":"All members with their roles","operationId":"list_18","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_19","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_8","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}/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"]}}],"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","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CloudProject"}}}}}}},"/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/limits":{"get":{"tags":["Me – Limits"],"summary":"My limits + current usage","operationId":"get_9","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/MyLimitsDto"}}}}}}},"/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/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/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_20","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_10","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_11","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}/networks/{networkUuid}/attachments/{vmUuid}":{"delete":{"tags":["Tenant Networks"],"summary":"Eine VM vom Netzwerk trennen","description":"Idempotent (war-nicht-dran == Erfolg). Das Secondary-Interface verschwindet erst beim VMI-Neustart → restartRequired spiegelt, ob sich etwas geaendert hat.","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_1","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"}}}}},"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"}}},"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"}}},"UpdateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1}}},"CloudProject":{"type":"object","properties":{"name":{"type":"string"},"ownerUuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"setupCompleted":{"type":"boolean"},"uuid":{"type":"string","format":"uuid"},"slug":{"type":"string"}}},"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"}}},"ScheduleRequest":{"type":"object","properties":{"intervalHours":{"type":"integer","format":"int32"}}},"AnonymousAccessRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"permissions":{"$ref":"#/components/schemas/PermissionRequest"}},"required":["permissions"]},"ResizeRequest":{"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}},"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"},"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"}}},"UpdateDataVolumesRequest":{"type":"object","properties":{"dataVolumeUuids":{"type":"array","items":{"type":"string","format":"uuid"}}}},"UpdateBootReplicationRequest":{"type":"object","properties":{"mirrorSites":{"type":"array","items":{"type":"string"}}}},"BillingSetupRequest":{"type":"object","properties":{"customerType":{"type":"string","enum":["PRIVATE","BUSINESS"]},"companyName":{"type":"string"},"contactFirstName":{"type":"string"},"contactLastName":{"type":"string"},"address":{"$ref":"#/components/schemas/PostalAddress"}}},"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"]},"companyName":{"type":"string"},"contactFirstName":{"type":"string"},"contactLastName":{"type":"string"},"address":{"$ref":"#/components/schemas/PostalAddress"},"claimedCampaignCode":{"type":"string"},"claimedCampaignCreditEur":{"type":"number"}}},"RenameRequest":{"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","VECTORDB_VIEW","VECTORDB_COLLECTION_CREATE","VECTORDB_COLLECTION_UPDATE","VECTORDB_COLLECTION_DELETE","VECTORDB_POINTS_READ","VECTORDB_POINTS_WRITE","VECTORDB_SEARCH","OBJECT_STORAGE_VIEW","OBJECT_STORAGE_BUCKET_CREATE","OBJECT_STORAGE_BUCKET_DELETE","OBJECT_STORAGE_BUCKET_CONFIGURE","OBJECT_STORAGE_OBJECT_READ","OBJECT_STORAGE_OBJECT_WRITE","OBJECT_STORAGE_OBJECT_DELETE","OBJECT_STORAGE_CREDENTIAL_MANAGE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","SUPPORT_VIEW","SUPPORT_CREATE","SUPPORT_WRITE","SUPPORT_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","REGISTRY_VIEW","REGISTRY_ROBOT_MANAGE","REGISTRY_IMAGE_DELETE","DOMAIN_VIEW","DOMAIN_MANAGE"]},"uniqueItems":true},"projectUuid":{"type":"string","format":"uuid"},"uuid":{"type":"string","format":"uuid"}}},"PermissionsRequest":{"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","VECTORDB_VIEW","VECTORDB_COLLECTION_CREATE","VECTORDB_COLLECTION_UPDATE","VECTORDB_COLLECTION_DELETE","VECTORDB_POINTS_READ","VECTORDB_POINTS_WRITE","VECTORDB_SEARCH","OBJECT_STORAGE_VIEW","OBJECT_STORAGE_BUCKET_CREATE","OBJECT_STORAGE_BUCKET_DELETE","OBJECT_STORAGE_BUCKET_CONFIGURE","OBJECT_STORAGE_OBJECT_READ","OBJECT_STORAGE_OBJECT_WRITE","OBJECT_STORAGE_OBJECT_DELETE","OBJECT_STORAGE_CREDENTIAL_MANAGE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","SUPPORT_VIEW","SUPPORT_CREATE","SUPPORT_WRITE","SUPPORT_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","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":{"projectUuid":{"type":"string","format":"uuid"},"uuid":{"type":"string","format":"uuid"},"targets":{"type":"array","items":{"$ref":"#/components/schemas/NotificationTarget"}},"category":{"type":"string","enum":["SECURITY","BILLING"]}}},"NotificationTarget":{"type":"object","properties":{"value":{"type":"string"},"type":{"type":"string","enum":["USER","ROLE","EMAIL"]}}},"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"},"value":{"type":"string"},"ttl":{"type":"integer","format":"int32"},"priority":{"type":"integer","format":"int32"}}},"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"}}},"Credential":{"type":"object","properties":{"username":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","EXPIRING_SOON","EXPIRED","INVALID","UNKNOWN"]},"name":{"type":"string"},"type":{"type":"string","enum":["API_TOKEN","USERNAME_PASSWORD","SSH_KEY","ENCRYPTION_KEY","OTHER"]},"projectUuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"},"expiresAt":{"type":"string","format":"date-time"},"notes":{"type":"string"},"createdByUuid":{"type":"string","format":"uuid"},"updatedAt":{"type":"string","format":"date-time"}}},"RotateSecretRequest":{"type":"object","properties":{"secret":{"type":"string","minLength":1}}},"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":{"projectUuid":{"type":"string","format":"uuid"},"uuid":{"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"]},"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":{"companyName":{"type":"string","minLength":1},"vatId":{"type":"string"},"contactFirstName":{"type":"string","minLength":1},"contactLastName":{"type":"string","minLength":1},"address":{"$ref":"#/components/schemas/PostalAddress"}},"required":["address"]},"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","VECTORDB_VIEW","VECTORDB_COLLECTION_CREATE","VECTORDB_COLLECTION_UPDATE","VECTORDB_COLLECTION_DELETE","VECTORDB_POINTS_READ","VECTORDB_POINTS_WRITE","VECTORDB_SEARCH","OBJECT_STORAGE_VIEW","OBJECT_STORAGE_BUCKET_CREATE","OBJECT_STORAGE_BUCKET_DELETE","OBJECT_STORAGE_BUCKET_CONFIGURE","OBJECT_STORAGE_OBJECT_READ","OBJECT_STORAGE_OBJECT_WRITE","OBJECT_STORAGE_OBJECT_DELETE","OBJECT_STORAGE_CREDENTIAL_MANAGE","VOLUMES_VIEW","VOLUMES_CREATE","VOLUMES_UPDATE","VOLUMES_DELETE","VOLUMES_USER_MANAGE","SUPPORT_VIEW","SUPPORT_CREATE","SUPPORT_WRITE","SUPPORT_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","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"}}},"DeployedAi":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["TEXT_CLASSIFICATION","IMAGE_CLASSIFICATION"]},"projectUuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"},"updatedAt":{"type":"string","format":"date-time"}}},"TrainingRequest":{"type":"object","properties":{"label":{"type":"string","minLength":1},"payload":{"type":"string","minLength":1}}},"TrainingEntry":{"type":"object","properties":{"payload":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"},"label":{"type":"string"},"deployedAiUuid":{"type":"string","format":"uuid"}}},"OnboardingRequest":{"type":"object","properties":{"customerType":{"type":"string","enum":["PRIVATE","BUSINESS"]},"companyName":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"address":{"$ref":"#/components/schemas/PostalAddress"},"vatId":{"type":"string"},"acceptedLegal":{"type":"boolean"},"campaignCode":{"type":"string"}}},"OnboardingStatusDto":{"type":"object","properties":{"onboardingCompleted":{"type":"boolean"},"customerType":{"type":"string","enum":["PRIVATE","BUSINESS"]},"companyName":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"address":{"$ref":"#/components/schemas/PostalAddress"},"signupCampaignCode":{"type":"string"},"vatId":{"type":"string"}}},"LegalAcceptResultDto":{"type":"object","properties":{"legalVersion":{"type":"string"},"requiresLegalReAccept":{"type":"boolean"}}},"UpdateAccountRequest":{"type":"object","properties":{"displayName":{"type":"string"}}},"AccountProfileRequest":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"address":{"$ref":"#/components/schemas/PostalAddress"}}},"UpdateLocaleRequest":{"type":"object","properties":{"locale":{"type":"string"}}},"ChatMessage":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"ChatRequest":{"type":"object","properties":{"model":{"type":"string","minLength":1},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"}}}},"ChatChoice":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"message":{"$ref":"#/components/schemas/ChatMessage"},"metadata":{"type":"object","additionalProperties":{"type":"object"}},"finish_reason":{"type":"string"}}},"ChatResponse":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"created":{"type":"integer","format":"int64"},"model":{"type":"string"},"choices":{"type":"array","items":{"$ref":"#/components/schemas/ChatChoice"}}}},"CreateGatewayRequestV2":{"type":"object","properties":{"name":{"type":"string","minLength":1},"type":{"type":"string","enum":["SHARED","DEDICATED"]}}},"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"]},"CheckRequest":{"type":"object","properties":{"type":{"type":"string","minLength":1},"target":{"type":"string"},"region":{"type":"string"}}},"CreateRequest":{"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"]},"CreateSnapshotRequest":{"type":"object","properties":{"label":{"type":"string"}}},"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"}}},"TransferRequest":{"type":"object","properties":{"newOwnerUuid":{"type":"string","format":"uuid"}},"required":["newOwnerUuid"]},"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"},"state":{"type":"string","enum":["PENDING","READY","FAILED"]},"stateMessage":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"AttachRequest":{"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"]}}},"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"}}},"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"}}},"DeployRequest":{"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"]},"ImportResult":{"type":"object","properties":{"imported":{"type":"integer","format":"int32"}}},"InvokeRequest":{"type":"object","properties":{"payload":{"type":"string","minLength":1}}},"AiInvocationResult":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number","format":"double"},"ranking":{"type":"array","items":{"$ref":"#/components/schemas/LabelScore"}}}},"InvokeResponse":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/AiInvocationResult"},"appliedThrottleMs":{"type":"integer","format":"int64"}},"required":["result"]},"LabelScore":{"type":"object","properties":{"label":{"type":"string"},"score":{"type":"number","format":"double"}}},"ProvisionRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"companyName":{"type":"string","minLength":1},"contactFirstName":{"type":"string","minLength":1},"contactLastName":{"type":"string","minLength":1},"address":{"$ref":"#/components/schemas/PostalAddress"}},"required":["address"]},"AffiliateRequest":{"type":"object","properties":{"code":{"type":"string"}}},"AffiliateResultDto":{"type":"object","properties":{"assigned":{"type":"boolean"}}},"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"}}},"RegionView":{"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"}}},"CampaignPublicView":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"startCreditEur":{"type":"number"}}},"SnapshotInfo":{"type":"object","properties":{"name":{"type":"string"},"creationTime":{"type":"string"},"size":{"type":"integer","format":"int64"},"readyToUse":{"type":"boolean"},"userCreated":{"type":"boolean"}}},"DirectoryListing":{"type":"object","properties":{"path":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/FileEntry"}}}},"BackupInfo":{"type":"object","properties":{"name":{"type":"string"},"state":{"type":"string"},"size":{"type":"integer","format":"int64"},"createdAt":{"type":"string"},"progress":{"type":"string"},"error":{"type":"string"}}},"MetricsResponse":{"type":"object","properties":{"samples":{"type":"array","items":{"$ref":"#/components/schemas/SamplePoint"}}}},"SamplePoint":{"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"}}},"Invoice":{"type":"object","properties":{"status":{"type":"string","enum":["DRAFT","OPEN","PAID","FAILED","VOID"]},"number":{"type":"string"},"kind":{"type":"string","enum":["PREPAID_TOPUP"]},"projectUuid":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"period":{"type":"string","example":"2025-03"},"totalEur":{"type":"number"},"taxEur":{"type":"number"},"uuid":{"type":"string","format":"uuid"},"stripeInvoiceId":{"type":"string"},"paidAt":{"type":"string","format":"date-time"}}},"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":{"domain":{"type":"string"},"message":{"type":"string"},"state":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","CANCELLED","FAILED","UNKNOWN"]}}},"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"}}},"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"}}},"TrainingPage":{"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"}}},"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":{"aiInferenceEurPerSecond":{"type":"number"},"aiTrainingDataEurPerGb":{"type":"number"},"vectordbStorageEurPerGbMonth":{"type":"number"},"vectordbSearchEurPerQuery":{"type":"number"},"vectordbWriteEurPerQuery":{"type":"number"},"objectStorageEurPerGbMonth":{"type":"number"},"volumesStorageEurPerGbMonth":{"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"}}},"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"}}},"BaseAi":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["TEXT_CLASSIFICATION","IMAGE_CLASSIFICATION"]},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"},"updatedAt":{"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"}}}}