{
  "components": {
    "schemas": {
      "AccessKeyAccepted": {
        "properties": {
          "access_key": {
            "$ref": "#/components/schemas/AccessKeyOut"
          },
          "operation": {
            "$ref": "#/components/schemas/OperationRef"
          }
        },
        "required": [
          "access_key",
          "operation"
        ],
        "title": "AccessKeyAccepted",
        "type": "object"
      },
      "AccessKeyCreated": {
        "properties": {
          "access_key": {
            "$ref": "#/components/schemas/AccessKeyOut"
          },
          "operation": {
            "$ref": "#/components/schemas/OperationRef"
          },
          "secret_access_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The plaintext secret. Shown once and never retrievable again -- nothing stores it. Save it now. null on an idempotent replay."
          }
        },
        "required": [
          "access_key",
          "operation"
        ],
        "title": "AccessKeyCreated",
        "type": "object"
      },
      "AccessKeyOut": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "last_rotated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "openbao_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "operation_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "rgw_access_key_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The public half of the credential. null while it is still being issued."
          },
          "state": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "state",
          "created_at",
          "updated_at"
        ],
        "title": "AccessKeyOut",
        "type": "object"
      },
      "ApiTokenCreateRequest": {
        "additionalProperties": false,
        "properties": {
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional expiry. Omit for a key that does not expire."
          },
          "name": {
            "description": "A label, so the key is identifiable in a list later.",
            "examples": [
              "ci-pipeline",
              "backup-agent"
            ],
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "scopes": {
            "description": "Subset of ['read', 'write']. Defaults to read-only.",
            "examples": [
              [
                "read"
              ],
              [
                "read",
                "write"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "title": "ApiTokenCreateRequest",
        "type": "object"
      },
      "ApiTokenCreated": {
        "properties": {
          "secret": {
            "description": "The plaintext key. Shown once and never retrievable again: only a hash is stored. Save it now.",
            "type": "string"
          },
          "token": {
            "$ref": "#/components/schemas/ApiTokenOut"
          }
        },
        "required": [
          "token",
          "secret"
        ],
        "title": "ApiTokenCreated",
        "type": "object"
      },
      "ApiTokenOut": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "revoked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "scopes",
          "created_at"
        ],
        "title": "ApiTokenOut",
        "type": "object"
      },
      "AuditEventOut": {
        "properties": {
          "action": {
            "type": "string"
          },
          "actor_realm": {
            "type": "string"
          },
          "actor_sub": {
            "type": "string"
          },
          "actor_token_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "after": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "before": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "operation_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "resource_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "resource_type": {
            "type": "string"
          },
          "result": {
            "type": "string"
          },
          "ts": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "ts",
          "action",
          "resource_type",
          "result",
          "actor_sub",
          "actor_realm"
        ],
        "title": "AuditEventOut",
        "type": "object"
      },
      "BillingOut": {
        "properties": {
          "billing_exempt": {
            "type": "boolean"
          },
          "current_period_end": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "month_to_date": {
            "$ref": "#/components/schemas/MonthToDateOut"
          },
          "plan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BillingPlanOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "prices": {
            "items": {
              "$ref": "#/components/schemas/BillingPriceOut"
            },
            "type": "array"
          },
          "spend_budget_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "type": "string"
          }
        },
        "required": [
          "state",
          "billing_exempt",
          "month_to_date",
          "prices"
        ],
        "title": "BillingOut",
        "type": "object"
      },
      "BillingPlanOut": {
        "properties": {
          "display_name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          }
        },
        "required": [
          "slug",
          "display_name"
        ],
        "title": "BillingPlanOut",
        "type": "object"
      },
      "BillingPriceOut": {
        "properties": {
          "meter": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "unit_amount_micro_eur": {
            "type": "integer"
          }
        },
        "required": [
          "meter",
          "unit",
          "unit_amount_micro_eur"
        ],
        "title": "BillingPriceOut",
        "type": "object"
      },
      "BillingUpdateRequest": {
        "additionalProperties": false,
        "properties": {
          "spend_budget_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Monthly spend budget in cents. Required key. null clears it -- no budget cap. Any other value must be a positive integer no greater than 9223372036854775807 (the storage limit); 0 is not a budget nothing can be spent against, the same distinction every other 'no cap' column on this schema draws. Sent as a JSON number: a string or a boolean is refused rather than coerced.",
            "examples": [
              10000
            ]
          }
        },
        "required": [
          "spend_budget_cents"
        ],
        "title": "BillingUpdateRequest",
        "type": "object"
      },
      "BucketAccepted": {
        "properties": {
          "bucket": {
            "$ref": "#/components/schemas/BucketOut"
          },
          "operation": {
            "$ref": "#/components/schemas/OperationRef"
          }
        },
        "required": [
          "bucket",
          "operation"
        ],
        "title": "BucketAccepted",
        "type": "object"
      },
      "BucketCreateRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "The bucket name, unique within your organization. Lowercase letters, digits and hyphens; must start and end alphanumeric. Dots are not permitted -- they break virtual-hosted addressing.",
            "examples": [
              "backups",
              "media",
              "application-data"
            ],
            "maxLength": 63,
            "minLength": 3,
            "type": "string"
          },
          "versioning": {
            "default": false,
            "description": "Keep previous versions of overwritten and deleted objects. Applied to the bucket by the operation this request returns; read the bucket back and check observed_versioning before relying on it. Note that a versioned bucket is not emptied by deleting its objects -- previous versions and delete markers remain, and count towards storage and towards the not-empty check on delete.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "title": "BucketCreateRequest",
        "type": "object"
      },
      "BucketOut": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "observed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "observed_exists": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "observed_quota": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BucketQuotaOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "observed_versioning": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Versioning as the object store last reported it. null means no observation has been recorded -- not that versioning is off."
          },
          "operation_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "purge_after": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "quota": {
            "$ref": "#/components/schemas/BucketQuotaOut"
          },
          "soft_deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "versioning": {
            "description": "Whether previous versions of overwritten objects are kept, as requested when the bucket was created. This is desired state; observed_versioning is what the object store last reported.",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "state",
          "versioning",
          "created_at",
          "updated_at",
          "quota"
        ],
        "title": "BucketOut",
        "type": "object"
      },
      "BucketQuotaOut": {
        "properties": {
          "max_objects": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Objects this bucket may hold. null = no per-bucket cap."
          },
          "max_size_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bytes this bucket may hold. null = no per-bucket cap."
          }
        },
        "title": "BucketQuotaOut",
        "type": "object"
      },
      "BucketQuotaRequest": {
        "additionalProperties": false,
        "properties": {
          "max_objects": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Objects this bucket may hold. Send null for no per-bucket cap; omit to leave this dimension unchanged.",
            "examples": [
              1000000
            ]
          },
          "max_size_bytes": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bytes this bucket may hold. Must fit inside your organization's ceiling. Send null to remove the per-bucket cap -- the organization ceiling still applies. Omit to leave this dimension unchanged.",
            "examples": [
              10737418240
            ]
          }
        },
        "title": "BucketQuotaRequest",
        "type": "object"
      },
      "BucketUsagePointOut": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "bytes": {
            "type": "integer"
          },
          "objects": {
            "type": "integer"
          },
          "period_start": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "period_start",
          "bucket",
          "bytes",
          "objects"
        ],
        "title": "BucketUsagePointOut",
        "type": "object"
      },
      "CheckoutSessionOut": {
        "properties": {
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "CheckoutSessionOut",
        "type": "object"
      },
      "ComputeContextOut": {
        "properties": {
          "default_region_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "networks": {
            "description": "One entry per region this org's tenant network has been requested in. Empty until compute is enrolled and at least one region is active -- an org that predates tenant networking, or whose enrollment has requested no region yet, reads the same way a brand-new org does.",
            "items": {
              "$ref": "#/components/schemas/CustomerNetworkOut"
            },
            "type": "array"
          },
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "state": {
            "description": "active | suspended | disabled.",
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "state",
          "default_region_id",
          "networks"
        ],
        "title": "ComputeContextOut",
        "type": "object"
      },
      "ConsoleOut": {
        "properties": {
          "console_type": {
            "type": "string"
          },
          "expires_in_seconds": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "console_type",
          "expires_in_seconds"
        ],
        "title": "ConsoleOut",
        "type": "object"
      },
      "CustomerNetworkOut": {
        "properties": {
          "cidr": {
            "description": "This organization's /24 in this region, e.g. 10.128.1.0/24.",
            "type": "string"
          },
          "gateway": {
            "description": "The network's own gateway address -- the first address of the /24.",
            "type": "string"
          },
          "region_id": {
            "type": "string"
          },
          "state": {
            "description": "pending | ensured | error.",
            "type": "string"
          }
        },
        "required": [
          "region_id",
          "cidr",
          "gateway",
          "state"
        ],
        "title": "CustomerNetworkOut",
        "type": "object"
      },
      "EndpointOut": {
        "properties": {
          "addressing": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "region",
          "addressing"
        ],
        "title": "EndpointOut",
        "type": "object"
      },
      "EnrollmentOut": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "state",
          "created_at",
          "updated_at"
        ],
        "title": "EnrollmentOut",
        "type": "object"
      },
      "FirewallOut": {
        "properties": {
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/FirewallRuleOut"
            },
            "type": "array"
          },
          "state": {
            "description": "pending | applied | error.",
            "type": "string"
          },
          "vm_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "vm_id",
          "state",
          "error",
          "rules"
        ],
        "title": "FirewallOut",
        "type": "object"
      },
      "FirewallRuleIn": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "default": "",
            "type": "string"
          },
          "direction": {
            "type": "string"
          },
          "port_max": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "port_min": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "protocol": {
            "type": "string"
          },
          "remote_cidr": {
            "type": "string"
          }
        },
        "required": [
          "direction",
          "protocol",
          "remote_cidr"
        ],
        "title": "FirewallRuleIn",
        "type": "object"
      },
      "FirewallRuleOut": {
        "properties": {
          "description": {
            "type": "string"
          },
          "direction": {
            "description": "ingress | egress.",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "port_max": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "port_min": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "protocol": {
            "description": "tcp | udp | icmp | any.",
            "type": "string"
          },
          "remote_cidr": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "direction",
          "protocol",
          "port_min",
          "port_max",
          "remote_cidr",
          "description"
        ],
        "title": "FirewallRuleOut",
        "type": "object"
      },
      "FirewallRulesIn": {
        "additionalProperties": false,
        "properties": {
          "rules": {
            "items": {
              "$ref": "#/components/schemas/FirewallRuleIn"
            },
            "type": "array"
          }
        },
        "required": [
          "rules"
        ],
        "title": "FirewallRulesIn",
        "type": "object"
      },
      "ImageOut": {
        "properties": {
          "id": {
            "description": "The image id. Pass this as `image` when creating an instance.",
            "type": "string"
          },
          "min_disk_gb": {
            "type": "integer"
          },
          "min_ram_mb": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "os_distro": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "os_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "os_distro",
          "os_version",
          "min_disk_gb",
          "min_ram_mb"
        ],
        "title": "ImageOut",
        "type": "object"
      },
      "ImageRef": {
        "properties": {
          "glance_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "glance_id",
          "name"
        ],
        "title": "ImageRef",
        "type": "object"
      },
      "InvoiceOut": {
        "properties": {
          "amount_due_cents": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "hosted_invoice_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "type": "string"
          },
          "invoice_pdf": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "period_end": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "period_start": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "total_cents": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "status",
          "currency",
          "total_cents",
          "amount_due_cents"
        ],
        "title": "InvoiceOut",
        "type": "object"
      },
      "LimitsOut": {
        "properties": {
          "disk_gb": {
            "$ref": "#/components/schemas/RangeOut"
          },
          "memory_gb": {
            "$ref": "#/components/schemas/RangeOut"
          },
          "vcpus_steps": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "vcpus_steps",
          "memory_gb",
          "disk_gb"
        ],
        "title": "LimitsOut",
        "type": "object"
      },
      "ListResponse_AccessKeyOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AccessKeyOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[AccessKeyOut]",
        "type": "object"
      },
      "ListResponse_ApiTokenOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ApiTokenOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[ApiTokenOut]",
        "type": "object"
      },
      "ListResponse_AuditEventOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AuditEventOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[AuditEventOut]",
        "type": "object"
      },
      "ListResponse_BillingPriceOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/BillingPriceOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[BillingPriceOut]",
        "type": "object"
      },
      "ListResponse_BucketOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/BucketOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[BucketOut]",
        "type": "object"
      },
      "ListResponse_EndpointOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/EndpointOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[EndpointOut]",
        "type": "object"
      },
      "ListResponse_ImageOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ImageOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[ImageOut]",
        "type": "object"
      },
      "ListResponse_InvoiceOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/InvoiceOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[InvoiceOut]",
        "type": "object"
      },
      "ListResponse_NetworkProfileOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/NetworkProfileOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[NetworkProfileOut]",
        "type": "object"
      },
      "ListResponse_OperationRef_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/OperationRef"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[OperationRef]",
        "type": "object"
      },
      "ListResponse_PlanOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlanOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[PlanOut]",
        "type": "object"
      },
      "ListResponse_PublicIpOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PublicIpOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[PublicIpOut]",
        "type": "object"
      },
      "ListResponse_RegionOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RegionOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[RegionOut]",
        "type": "object"
      },
      "ListResponse_SizeOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/SizeOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[SizeOut]",
        "type": "object"
      },
      "ListResponse_StoragePoolOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/StoragePoolOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[StoragePoolOut]",
        "type": "object"
      },
      "ListResponse_VmOut_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/VmOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items"
        ],
        "title": "ListResponse[VmOut]",
        "type": "object"
      },
      "MonthToDateOut": {
        "properties": {
          "egress_gb": {
            "type": "string"
          },
          "estimated_cents": {
            "type": "integer"
          },
          "storage_gb_month": {
            "type": "string"
          }
        },
        "required": [
          "storage_gb_month",
          "egress_gb",
          "estimated_cents"
        ],
        "title": "MonthToDateOut",
        "type": "object"
      },
      "NetworkProfileOut": {
        "properties": {
          "id": {
            "type": "string"
          },
          "region_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "region_id",
          "status"
        ],
        "title": "NetworkProfileOut",
        "type": "object"
      },
      "NotificationPreferencesOut": {
        "properties": {
          "quota_emails_enabled": {
            "description": "Whether this organization wants the storage-quota emails: the 'your bucket is 80% full' advisory and the 'your bucket has reached its limit' notice. One switch covers both. True unless somebody here has turned it off, and true for an organization that has never expressed a preference.",
            "type": "boolean"
          }
        },
        "required": [
          "quota_emails_enabled"
        ],
        "title": "NotificationPreferencesOut",
        "type": "object"
      },
      "NotificationPreferencesRequest": {
        "additionalProperties": false,
        "properties": {
          "quota_emails_enabled": {
            "description": "True to receive the storage-quota emails, false to stop them. Covers both the 80% advisory and the 100% limit notice.",
            "type": "boolean"
          }
        },
        "required": [
          "quota_emails_enabled"
        ],
        "title": "NotificationPreferencesRequest",
        "type": "object"
      },
      "OperationRef": {
        "properties": {
          "attempt": {
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "error_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "error_detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the operation reached a terminal state. Guaranteed non-null whenever state is succeeded, failed or cancelled -- including operations that complete synchronously and are returned already succeeded. null means the operation is still in flight."
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "max_attempts": {
            "type": "integer"
          },
          "resource_id": {
            "type": "string"
          },
          "resource_type": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "state",
          "resource_type",
          "resource_id",
          "attempt",
          "max_attempts",
          "created_at"
        ],
        "title": "OperationRef",
        "type": "object"
      },
      "OrgContext": {
        "properties": {
          "name": {
            "type": "string"
          },
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "quota": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QuotaOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "s3": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EnrollmentOut"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "org_id",
          "name"
        ],
        "title": "OrgContext",
        "type": "object"
      },
      "PlanOut": {
        "properties": {
          "backup_policy": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A label (daily-7d), not a schedule; null is no backups included."
          },
          "currency": {
            "description": "ISO 4217, lowercase as the price book writes it: eur.",
            "type": "string"
          },
          "disk_gb": {
            "type": "integer"
          },
          "id": {
            "type": "string"
          },
          "management_level": {
            "description": "full | business.",
            "type": "string"
          },
          "monthly_price_cents": {
            "description": "The monthly price in the smallest unit of ``currency`` (cents).",
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "ram_mb": {
            "type": "integer"
          },
          "status": {
            "description": "active | retired. A plan is retired, never deleted.",
            "type": "string"
          },
          "vcpus": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "vcpus",
          "ram_mb",
          "disk_gb",
          "monthly_price_cents",
          "currency",
          "status",
          "management_level",
          "backup_policy"
        ],
        "title": "PlanOut",
        "type": "object"
      },
      "PortalSessionOut": {
        "properties": {
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "PortalSessionOut",
        "type": "object"
      },
      "Problem": {
        "properties": {
          "code": {
            "description": "A stable, machine-readable error code.",
            "type": "string"
          },
          "detail": {
            "description": "A human-readable explanation specific to this occurrence.",
            "type": "string"
          },
          "errors": {
            "description": "Field-level validation errors, when the problem is a failed validation.",
            "items": {
              "$ref": "#/components/schemas/ProblemFieldError"
            },
            "type": "array"
          },
          "instance": {
            "description": "A URI identifying this specific occurrence of the problem.",
            "type": "string"
          },
          "request_id": {
            "description": "The id of the request that produced this error; include it when contacting support.",
            "type": "string"
          },
          "status": {
            "description": "The HTTP status code for this occurrence of the problem.",
            "type": "integer"
          },
          "title": {
            "description": "A short, human-readable summary of the problem type.",
            "type": "string"
          },
          "type": {
            "description": "A URI identifying the problem type.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "status"
        ],
        "type": "object"
      },
      "ProblemFieldError": {
        "properties": {
          "field": {
            "description": "The field the error refers to.",
            "type": "string"
          },
          "message": {
            "description": "A human-readable explanation for this field.",
            "type": "string"
          }
        },
        "required": [
          "field",
          "message"
        ],
        "type": "object"
      },
      "PublicIpAccepted": {
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/OperationRef"
          },
          "public_ip": {
            "$ref": "#/components/schemas/PublicIpOut"
          }
        },
        "required": [
          "public_ip",
          "operation"
        ],
        "title": "PublicIpAccepted",
        "type": "object"
      },
      "PublicIpAllocateRequest": {
        "additionalProperties": false,
        "properties": {
          "region_id": {
            "type": "string"
          }
        },
        "required": [
          "region_id"
        ],
        "title": "PublicIpAllocateRequest",
        "type": "object"
      },
      "PublicIpAssociateRequest": {
        "additionalProperties": false,
        "properties": {
          "vm_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "vm_id"
        ],
        "title": "PublicIpAssociateRequest",
        "type": "object"
      },
      "PublicIpOut": {
        "properties": {
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Null until ip.allocate has actually been applied to the network."
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "region_id": {
            "type": "string"
          },
          "state": {
            "description": "pending | allocated | associating | associated | disassociating | releasing | error.",
            "type": "string"
          },
          "vm_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "region_id",
          "address",
          "vm_id",
          "state",
          "error",
          "created_at"
        ],
        "title": "PublicIpOut",
        "type": "object"
      },
      "QuotaOut": {
        "properties": {
          "buckets_used": {
            "description": "Buckets occupying a slot against max_buckets. Deliberately not the length of GET /s3/buckets: a soft-deleted bucket is still listed and still restorable, but holds no slot. An org can therefore be shown 2 of 25 while the list returns 3.",
            "type": "integer"
          },
          "hard_bytes": {
            "type": "integer"
          },
          "max_buckets": {
            "description": "The org's effective bucket ceiling: the plan's value with any live quota override folded in, which is what the create check measures against.",
            "type": "integer"
          },
          "max_objects": {
            "type": "integer"
          },
          "soft_bytes": {
            "type": "integer"
          }
        },
        "required": [
          "soft_bytes",
          "hard_bytes",
          "max_objects",
          "max_buckets",
          "buckets_used"
        ],
        "title": "QuotaOut",
        "type": "object"
      },
      "RangeOut": {
        "properties": {
          "max": {
            "type": "integer"
          },
          "min": {
            "type": "integer"
          },
          "step": {
            "type": "integer"
          }
        },
        "required": [
          "min",
          "max",
          "step"
        ],
        "title": "RangeOut",
        "type": "object"
      },
      "RegionOut": {
        "properties": {
          "access": {
            "description": "public: every organization may use it. restricted: only selected organizations may; the rest see it listed but locked.",
            "enum": [
              "public",
              "restricted"
            ],
            "type": "string"
          },
          "datacenter": {
            "type": "string"
          },
          "entitled": {
            "description": "Whether this organization may use the region. Always true for a public region. A restricted region this is false for offers no sizes, images, storage pools or network profiles to this organization, and refuses a create exactly as an unknown region does. True does not mean the region takes instances today: that is status.",
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "description": "active | coming_soon | maintenance | retired.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "datacenter",
          "status",
          "access",
          "entitled"
        ],
        "title": "RegionOut",
        "type": "object"
      },
      "S3BucketUsageOut": {
        "properties": {
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "granularity": {
            "type": "string"
          },
          "retention_days": {
            "type": "integer"
          },
          "series": {
            "items": {
              "$ref": "#/components/schemas/BucketUsagePointOut"
            },
            "type": "array"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "granularity",
          "from",
          "to",
          "retention_days",
          "series"
        ],
        "title": "S3BucketUsageOut",
        "type": "object"
      },
      "S3QuotaOut": {
        "properties": {
          "cap_bytes": {
            "type": "integer"
          },
          "cap_objects": {
            "type": "integer"
          },
          "enforced_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "enforced_objects": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "frozen_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "soft_bytes": {
            "type": "integer"
          },
          "usage_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "usage_objects": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "cap_bytes",
          "cap_objects",
          "soft_bytes"
        ],
        "title": "S3QuotaOut",
        "type": "object"
      },
      "S3QuotaUpdateOut": {
        "properties": {
          "cap_bytes": {
            "type": "integer"
          },
          "cap_objects": {
            "type": "integer"
          },
          "enforced_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "enforced_objects": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "frozen_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "soft_bytes": {
            "type": "integer"
          },
          "usage_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "usage_objects": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "warning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "'below_current_usage' when the new hard_bytes already sits below this organization's latest measured usage -- the write still succeeds, but new writes to the object store stop until usage falls back under the new ceiling or it is raised again. null on every other successful update, including when there is no usage sample yet to compare against.",
            "examples": [
              "below_current_usage"
            ]
          }
        },
        "required": [
          "cap_bytes",
          "cap_objects",
          "soft_bytes"
        ],
        "title": "S3QuotaUpdateOut",
        "type": "object"
      },
      "S3QuotaUpdateRequest": {
        "additionalProperties": false,
        "properties": {
          "hard_bytes": {
            "description": "The organization's storage ceiling, in bytes. Must fall between the platform floor and the platform-wide maximum, inclusive.",
            "examples": [
              536870912000
            ],
            "type": "integer"
          }
        },
        "required": [
          "hard_bytes"
        ],
        "title": "S3QuotaUpdateRequest",
        "type": "object"
      },
      "S3UsageOut": {
        "properties": {
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "granularity": {
            "type": "string"
          },
          "series": {
            "items": {
              "$ref": "#/components/schemas/UsagePointOut"
            },
            "type": "array"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          },
          "totals": {
            "$ref": "#/components/schemas/UsageTotalsOut"
          }
        },
        "required": [
          "granularity",
          "from",
          "to",
          "series",
          "totals"
        ],
        "title": "S3UsageOut",
        "type": "object"
      },
      "ScheduleRestartRequest": {
        "additionalProperties": false,
        "properties": {
          "action": {
            "const": "reboot",
            "default": "reboot",
            "type": "string"
          },
          "day_of_month": {
            "anyOf": [
              {
                "maximum": 28,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "kind=monthly: 1 to 28, so that it happens in every month."
          },
          "day_of_week": {
            "anyOf": [
              {
                "maximum": 6,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "kind=weekly: 0 = Monday .. 6 = Sunday."
          },
          "kind": {
            "enum": [
              "once",
              "weekly",
              "monthly"
            ],
            "type": "string"
          },
          "run_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "kind=once: an instant, with its offset."
          },
          "time_of_day": {
            "anyOf": [
              {
                "format": "time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "weekly and monthly: a wall-clock time such as 03:00."
          },
          "timezone": {
            "default": "Europe/Amsterdam",
            "description": "The IANA timezone the wall-clock time is kept in.",
            "maxLength": 64,
            "type": "string"
          }
        },
        "required": [
          "kind"
        ],
        "title": "ScheduleRestartRequest",
        "type": "object"
      },
      "ScheduledActionListOut": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ScheduledActionOut"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "scheduling_enabled": {
            "description": "Whether this service accepts new schedules right now. Existing ones can always be listed and cancelled, whatever this says.",
            "type": "boolean"
          }
        },
        "required": [
          "items",
          "scheduling_enabled"
        ],
        "title": "ScheduledActionListOut",
        "type": "object"
      },
      "ScheduledActionOut": {
        "properties": {
          "action": {
            "description": "reboot.",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "day_of_month": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "kind=monthly: 1 to 28."
          },
          "day_of_week": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "kind=weekly: 0 = Monday .. 6 = Sunday."
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "description": "once | weekly | monthly.",
            "type": "string"
          },
          "last_operation_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The restart operation the last run queued, when it queued one."
          },
          "last_outcome": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "queued | refused | missed -- what happened the last time it came due. `missed` means it was reached too late and was skipped rather than run late."
          },
          "last_outcome_detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Why, for `refused` and `missed`, as a sentence."
          },
          "last_run_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When it last came due, if it has."
          },
          "next_run_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The next run as an instant; null once the schedule has completed or been cancelled."
          },
          "run_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "kind=once: when it runs."
          },
          "state": {
            "description": "scheduled | completed | cancelled.",
            "type": "string"
          },
          "time_of_day": {
            "anyOf": [
              {
                "format": "time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "weekly and monthly: the wall-clock time, in `timezone`."
          },
          "timezone": {
            "description": "The IANA timezone the schedule keeps its time in.",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "vm_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id",
          "vm_id",
          "action",
          "kind",
          "run_at",
          "day_of_week",
          "day_of_month",
          "time_of_day",
          "timezone",
          "next_run_at",
          "last_run_at",
          "last_outcome",
          "last_outcome_detail",
          "last_operation_id",
          "state",
          "created_at",
          "updated_at"
        ],
        "title": "ScheduledActionOut",
        "type": "object"
      },
      "SizeOut": {
        "properties": {
          "currency": {
            "description": "ISO 4217, lowercase as the price book writes it: eur.",
            "type": "string"
          },
          "disk_gb": {
            "type": "integer"
          },
          "monthly_price_cents": {
            "description": "The monthly price in the smallest unit of ``currency`` (cents).",
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "plan_id": {
            "type": "string"
          },
          "ram_mb": {
            "type": "integer"
          },
          "status": {
            "description": "active | retired.",
            "type": "string"
          },
          "vcpus": {
            "type": "integer"
          }
        },
        "required": [
          "plan_id",
          "name",
          "vcpus",
          "ram_mb",
          "disk_gb",
          "monthly_price_cents",
          "currency",
          "status"
        ],
        "title": "SizeOut",
        "type": "object"
      },
      "StoragePoolOut": {
        "properties": {
          "id": {
            "type": "string"
          },
          "region_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "region_id",
          "status"
        ],
        "title": "StoragePoolOut",
        "type": "object"
      },
      "UsagePointOut": {
        "properties": {
          "meter": {
            "type": "string"
          },
          "period_start": {
            "format": "date-time",
            "type": "string"
          },
          "quantity": {
            "type": "string"
          }
        },
        "required": [
          "period_start",
          "meter",
          "quantity"
        ],
        "title": "UsagePointOut",
        "type": "object"
      },
      "UsageTotalsOut": {
        "properties": {
          "egress_gb": {
            "type": "string"
          },
          "storage_gb_month": {
            "type": "string"
          }
        },
        "required": [
          "storage_gb_month",
          "egress_gb"
        ],
        "title": "UsageTotalsOut",
        "type": "object"
      },
      "VmAccepted": {
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/OperationRef"
          },
          "vm": {
            "$ref": "#/components/schemas/VmOut"
          }
        },
        "required": [
          "vm",
          "operation"
        ],
        "title": "VmAccepted",
        "type": "object"
      },
      "VmCreateRequest": {
        "additionalProperties": false,
        "properties": {
          "disk_gb": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer"
          },
          "image": {
            "description": "The image id, as listed by GET /v1/orgs/{org}/compute/images.",
            "type": "string"
          },
          "memory_mb": {
            "maximum": 2147483647,
            "minimum": 256,
            "type": "integer"
          },
          "name": {
            "description": "Lowercase letters, digits and hyphens; must start and end alphanumeric. Unique among your live instances in the same region -- a deleted instance's name is reusable.",
            "examples": [
              "web-01"
            ],
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "network_profile": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "ssh_keys": {
            "description": "Names of your SSH keys. No key material is stored here.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "storage_pool": {
            "type": "string"
          },
          "user_data": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Not accepted: any non-null value, an empty string included, is refused with 422 user_data_unsupported. The instance is built asynchronously, so cloud-init would have to be persisted to reach the worker that boots it -- and cloud-init is where bootstrap secrets go, so where such a payload may live is an open design question. The field stays published so the refusal is documented rather than a surprise."
          },
          "vcpus": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer"
          },
          "workload_type": {
            "default": "customer",
            "description": "Leave unset. A customer organization may only ever request 'customer'; asking for 'infra' is refused with 422 workload_not_allowed rather than downgraded, because that value selects VirtScale's own hardware pools.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "image",
          "vcpus",
          "memory_mb",
          "disk_gb",
          "storage_pool",
          "region",
          "network_profile"
        ],
        "title": "VmCreateRequest",
        "type": "object"
      },
      "VmOut": {
        "properties": {
          "allowed_actions": {
            "description": "What may be asked of this instance where it is, from the vocabulary start, stop, reboot, console, resize, rebuild, rescue, unrescue, delete, firewall, public_ip, protection, in that order. Any action not listed is refused with 409 vm_action_not_allowed. An instance in a region whose disks are single copies on one host allows start, stop, reboot and console only, and start and console only while it is protected; any other instance allows every action, less delete while it is protected. This is policy, not state: a listed action can still be refused for the state the instance is in.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "desired_state": {
            "type": "string"
          },
          "disk_gb": {
            "type": "integer"
          },
          "error_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "error_detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A fixed phrase and a non-identifying context label. Never a vendor exception, endpoint or response body."
          },
          "fqdn": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Null for a customer account: the zone is VirtScale's own, and publishing a customer hostname in it would be a namespace nobody asked to share."
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "image": {
            "$ref": "#/components/schemas/ImageRef"
          },
          "memory_mb": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "network_profile_id": {
            "type": "string"
          },
          "observed_addresses": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "observed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "observed_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "protected": {
            "description": "While true, deleting the instance is refused with 409 vm_protected. An owner of the organization switches it with PUT /v1/orgs/{org}/compute/vms/{vm_id}/protection.",
            "type": "boolean"
          },
          "region_id": {
            "type": "string"
          },
          "ssh_key_names": {
            "description": "Names of the SSH keys attached to the instance. No key material.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "type": "string"
          },
          "storage_pool_id": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "user_data_present": {
            "type": "boolean"
          },
          "vcpus": {
            "type": "integer"
          },
          "workload_type": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "org_id",
          "region_id",
          "name",
          "fqdn",
          "image",
          "vcpus",
          "memory_mb",
          "disk_gb",
          "storage_pool_id",
          "workload_type",
          "network_profile_id",
          "state",
          "desired_state",
          "error_class",
          "error_detail",
          "observed_status",
          "observed_addresses",
          "observed_at",
          "ssh_key_names",
          "user_data_present",
          "protected",
          "allowed_actions",
          "created_at",
          "updated_at"
        ],
        "title": "VmOut",
        "type": "object"
      },
      "VmProtectionRequest": {
        "additionalProperties": false,
        "properties": {
          "protected": {
            "type": "boolean"
          }
        },
        "required": [
          "protected"
        ],
        "title": "VmProtectionRequest",
        "type": "object"
      },
      "VmRebuildRequest": {
        "additionalProperties": false,
        "properties": {
          "image_id": {
            "description": "The image id, as listed by GET /v1/orgs/{org}/compute/images for the instance's own region. The instance's current image is allowed: that is a reinstall.",
            "type": "string"
          }
        },
        "required": [
          "image_id"
        ],
        "title": "VmRebuildRequest",
        "type": "object"
      },
      "VmRescueRequest": {
        "additionalProperties": false,
        "properties": {
          "rescue_image_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Not supported yet: leave it out to rescue from the default rescue image."
          }
        },
        "title": "VmRescueRequest",
        "type": "object"
      },
      "VmResizeRequest": {
        "additionalProperties": false,
        "properties": {
          "memory_mb": {
            "maximum": 2147483647,
            "minimum": 256,
            "type": "integer"
          },
          "vcpus": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "vcpus",
          "memory_mb"
        ],
        "title": "VmResizeRequest",
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "description": "Send `Authorization: Bearer <credential>`. The credential is either an API key (`vsk_…`) created for an organization, or an OIDC access token obtained by signing in to VirtScale.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "The VirtScale API lets you manage organizations, compute instances, object storage and billing programmatically. The base URL is https://api.virtscale.nl. Requests and responses are JSON, authenticated with a bearer credential: an API key or an OIDC access token. Errors are returned as application/problem+json with a stable `code` field for programmatic handling. Not every change is asynchronous: of the 34 operations that create, modify or remove something, 22 return 202 Accepted with an operation to poll for completion; the other 12 complete within the request and return 200 or 201. Each operation's own reference page states which. See https://learn.virtscale.nl for guides and reference documentation.",
    "title": "VirtScale API",
    "version": "1.0.0",
    "x-source": {
      "commit": "ba1a6ae5d45c43a9a8aa0e0ae865d33f37e662c9",
      "path": "docs/openapi/generated/customer-v1.json",
      "repository": "virtscale/virtscale-platform/apps/s3-control-plane"
    }
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/orgs/{org}": {
      "get": {
        "operationId": "getOrgContext",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrgContext"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Organization context",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org}/api-tokens": {
      "get": {
        "operationId": "listApiTokens",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_ApiTokenOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List API keys (metadata only)",
        "tags": [
          "API keys"
        ]
      },
      "post": {
        "operationId": "createApiToken",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiTokenCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTokenCreated"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Create an API key (the secret is returned exactly once)",
        "tags": [
          "API keys"
        ]
      }
    },
    "/v1/orgs/{org}/api-tokens/{token_id}": {
      "delete": {
        "operationId": "revokeApiToken",
        "parameters": [
          {
            "in": "path",
            "name": "token_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTokenOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Revoke an API key",
        "tags": [
          "API keys"
        ]
      }
    },
    "/v1/orgs/{org}/audit-log": {
      "get": {
        "operationId": "readAuditLog",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Exact action, e.g. bucket.create",
            "in": "query",
            "name": "action",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exact action, e.g. bucket.create"
            }
          },
          {
            "description": "bucket, api_token, ...",
            "in": "query",
            "name": "resource_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "bucket, api_token, ..."
            }
          },
          {
            "description": "Exact actor subject",
            "in": "query",
            "name": "actor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exact actor subject"
            }
          },
          {
            "description": "accepted | denied | invalid",
            "in": "query",
            "name": "result",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "accepted | denied | invalid"
            }
          },
          {
            "description": "Inclusive lower bound on ts",
            "in": "query",
            "name": "since",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound on ts"
            }
          },
          {
            "description": "Exclusive upper bound on ts",
            "in": "query",
            "name": "until",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound on ts"
            }
          },
          {
            "description": "Opaque cursor from next_cursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Opaque cursor from next_cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_AuditEventOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Read this organization's audit log",
        "tags": [
          "Audit log"
        ]
      }
    },
    "/v1/orgs/{org}/billing": {
      "get": {
        "operationId": "getBilling",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get billing account state and month-to-date estimate",
        "tags": [
          "Billing"
        ]
      },
      "put": {
        "operationId": "setBillingBudget",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Set or clear the organization's monthly spend budget",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/orgs/{org}/billing/checkout-session": {
      "post": {
        "operationId": "createBillingCheckoutSession",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSessionOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Stripe is unavailable to this request, as `application/problem+json`. `code` distinguishes the reasons: `billing_unconfigured` (this deployment has no Stripe API key or redirect URLs), `billing_not_bootstrapped` (the ceremony has not run, so there are no price ids / no portal configuration), or `stripe_unreachable` (Stripe itself refused or could not be reached -- retry)."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Create a Stripe Checkout session to start or resume billing",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/orgs/{org}/billing/portal-session": {
      "post": {
        "operationId": "createBillingPortalSession",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Stripe is unavailable to this request, as `application/problem+json`. `code` distinguishes the reasons: `billing_unconfigured` (this deployment has no Stripe API key or redirect URLs), `billing_not_bootstrapped` (the ceremony has not run, so there are no price ids / no portal configuration), or `stripe_unreachable` (Stripe itself refused or could not be reached -- retry)."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Create a Stripe Billing Portal session",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/orgs/{org}/compute": {
      "get": {
        "operationId": "getComputeContext",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ComputeContextOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "The organization's compute context",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/images": {
      "get": {
        "operationId": "listImages",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Required: the catalogue is per region.",
            "in": "query",
            "name": "region",
            "required": true,
            "schema": {
              "description": "Required: the catalogue is per region.",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_ImageOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List the images this platform offers",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/limits": {
      "get": {
        "operationId": "getLimits",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitsOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get the vCPU, memory and disk ranges an instance spec must fit within",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/network-profiles": {
      "get": {
        "operationId": "listNetworkProfiles",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Required: the catalogue is per region.",
            "in": "query",
            "name": "region",
            "required": true,
            "schema": {
              "description": "Required: the catalogue is per region.",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_NetworkProfileOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List the network profiles this organization may select",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/plans": {
      "get": {
        "operationId": "listPlans",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_PlanOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List the compute plans",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/public-ips": {
      "get": {
        "operationId": "listPublicIps",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Repeatable key:value. A row is listed only when its labels carry every pair.",
            "in": "query",
            "name": "label",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Repeatable key:value. A row is listed only when its labels carry every pair."
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_PublicIpOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List this organization's public IPs",
        "tags": [
          "Compute"
        ]
      },
      "post": {
        "operationId": "allocatePublicIp",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicIpAllocateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicIpAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Allocate a public IP",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/public-ips/{public_ip_id}": {
      "delete": {
        "operationId": "releasePublicIp",
        "parameters": [
          {
            "description": "VirtScale public IP id",
            "in": "path",
            "name": "public_ip_id",
            "required": true,
            "schema": {
              "description": "VirtScale public IP id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicIpAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Release a public IP",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/public-ips/{public_ip_id}/associate": {
      "post": {
        "operationId": "associatePublicIp",
        "parameters": [
          {
            "description": "VirtScale public IP id",
            "in": "path",
            "name": "public_ip_id",
            "required": true,
            "schema": {
              "description": "VirtScale public IP id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicIpAssociateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicIpAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Associate a public IP with an instance",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/public-ips/{public_ip_id}/disassociate": {
      "post": {
        "operationId": "disassociatePublicIp",
        "parameters": [
          {
            "description": "VirtScale public IP id",
            "in": "path",
            "name": "public_ip_id",
            "required": true,
            "schema": {
              "description": "VirtScale public IP id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicIpAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Disassociate a public IP from its instance",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/regions": {
      "get": {
        "operationId": "listRegions",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_RegionOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List compute regions",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/regions/{region}/sizes": {
      "get": {
        "operationId": "listRegionSizes",
        "parameters": [
          {
            "description": "Region id",
            "in": "path",
            "name": "region",
            "required": true,
            "schema": {
              "description": "Region id",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_SizeOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List the sizes a region offers",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/scheduled-actions/{schedule_id}": {
      "delete": {
        "operationId": "cancelScheduledAction",
        "parameters": [
          {
            "description": "Scheduled restart id",
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "description": "Scheduled restart id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledActionOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Cancel a scheduled restart",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/storage-pools": {
      "get": {
        "operationId": "listStoragePools",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Required: the catalogue is per region.",
            "in": "query",
            "name": "region",
            "required": true,
            "schema": {
              "description": "Required: the catalogue is per region.",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_StoragePoolOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List storage pools",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms": {
      "get": {
        "operationId": "listVms",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Restrict to one region.",
            "in": "query",
            "name": "region",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Restrict to one region."
            }
          },
          {
            "description": "Restrict to one state.",
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Restrict to one state."
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Repeatable key:value. A row is listed only when its labels carry every pair.",
            "in": "query",
            "name": "label",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Repeatable key:value. A row is listed only when its labels carry every pair."
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_VmOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List this organization's instances",
        "tags": [
          "Compute"
        ]
      },
      "post": {
        "operationId": "createVm",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VmCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Create an instance",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}": {
      "delete": {
        "operationId": "deleteVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Delete an instance",
        "tags": [
          "Compute"
        ]
      },
      "get": {
        "operationId": "getVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get one of this organization's instances",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/console": {
      "get": {
        "operationId": "collectConsole",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The id of the operation created by the earlier POST to this same path, which requests a console. Pass the `id` from that response's `operation` object (its `type` reads `vm.console`, the same value GET /v1/orgs/{org}/operations shows for it). A console URL can be collected once: an id that is unknown, already collected, expired, or for a different instance returns 404.",
            "in": "query",
            "name": "operation",
            "required": true,
            "schema": {
              "description": "The id of the operation created by the earlier POST to this same path, which requests a console. Pass the `id` from that response's `operation` object (its `type` reads `vm.console`, the same value GET /v1/orgs/{org}/operations shows for it). A console URL can be collected once: an id that is unknown, already collected, expired, or for a different instance returns 404.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsoleOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get an instance's one-time console URL",
        "tags": [
          "Compute"
        ]
      },
      "post": {
        "operationId": "openConsole",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Ask for a remote console",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/firewall": {
      "get": {
        "operationId": "getVmFirewall",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FirewallOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Read an instance's firewall rule set",
        "tags": [
          "Compute"
        ]
      },
      "put": {
        "operationId": "setVmFirewall",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FirewallRulesIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Replace an instance's firewall rule set",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/protection": {
      "put": {
        "operationId": "setVmProtection",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VmProtectionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Protect an instance against deletion, or lift the protection",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/reboot": {
      "post": {
        "operationId": "rebootVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Reboot an instance",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/rebuild": {
      "post": {
        "operationId": "rebuildVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VmRebuildRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Reinstall an instance from an image",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/rescue": {
      "post": {
        "operationId": "rescueVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VmRescueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Boot an instance into a rescue system",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/resize": {
      "post": {
        "operationId": "resizeVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VmResizeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Change an instance's vCPUs and memory",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/scheduled-actions": {
      "get": {
        "operationId": "listVmScheduledActions",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledActionListOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List an instance's scheduled restarts",
        "tags": [
          "Compute"
        ]
      },
      "post": {
        "operationId": "scheduleVmRestart",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRestartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledActionOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Schedule a restart of an instance",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/start": {
      "post": {
        "operationId": "startVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Start an instance",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/stop": {
      "post": {
        "operationId": "stopVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Stop an instance",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/compute/vms/{vm_id}/unrescue": {
      "post": {
        "operationId": "unrescueVm",
        "parameters": [
          {
            "description": "VirtScale instance id",
            "in": "path",
            "name": "vm_id",
            "required": true,
            "schema": {
              "description": "VirtScale instance id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VmAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Bring a rescued instance back to its own disk",
        "tags": [
          "Compute"
        ]
      }
    },
    "/v1/orgs/{org}/invoices": {
      "get": {
        "operationId": "listInvoices",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Opaque cursor from next_cursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Opaque cursor from next_cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_InvoiceOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List this organization's invoices",
        "tags": [
          "Billing"
        ]
      }
    },
    "/v1/orgs/{org}/notifications/quota": {
      "get": {
        "operationId": "getNotificationPreferences",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationPreferencesOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "This organization's storage-notification preferences",
        "tags": [
          "Notifications"
        ]
      },
      "put": {
        "operationId": "setNotificationPreferences",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationPreferencesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationPreferencesOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Turn this organization's storage-notification emails on or off",
        "tags": [
          "Notifications"
        ]
      }
    },
    "/v1/orgs/{org}/operations": {
      "get": {
        "operationId": "listOperations",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Filter by resource type",
            "in": "query",
            "name": "resource",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by resource type"
            }
          },
          {
            "description": "Filter by operation state",
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by operation state"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_OperationRef_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List operations",
        "tags": [
          "Operations"
        ]
      }
    },
    "/v1/orgs/{org}/operations/{operation_id}": {
      "get": {
        "operationId": "getOperation",
        "parameters": [
          {
            "in": "path",
            "name": "operation_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationRef"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get an operation",
        "tags": [
          "Operations"
        ]
      }
    },
    "/v1/orgs/{org}/operations/{operation_id}/cancel": {
      "post": {
        "operationId": "cancelOperation",
        "parameters": [
          {
            "description": "Operation id",
            "in": "path",
            "name": "operation_id",
            "required": true,
            "schema": {
              "description": "Operation id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationRef"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Cancel an operation that has not started",
        "tags": [
          "Operations"
        ]
      }
    },
    "/v1/orgs/{org}/operations/{operation_id}/retry": {
      "post": {
        "operationId": "retryOperation",
        "parameters": [
          {
            "description": "Operation id",
            "in": "path",
            "name": "operation_id",
            "required": true,
            "schema": {
              "description": "Operation id",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationRef"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Retry a failed operation",
        "tags": [
          "Operations"
        ]
      }
    },
    "/v1/orgs/{org}/s3": {
      "get": {
        "operationId": "getS3Service",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnrollmentOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get the S3 service",
        "tags": [
          "Object storage"
        ]
      },
      "post": {
        "operationId": "enableS3Service",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnrollmentOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Enable the S3 service",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/access-keys": {
      "get": {
        "operationId": "listAccessKeys",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_AccessKeyOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List S3 access keys (metadata only)",
        "tags": [
          "Object storage"
        ]
      },
      "post": {
        "operationId": "createAccessKey",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessKeyCreated"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Create an S3 access key (the secret is returned exactly once)",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/access-keys/{key_id}": {
      "delete": {
        "operationId": "revokeAccessKey",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessKeyAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Revoke an S3 access key",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/buckets": {
      "get": {
        "operationId": "listBuckets",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_BucketOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List buckets",
        "tags": [
          "Object storage"
        ]
      },
      "post": {
        "operationId": "createBucket",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BucketCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BucketAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Create a bucket",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/buckets/{bucket_id}": {
      "delete": {
        "operationId": "deleteBucket",
        "parameters": [
          {
            "in": "path",
            "name": "bucket_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Acknowledge that the bucket may still contain objects and delete it anyway. Required when the bucket was last observed to contain data; without it, the request fails with 409 bucket_not_empty. This does not erase anything and does not shorten the retention window; it is recorded in the audit trail as an explicit acknowledgement.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "default": false,
              "description": "Acknowledge that the bucket may still contain objects and delete it anyway. Required when the bucket was last observed to contain data; without it, the request fails with 409 bucket_not_empty. This does not erase anything and does not shorten the retention window; it is recorded in the audit trail as an explicit acknowledgement.",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BucketAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Delete a bucket (soft, with a retention window)",
        "tags": [
          "Object storage"
        ]
      },
      "get": {
        "operationId": "getBucket",
        "parameters": [
          {
            "in": "path",
            "name": "bucket_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BucketOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get a bucket",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/buckets/{bucket_id}/quota": {
      "put": {
        "operationId": "setBucketQuota",
        "parameters": [
          {
            "in": "path",
            "name": "bucket_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BucketQuotaRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BucketAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Resize a bucket's storage limit",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/buckets/{bucket_id}/restore": {
      "post": {
        "operationId": "restoreBucket",
        "parameters": [
          {
            "in": "path",
            "name": "bucket_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BucketAccepted"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Cancel a soft delete and restore access",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/endpoints": {
      "get": {
        "operationId": "listEndpoints",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_EndpointOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List published S3 endpoints and addressing styles",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/pricing": {
      "get": {
        "operationId": "listS3Pricing",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponse_BillingPriceOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "List the unit prices S3 is sold at",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/quota": {
      "get": {
        "operationId": "getQuota",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/S3QuotaOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get committed/soft/hard quota and current burst state",
        "tags": [
          "Object storage"
        ]
      },
      "put": {
        "operationId": "setQuota",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/S3QuotaUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/S3QuotaUpdateOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential does not have permission to perform this operation."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Set the organization's hard storage ceiling",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/usage": {
      "get": {
        "operationId": "getUsage",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Bucket width for the series.",
            "in": "query",
            "name": "granularity",
            "required": false,
            "schema": {
              "default": "hour",
              "description": "Bucket width for the series.",
              "enum": [
                "hour",
                "day"
              ],
              "type": "string"
            }
          },
          {
            "description": "Window start (inclusive). Default: start of the current UTC month.",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Window start (inclusive). Default: start of the current UTC month."
            }
          },
          {
            "description": "Window end (exclusive). Default: now.",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Window end (exclusive). Default: now."
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/S3UsageOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get usage over a time window",
        "tags": [
          "Object storage"
        ]
      }
    },
    "/v1/orgs/{org}/s3/usage/by-bucket": {
      "get": {
        "operationId": "getUsageByBucket",
        "parameters": [
          {
            "description": "The organization's id.",
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "description": "The organization's id.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Bucket width for the series.",
            "in": "query",
            "name": "granularity",
            "required": false,
            "schema": {
              "default": "day",
              "description": "Bucket width for the series.",
              "enum": [
                "hour",
                "day"
              ],
              "type": "string"
            }
          },
          {
            "description": "Window start (inclusive). Default: 7 days ago.",
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Window start (inclusive). Default: 7 days ago."
            }
          },
          {
            "description": "Window end (exclusive). Default: now.",
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Window end (exclusive). Default: now."
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/S3BucketUsageOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The request is malformed or failed validation."
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The credential is missing or invalid."
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "The resource does not exist."
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Any other status is possible; the `code` field identifies the error."
          }
        },
        "summary": "Get per-bucket footprint over a time window",
        "tags": [
          "Object storage"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "servers": [
    {
      "description": "Production",
      "url": "https://api.virtscale.nl"
    }
  ],
  "tags": [
    {
      "description": "Organization-level context: the organization a credential belongs to and its default settings.",
      "name": "Organizations"
    },
    {
      "description": "Create, list and revoke the API keys used to authenticate programmatically.",
      "name": "API keys"
    },
    {
      "description": "Query the record of actions taken in an organization.",
      "name": "Audit log"
    },
    {
      "description": "Track and control the asynchronous operations that compute and storage mutations create.",
      "name": "Operations"
    },
    {
      "description": "Manage S3-compatible buckets, access keys and usage for the object storage service.",
      "name": "Object storage"
    },
    {
      "description": "View billing status, invoices and manage the monthly spend budget.",
      "name": "Billing"
    },
    {
      "description": "Configure notification preferences for usage and quota events.",
      "name": "Notifications"
    },
    {
      "description": "Manage compute instances, images, networking and the regions and sizes available to run them.",
      "name": "Compute"
    }
  ]
}
