{
  "components": {
    "schemas": {
      "Accepted": {
        "additionalProperties": true,
        "description": "A change accepted for a location: follow `operation` until it finishes. Most bodies also\nname the resource being made or changed, under its type (for example `server`), with its\n`id` and `href`.",
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/OperationLink"
          }
        },
        "required": [
          "operation"
        ],
        "title": "Accepted",
        "type": "object"
      },
      "AcceptedInvitation": {
        "description": "The membership the invitation made, and its project roles.",
        "properties": {
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "membership_id": {
            "description": "The new membership (`mem_…`).",
            "title": "Membership Id",
            "type": "string"
          },
          "organization": {
            "$ref": "#/components/schemas/InvitingOrganization"
          },
          "project_count": {
            "description": "How many project roles come with it.",
            "title": "Project Count",
            "type": "integer"
          },
          "project_grants": {
            "description": "The project roles given.",
            "items": {
              "$ref": "#/components/schemas/AcceptedProjectRole"
            },
            "title": "Project Grants",
            "type": "array"
          },
          "project_grants_skipped": {
            "description": "The project roles that could not be given, each with why.",
            "items": {
              "$ref": "#/components/schemas/AcceptedProjectRole"
            },
            "title": "Project Grants Skipped",
            "type": "array"
          },
          "role": {
            "description": "The organization role it offers.",
            "title": "Role",
            "type": "string"
          },
          "roles": {
            "items": {
              "type": "string"
            },
            "title": "Roles",
            "type": "array"
          }
        },
        "required": [
          "organization",
          "role",
          "expires_at",
          "project_count",
          "membership_id",
          "roles",
          "project_grants",
          "project_grants_skipped"
        ],
        "title": "AcceptedInvitation",
        "type": "object"
      },
      "AcceptedProjectRole": {
        "properties": {
          "operation_id": {
            "description": "Granted only: the operation giving the access (`op_…`).",
            "title": "Operation Id",
            "type": "string"
          },
          "project_id": {
            "description": "The project (`prj_…`).",
            "title": "Project Id",
            "type": "string"
          },
          "reason": {
            "description": "Skipped only: `project_unavailable` or `inviter_not_permitted`.",
            "title": "Reason",
            "type": "string"
          },
          "role": {
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "role"
        ],
        "title": "AcceptedProjectRole",
        "type": "object"
      },
      "AccessRule": {
        "additionalProperties": false,
        "description": "One Keystone access rule: the credential may call only what some rule matches.",
        "properties": {
          "method": {
            "description": "`GET`, `HEAD`, `POST`, `PUT`, `PATCH` or `DELETE`.",
            "title": "Method",
            "type": "string"
          },
          "path": {
            "description": "The API path from `/`: `*` or `{name}` matches one segment, `**` any number.",
            "title": "Path",
            "type": "string"
          },
          "service": {
            "description": "The service type, such as `compute` or `volumev3`.",
            "title": "Service",
            "type": "string"
          }
        },
        "required": [
          "service",
          "method",
          "path"
        ],
        "title": "AccessRule",
        "type": "object"
      },
      "AccountBody": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "default": "",
            "maxLength": 256,
            "title": "Description",
            "type": "string"
          },
          "display_name": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Display Name",
            "type": "string"
          },
          "role": {
            "default": "member",
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "display_name"
        ],
        "title": "AccountBody",
        "type": "object"
      },
      "AccountProjectRole": {
        "properties": {
          "id": {
            "description": "The grant (`grt_…`).",
            "title": "Id",
            "type": "string"
          },
          "project_id": {
            "title": "Project Id",
            "type": "string"
          },
          "project_name": {
            "title": "Project Name",
            "type": "string"
          },
          "role": {
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "id",
          "project_id",
          "project_name",
          "role"
        ],
        "title": "AccountProjectRole",
        "type": "object"
      },
      "ActionBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "title": "ActionBody",
        "type": "object"
      },
      "ActiveOperation": {
        "description": "The operation acting on a resource now.",
        "properties": {
          "id": {
            "description": "The operation (`op_…`).",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "setting_up": {
            "description": "True while it is the resource's own create, still finishing (a network's range being attached to the private router, say); false for a change to it.",
            "title": "Setting Up",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "kind",
          "setting_up"
        ],
        "title": "ActiveOperation",
        "type": "object"
      },
      "Activity": {
        "description": "The newest operations about the resource.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ResourceOperation"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "id",
          "items"
        ],
        "title": "Activity",
        "type": "object"
      },
      "ActorRef": {
        "description": "Who started something.",
        "properties": {
          "email": {
            "description": "A member's address, only to a caller who manages members.",
            "title": "Email",
            "type": "string"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The person (`usr_…`); null for NubeStack Cloud itself.",
            "title": "Id"
          },
          "kind": {
            "description": "A member of this organization, one of its service accounts, someone who has left it, or NubeStack Cloud itself (its own work, or its staff).",
            "enum": [
              "person",
              "service_account",
              "former_member",
              "nexus"
            ],
            "title": "Kind",
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A member's display name or a service account's name, to a caller who may see the members; otherwise null.",
            "title": "Name"
          },
          "you": {
            "description": "Whether it was the caller.",
            "title": "You",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "you",
          "kind",
          "name"
        ],
        "title": "ActorRef",
        "type": "object"
      },
      "AddressBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "network_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Network Id"
          },
          "server_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Server Id"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels `key: value` NubeStack Cloud keeps and writes to the resource in its location as `nx.<key>=<value>` (a volume's metadata key `nx.<key>`), keeping its other tags. At most 20; a key is 1-32 of `a-z`, `0-9`, `_`, `.`, `-`, starting with a letter; a value is 0-24 of `A-Z`, `a-z`, `0-9`, `_`, `.`, `:`, `-`. An organization uses at most 50 keys.",
            "maxProperties": 64,
            "title": "Tags",
            "type": "object"
          }
        },
        "required": [
          "location"
        ],
        "title": "AddressBody",
        "type": "object"
      },
      "AllocatedProject": {
        "properties": {
          "placement": {
            "description": "The project's placement there (`plc_…`).",
            "title": "Placement",
            "type": "string"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectRef"
          },
          "quota": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Per resource class.",
            "title": "Quota",
            "type": "object"
          },
          "version": {
            "description": "For `If-Match` when setting its quota.",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "project",
          "placement",
          "version",
          "quota"
        ],
        "title": "AllocatedProject",
        "type": "object"
      },
      "AllocationLocation": {
        "properties": {
          "classes": {
            "items": {
              "$ref": "#/components/schemas/BudgetClass"
            },
            "title": "Classes",
            "type": "array"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "projects": {
            "items": {
              "$ref": "#/components/schemas/AllocatedProject"
            },
            "title": "Projects",
            "type": "array"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "location",
          "slug",
          "display_name",
          "classes",
          "projects"
        ],
        "title": "AllocationLocation",
        "type": "object"
      },
      "ApiKey": {
        "description": "An API key, never with the key itself.",
        "properties": {
          "accountable_owner": {
            "description": "Who answers for it (`usr_…`).",
            "title": "Accountable Owner",
            "type": "string"
          },
          "attest_by": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Set when its accountable owner lost the right to manage it: it stops then unless an owner or admin keeps it.",
            "title": "Attest By"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "id": {
            "description": "The key (`key_…`).",
            "title": "Id",
            "type": "string"
          },
          "key_id": {
            "description": "The key's public identifier, the first part of the key.",
            "title": "Key Id",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "predecessor_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The key it replaced, after a rotation.",
            "title": "Predecessor Id"
          },
          "revoked_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked Reason"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          },
          "status": {
            "description": "`active`, `expired` or `revoked`.",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key_id",
          "display_name",
          "scopes",
          "status",
          "revoked_reason",
          "expires_at",
          "last_used_at",
          "created_by",
          "created_at",
          "predecessor_id",
          "accountable_owner",
          "attest_by"
        ],
        "title": "ApiKey",
        "type": "object"
      },
      "ApiKeyList": {
        "description": "The service account's keys.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ApiKey"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "next_cursor",
          "items"
        ],
        "title": "ApiKeyList",
        "type": "object"
      },
      "AppliedQuota": {
        "properties": {
          "enforced": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enforced"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "state": {
            "description": "`applied`, `pending`, `failed`, `removed` or `not_enforced`.",
            "title": "State",
            "type": "string"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value"
          }
        },
        "required": [
          "value",
          "state",
          "enforced",
          "reason"
        ],
        "title": "AppliedQuota",
        "type": "object"
      },
      "AssociateBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "load_balancer_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Load Balancer Id"
          },
          "network_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Network Id"
          },
          "server_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Server Id"
          }
        },
        "title": "AssociateBody",
        "type": "object"
      },
      "AttachBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "volume_id": {
            "title": "Volume Id",
            "type": "string"
          }
        },
        "required": [
          "volume_id"
        ],
        "title": "AttachBody",
        "type": "object"
      },
      "Attested": {
        "description": "A key or credential kept: the caller answers for it from now on.",
        "properties": {
          "accountable_owner": {
            "title": "Accountable Owner",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "accountable_owner"
        ],
        "title": "Attested",
        "type": "object"
      },
      "AuditActor": {
        "properties": {
          "function": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "For NubeStack Cloud itself: which part of it acted.",
            "title": "Function"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The person or service account (`usr_…`).",
            "title": "Id"
          },
          "type": {
            "description": "`human`, `service`, `support`, `operator` or `system`.",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "function"
        ],
        "title": "AuditActor",
        "type": "object"
      },
      "AuditEvent": {
        "description": "Who did what to which target, when, and the outcome.",
        "properties": {
          "action": {
            "description": "The action as recorded, for support.",
            "title": "Action",
            "type": "string"
          },
          "actor": {
            "$ref": "#/components/schemas/AuditActor"
          },
          "category": {
            "title": "Category",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "id": {
            "description": "The event (`evt_…`).",
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "The event's systematic name, such as `project.create`.",
            "title": "Name",
            "type": "string"
          },
          "occurred_at": {
            "format": "date-time",
            "title": "Occurred At",
            "type": "string"
          },
          "operation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Operation Id"
          },
          "outcome": {
            "description": "`accepted`, `succeeded`, `failed` or `denied`.",
            "title": "Outcome",
            "type": "string"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The reason given for the change, if one was.",
            "title": "Reason"
          },
          "request_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Request Id"
          },
          "severity": {
            "title": "Severity",
            "type": "string"
          },
          "summary": {
            "additionalProperties": true,
            "description": "What changed, with secrets left out.",
            "title": "Summary",
            "type": "object"
          },
          "target": {
            "$ref": "#/components/schemas/AuditTarget"
          }
        },
        "required": [
          "id",
          "occurred_at",
          "name",
          "category",
          "severity",
          "description",
          "outcome",
          "actor",
          "target",
          "operation_id",
          "request_id",
          "reason",
          "action",
          "summary"
        ],
        "title": "AuditEvent",
        "type": "object"
      },
      "AuditEventList": {
        "description": "A page of audit events, newest first.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AuditEvent"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          },
          "taxonomy_version": {
            "title": "Taxonomy Version",
            "type": "integer"
          }
        },
        "required": [
          "next_cursor",
          "items",
          "taxonomy_version"
        ],
        "title": "AuditEventList",
        "type": "object"
      },
      "AuditEventView": {
        "properties": {
          "action": {
            "description": "The action as recorded, for support.",
            "title": "Action",
            "type": "string"
          },
          "actor": {
            "$ref": "#/components/schemas/AuditActor"
          },
          "category": {
            "title": "Category",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "id": {
            "description": "The event (`evt_…`).",
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "The event's systematic name, such as `project.create`.",
            "title": "Name",
            "type": "string"
          },
          "occurred_at": {
            "format": "date-time",
            "title": "Occurred At",
            "type": "string"
          },
          "operation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Operation Id"
          },
          "outcome": {
            "description": "`accepted`, `succeeded`, `failed` or `denied`.",
            "title": "Outcome",
            "type": "string"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The reason given for the change, if one was.",
            "title": "Reason"
          },
          "request_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Request Id"
          },
          "severity": {
            "title": "Severity",
            "type": "string"
          },
          "summary": {
            "additionalProperties": true,
            "description": "What changed, with secrets left out.",
            "title": "Summary",
            "type": "object"
          },
          "target": {
            "$ref": "#/components/schemas/AuditTarget"
          },
          "taxonomy_version": {
            "description": "The version of the names and categories.",
            "title": "Taxonomy Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "occurred_at",
          "name",
          "category",
          "severity",
          "description",
          "outcome",
          "actor",
          "target",
          "operation_id",
          "request_id",
          "reason",
          "action",
          "summary",
          "taxonomy_version"
        ],
        "title": "AuditEventView",
        "type": "object"
      },
      "AuditSettings": {
        "description": "What members may read of the audit log.",
        "properties": {
          "export_enabled": {
            "title": "Export Enabled",
            "type": "boolean"
          },
          "lookback_days": {
            "description": "How many days of it members read and export.",
            "title": "Lookback Days",
            "type": "integer"
          },
          "max_lookback_days": {
            "description": "The most the organization's tier allows.",
            "title": "Max Lookback Days",
            "type": "integer"
          },
          "min_lookback_days": {
            "title": "Min Lookback Days",
            "type": "integer"
          },
          "note": {
            "title": "Note",
            "type": "string"
          },
          "version": {
            "description": "Send as `audit_version` when changing these.",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "lookback_days",
          "max_lookback_days",
          "min_lookback_days",
          "export_enabled",
          "version",
          "note"
        ],
        "title": "AuditSettings",
        "type": "object"
      },
      "AuditTarget": {
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          }
        },
        "required": [
          "type",
          "id"
        ],
        "title": "AuditTarget",
        "type": "object"
      },
      "BackupTimetable": {
        "additionalProperties": false,
        "properties": {
          "days": {
            "anyOf": [
              {
                "items": {
                  "enum": [
                    "mon",
                    "tue",
                    "wed",
                    "thu",
                    "fri",
                    "sat",
                    "sun"
                  ],
                  "type": "string"
                },
                "maxItems": 7,
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Weekly: the days of the week.",
            "title": "Days"
          },
          "frequency": {
            "enum": [
              "hourly",
              "daily",
              "weekly"
            ],
            "title": "Frequency",
            "type": "string"
          },
          "minute": {
            "anyOf": [
              {
                "maximum": 59,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Hourly: the minute of each hour (default 0).",
            "title": "Minute"
          },
          "time": {
            "anyOf": [
              {
                "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Daily and weekly: the local time, HH:MM.",
            "title": "Time"
          }
        },
        "required": [
          "frequency"
        ],
        "title": "BackupTimetable",
        "type": "object"
      },
      "BootableBody": {
        "additionalProperties": false,
        "properties": {
          "bootable": {
            "title": "Bootable",
            "type": "boolean"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "required": [
          "bootable"
        ],
        "title": "BootableBody",
        "type": "object"
      },
      "BootstrapBody": {
        "additionalProperties": false,
        "properties": {
          "cidr": {
            "default": "10.0.0.0/24",
            "maxLength": 43,
            "title": "Cidr",
            "type": "string"
          },
          "dns_nameservers": {
            "items": {
              "type": "string"
            },
            "maxItems": 4,
            "title": "Dns Nameservers",
            "type": "array"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "title": "BootstrapBody",
        "type": "object"
      },
      "BudgetClass": {
        "description": "One class of a location's budget: what the organization has, gave out and has left.",
        "properties": {
          "allocated": {
            "description": "Given to the organization's projects there.",
            "title": "Allocated",
            "type": "string"
          },
          "available": {
            "title": "Available",
            "type": "string"
          },
          "budget": {
            "title": "Budget",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "resource_class": {
            "title": "Resource Class",
            "type": "string"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "resource_class",
          "display_name",
          "unit",
          "budget",
          "allocated",
          "available"
        ],
        "title": "BudgetClass",
        "type": "object"
      },
      "BudgetLeft": {
        "properties": {
          "allocated": {
            "title": "Allocated",
            "type": "string"
          },
          "available": {
            "title": "Available",
            "type": "string"
          },
          "budget": {
            "title": "Budget",
            "type": "string"
          }
        },
        "required": [
          "budget",
          "allocated",
          "available"
        ],
        "title": "BudgetLeft",
        "type": "object"
      },
      "BudgetRequest": {
        "description": "A request to the provider for a larger budget.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "decided_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decided At"
          },
          "decision_note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decision Note"
          },
          "id": {
            "description": "The request (`qrq_…`).",
            "title": "Id",
            "type": "string"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "reason": {
            "title": "Reason",
            "type": "string"
          },
          "requested_by": {
            "title": "Requested By",
            "type": "string"
          },
          "state": {
            "description": "`open`, `approved`, `rejected` or `cancelled`.",
            "title": "State",
            "type": "string"
          },
          "values": {
            "additionalProperties": {
              "$ref": "#/components/schemas/RequestedValue"
            },
            "description": "Per resource class.",
            "title": "Values",
            "type": "object"
          },
          "version": {
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "location",
          "state",
          "reason",
          "requested_by",
          "decision_note",
          "decided_at",
          "created_at",
          "version",
          "values"
        ],
        "title": "BudgetRequest",
        "type": "object"
      },
      "BudgetRequestList": {
        "description": "The organization's budget requests.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/BudgetRequest"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "BudgetRequestList",
        "type": "object"
      },
      "CancelledOperation": {
        "description": "The operation, cancelled.",
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/OperationState"
          }
        },
        "required": [
          "operation"
        ],
        "title": "CancelledOperation",
        "type": "object"
      },
      "Catalog": {
        "description": "What can be created in one location.",
        "properties": {
          "location": {
            "description": "The location (`loc_…`).",
            "title": "Location",
            "type": "string"
          },
          "offerings": {
            "items": {
              "$ref": "#/components/schemas/Offering"
            },
            "title": "Offerings",
            "type": "array"
          }
        },
        "required": [
          "location",
          "offerings"
        ],
        "title": "Catalog",
        "type": "object"
      },
      "Ceiling": {
        "description": "A ceiling on a class across every location together.",
        "properties": {
          "allocated": {
            "description": "Given to projects in all locations together.",
            "title": "Allocated",
            "type": "string"
          },
          "cap": {
            "title": "Cap",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "resource_class": {
            "title": "Resource Class",
            "type": "string"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "resource_class",
          "display_name",
          "unit",
          "cap",
          "allocated"
        ],
        "title": "Ceiling",
        "type": "object"
      },
      "CertificateCreateBody": {
        "additionalProperties": false,
        "description": "A TLS certificate for HTTPS load balancers. The private key is checked, sealed at once and\ndelivered into the location's key manager; NubeStack Cloud never shows it again or keeps a way to open\nit once it is delivered.",
        "properties": {
          "certificate": {
            "description": "The certificate, PEM (the leaf only).",
            "maxLength": 32768,
            "minLength": 1,
            "title": "Certificate",
            "type": "string"
          },
          "chain": {
            "anyOf": [
              {
                "maxLength": 32768,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Intermediate certificates, PEM, the leaf's issuer first, at most 5.",
            "title": "Chain"
          },
          "display_name": {
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[\\x20-\\x7e]{1,64}$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "private_key": {
            "description": "The certificate's private key, PEM, unencrypted: RSA of at least 2048 bits, or EC on P-256 or P-384. Never shown back.",
            "maxLength": 32768,
            "minLength": 1,
            "title": "Private Key",
            "type": "string"
          }
        },
        "required": [
          "location",
          "display_name",
          "certificate",
          "private_key"
        ],
        "title": "CertificateCreateBody",
        "type": "object"
      },
      "CertificateList": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/CertificateView"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "CertificateList",
        "type": "object"
      },
      "CertificateListener": {
        "properties": {
          "listener_id": {
            "title": "Listener Id",
            "type": "string"
          },
          "listener_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Null for a listener with no name.",
            "title": "Listener Name"
          },
          "port": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Port"
          },
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "As inventory last read it.",
            "title": "Protocol"
          },
          "role": {
            "default": "default",
            "description": "`default`: the listener serves it to a client whose host name no other certificate covers; `sni`: only to a client asking for one of its names.",
            "enum": [
              "default",
              "sni"
            ],
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "listener_id",
          "listener_name"
        ],
        "title": "CertificateListener",
        "type": "object"
      },
      "CertificateView": {
        "description": "A certificate's public facts. The key is never shown.",
        "properties": {
          "chain_length": {
            "title": "Chain Length",
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "days_left": {
            "description": "Whole days until `not_after` (negative once expired).",
            "title": "Days Left",
            "type": "integer"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "fingerprint_sha256": {
            "title": "Fingerprint Sha256",
            "type": "string"
          },
          "id": {
            "description": "`crt_…`",
            "title": "Id",
            "type": "string"
          },
          "in_use_by": {
            "items": {
              "$ref": "#/components/schemas/CertificateListener"
            },
            "title": "In Use By",
            "type": "array"
          },
          "key_bits": {
            "title": "Key Bits",
            "type": "integer"
          },
          "key_type": {
            "title": "Key Type",
            "type": "string"
          },
          "last_operation": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Operation"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "names": {
            "description": "The DNS names and addresses it covers.",
            "items": {
              "type": "string"
            },
            "title": "Names",
            "type": "array"
          },
          "not_after": {
            "format": "date-time",
            "title": "Not After",
            "type": "string"
          },
          "not_before": {
            "format": "date-time",
            "title": "Not Before",
            "type": "string"
          },
          "state": {
            "description": "`creating`, `active`, `error`, `create_failed` or `deleting`.",
            "title": "State",
            "type": "string"
          },
          "subject": {
            "title": "Subject",
            "type": "string"
          }
        },
        "required": [
          "id",
          "display_name",
          "location",
          "state",
          "subject",
          "names",
          "not_before",
          "not_after",
          "days_left",
          "fingerprint_sha256",
          "key_type",
          "key_bits",
          "chain_length",
          "in_use_by",
          "last_operation",
          "error",
          "created_at"
        ],
        "title": "CertificateView",
        "type": "object"
      },
      "ChangedPlacement": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "version": {
            "description": "The new version, also the `ETag`.",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "id",
          "version"
        ],
        "title": "ChangedPlacement",
        "type": "object"
      },
      "CloseBody": {
        "additionalProperties": false,
        "properties": {
          "confirmed_report": {
            "additionalProperties": {
              "additionalProperties": {
                "additionalProperties": {
                  "type": "integer"
                },
                "type": "object"
              },
              "type": "object"
            },
            "maxProperties": 200,
            "title": "Confirmed Report",
            "type": "object"
          }
        },
        "title": "CloseBody",
        "type": "object"
      },
      "Closure": {
        "description": "An organization's closure and its dates.",
        "properties": {
          "billing_cutoff_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Usage up to here is billed.",
            "title": "Billing Cutoff At"
          },
          "by_operator": {
            "description": "Whether the provider closed it rather than an owner.",
            "title": "By Operator",
            "type": "boolean"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cancelled At"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "export": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ClosureExport"
              },
              {
                "type": "null"
              }
            ],
            "description": "The owners' data export while the organization is closing, if asked for."
          },
          "held": {
            "description": "Whether the provider holds the closure for now.",
            "title": "Held",
            "type": "boolean"
          },
          "records_kept_until": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Until when the audit log and usage are kept after closing.",
            "title": "Records Kept Until"
          },
          "requested_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested At"
          },
          "retention_until": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Until when the closure can be cancelled.",
            "title": "Retention Until"
          },
          "usage_final_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Usage Final At"
          }
        },
        "required": [
          "requested_at",
          "by_operator",
          "retention_until",
          "held",
          "usage_final_at",
          "completed_at",
          "records_kept_until",
          "cancelled_at",
          "billing_cutoff_at"
        ],
        "title": "Closure",
        "type": "object"
      },
      "ClosureAccepted": {
        "description": "An organization's closure, or its cancellation, accepted: one operation per project.",
        "properties": {
          "invitations_revoked": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "On closing: how many pending invitations were revoked.",
            "title": "Invitations Revoked"
          },
          "operations": {
            "description": "One operation per project (`op_…`), to follow.",
            "items": {
              "type": "string"
            },
            "title": "Operations",
            "type": "array"
          },
          "projects": {
            "description": "The projects it applies to (`prj_…`).",
            "items": {
              "type": "string"
            },
            "title": "Projects",
            "type": "array"
          }
        },
        "required": [
          "projects",
          "operations"
        ],
        "title": "ClosureAccepted",
        "type": "object"
      },
      "ClosureExport": {
        "description": "A closing organization's data export (`POST {O}/data-export`).",
        "properties": {
          "operation_id": {
            "description": "The operation that prepares it (`op_…`).",
            "title": "Operation Id",
            "type": "string"
          },
          "ready_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When it became ready to download.",
            "title": "Ready At"
          },
          "requested_at": {
            "description": "When it was asked for: it holds records up to then.",
            "format": "date-time",
            "title": "Requested At",
            "type": "string"
          }
        },
        "required": [
          "requested_at",
          "ready_at",
          "operation_id"
        ],
        "title": "ClosureExport",
        "type": "object"
      },
      "ClosureProject": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "placements": {
            "items": {
              "$ref": "#/components/schemas/PlacementReportView"
            },
            "title": "Placements",
            "type": "array"
          },
          "project_id": {
            "title": "Project Id",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "slug",
          "display_name",
          "placements"
        ],
        "title": "ClosureProject",
        "type": "object"
      },
      "ClosureReport": {
        "description": "What closing the organization would remove, and how long it is kept first.",
        "properties": {
          "projects": {
            "items": {
              "$ref": "#/components/schemas/ClosureProject"
            },
            "title": "Projects",
            "type": "array"
          },
          "records_retention_s": {
            "description": "How long, in seconds, the audit log and usage are kept after closing.",
            "title": "Records Retention S",
            "type": "integer"
          },
          "retention_s": {
            "description": "How long, in seconds, the data is kept first.",
            "title": "Retention S",
            "type": "integer"
          }
        },
        "required": [
          "projects",
          "retention_s",
          "records_retention_s"
        ],
        "title": "ClosureReport",
        "type": "object"
      },
      "CollectionSource": {
        "properties": {
          "data_as_of": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data As Of"
          },
          "last_success_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Success At"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "problem": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SourceProblem"
              },
              {
                "type": "null"
              }
            ]
          },
          "service": {
            "title": "Service",
            "type": "string"
          },
          "status": {
            "enum": [
              "ok",
              "partial",
              "stale",
              "unavailable"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "location",
          "service",
          "status",
          "data_as_of",
          "last_success_at"
        ],
        "title": "CollectionSource",
        "type": "object"
      },
      "ConfirmBody": {
        "additionalProperties": false,
        "properties": {
          "confirmed_report": {
            "additionalProperties": {
              "type": "integer"
            },
            "maxProperties": 12,
            "title": "Confirmed Report",
            "type": "object"
          }
        },
        "title": "ConfirmBody",
        "type": "object"
      },
      "ConfirmedRemoval": {
        "properties": {
          "confirmed": {
            "const": true,
            "title": "Confirmed",
            "type": "boolean"
          },
          "placement_id": {
            "title": "Placement Id",
            "type": "string"
          }
        },
        "required": [
          "placement_id",
          "confirmed"
        ],
        "title": "ConfirmedRemoval",
        "type": "object"
      },
      "ConnectBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "peer_network_id": {
            "title": "Peer Network Id",
            "type": "string"
          }
        },
        "required": [
          "peer_network_id"
        ],
        "title": "ConnectBody",
        "type": "object"
      },
      "Connection": {
        "description": "What the OpenStack CLI needs to sign in to the project in one location. No secret.",
        "properties": {
          "auth_type": {
            "description": "The device-flow sign-in plugin.",
            "title": "Auth Type",
            "type": "string"
          },
          "auth_url": {
            "title": "Auth Url",
            "type": "string"
          },
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "discovery_endpoint": {
            "title": "Discovery Endpoint",
            "type": "string"
          },
          "identity_api_version": {
            "title": "Identity Api Version",
            "type": "integer"
          },
          "identity_provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Identity Provider"
          },
          "interface": {
            "title": "Interface",
            "type": "string"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "native_access": {
            "description": "Whether the caller holds a role that lets them in.",
            "title": "Native Access",
            "type": "boolean"
          },
          "project_id": {
            "description": "The project's ID in the location.",
            "title": "Project Id",
            "type": "string"
          },
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Protocol"
          },
          "region": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Region"
          }
        },
        "required": [
          "auth_type",
          "auth_url",
          "identity_provider",
          "protocol",
          "client_id",
          "discovery_endpoint",
          "project_id",
          "region",
          "interface",
          "identity_api_version",
          "location",
          "native_access"
        ],
        "title": "Connection",
        "type": "object"
      },
      "ConsoleBody": {
        "additionalProperties": false,
        "properties": {
          "protocol": {
            "const": "novnc",
            "description": "The console type: `novnc`, a console a browser opens without a plug-in.",
            "title": "Protocol",
            "type": "string"
          },
          "public_key": {
            "$ref": "#/components/schemas/nexus__api__routes__consoles__PublicJwk",
            "description": "The key the console URL is encrypted to."
          }
        },
        "required": [
          "protocol",
          "public_key"
        ],
        "title": "ConsoleBody",
        "type": "object"
      },
      "ConsoleCollected": {
        "description": "A console URL or console log, encrypted to the key the request sent (a compact JWE,\n`ECDH-ES` with `A256GCM`). Only the browser tab holding the private key can open it; NubeStack Cloud\nkeeps no copy. A console URL's payload is `{url, protocol, minted_at}`, a log's\n`{output, lines, truncated, observed_at}`.",
        "properties": {
          "collected_at": {
            "format": "date-time",
            "title": "Collected At",
            "type": "string"
          },
          "expires_at": {
            "description": "When the console URL's token stops opening a console (a log: when the collection window ended).",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "id": {
            "description": "The console request (`csr_…`).",
            "title": "Id",
            "type": "string"
          },
          "jwe": {
            "title": "Jwe",
            "type": "string"
          },
          "kind": {
            "description": "`console` or `console_output`.",
            "title": "Kind",
            "type": "string"
          },
          "session_timeout": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Whether the location closes an open console when its token expires (Nova's `enforce_session_timeout`); null when the location has not declared it.",
            "title": "Session Timeout"
          }
        },
        "required": [
          "id",
          "kind",
          "jwe",
          "collected_at",
          "expires_at",
          "session_timeout"
        ],
        "title": "ConsoleCollected",
        "type": "object"
      },
      "ConsoleLink": {
        "description": "A link into the location's own web console.",
        "properties": {
          "deployment": {
            "title": "Deployment",
            "type": "string"
          },
          "kind": {
            "description": "`horizon` or `skyline`.",
            "title": "Kind",
            "type": "string"
          },
          "label": {
            "description": "Words for the link: `Open <location> in Horizon`, or in Skyline.",
            "title": "Label",
            "type": "string"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "native_access": {
            "description": "Whether the caller holds a role that lets them in.",
            "title": "Native Access",
            "type": "boolean"
          },
          "project_id": {
            "description": "The project's ID in the location.",
            "title": "Project Id",
            "type": "string"
          },
          "region": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Region"
          },
          "url": {
            "title": "Url",
            "type": "string"
          },
          "websso": {
            "description": "What the location's last check of the console's sign-in found.",
            "enum": [
              "verified",
              "failing",
              "unverified"
            ],
            "title": "Websso",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "url",
          "deployment",
          "location",
          "region",
          "project_id",
          "label",
          "native_access",
          "websso"
        ],
        "title": "ConsoleLink",
        "type": "object"
      },
      "ConsoleOutputBody": {
        "additionalProperties": false,
        "properties": {
          "lines": {
            "default": 200,
            "description": "How many lines from the end of the log, 1-2000.",
            "maximum": 2000,
            "minimum": 1,
            "title": "Lines",
            "type": "integer"
          },
          "public_key": {
            "$ref": "#/components/schemas/nexus__api__routes__consoles__PublicJwk",
            "description": "The key the log is encrypted to."
          }
        },
        "required": [
          "public_key"
        ],
        "title": "ConsoleOutputBody",
        "type": "object"
      },
      "CostDay": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Null when no hour of the day was rated.",
            "title": "Amount"
          },
          "day": {
            "description": "A UTC day, `YYYY-MM-DD`.",
            "title": "Day",
            "type": "string"
          }
        },
        "required": [
          "day",
          "amount"
        ],
        "title": "CostDay",
        "type": "object"
      },
      "CostGroup": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The rated hours' cost; null when none was rated.",
            "title": "Amount"
          },
          "days": {
            "items": {
              "$ref": "#/components/schemas/CostDay"
            },
            "title": "Days",
            "type": "array"
          },
          "key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The project (`prj_…`), the service, the location's slug or the tag's value (null: no location, or untagged).",
            "title": "Key"
          },
          "label": {
            "description": "The project's or location's name, or the service's label.",
            "title": "Label",
            "type": "string"
          }
        },
        "required": [
          "key",
          "label",
          "amount",
          "days"
        ],
        "title": "CostGroup",
        "type": "object"
      },
      "Costs": {
        "description": "A month's cost by project, service or location, day by day.",
        "properties": {
          "as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Usage collected up to this time is counted.",
            "title": "As Of"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ISO 4217; null before any statement was built.",
            "title": "Currency"
          },
          "group_by": {
            "description": "`project`, `service`, `location` or `tag:<key>`.",
            "title": "Group By",
            "type": "string"
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/CostGroup"
            },
            "title": "Groups",
            "type": "array"
          },
          "period": {
            "description": "The calendar month (UTC), `YYYY-MM`.",
            "title": "Period",
            "type": "string"
          },
          "previous": {
            "$ref": "#/components/schemas/Previous"
          },
          "project": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The project the answer is narrowed to.",
            "title": "Project"
          },
          "projection": {
            "$ref": "#/components/schemas/Projection"
          },
          "provisional": {
            "const": true,
            "description": "Usage is provisional until E10.",
            "title": "Provisional",
            "type": "boolean"
          },
          "services": {
            "description": "Every service's key and label.",
            "items": {
              "$ref": "#/components/schemas/Service"
            },
            "title": "Services",
            "type": "array"
          },
          "tag_keys": {
            "description": "The tag keys to group by: those with cost this month or on a resource now.",
            "items": {
              "type": "string"
            },
            "title": "Tag Keys",
            "type": "array"
          },
          "total": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The rated usage's cost so far this month.",
            "title": "Total"
          },
          "unrated": {
            "items": {
              "$ref": "#/components/schemas/Unrated"
            },
            "title": "Unrated",
            "type": "array"
          },
          "untagged": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "With `group_by=tag:<key>`: the cost of hours without that key (also the group with a null key); otherwise null.",
            "title": "Untagged"
          }
        },
        "required": [
          "period",
          "group_by",
          "project",
          "currency",
          "provisional",
          "as_of",
          "total",
          "unrated",
          "groups",
          "services",
          "tag_keys",
          "untagged",
          "previous",
          "projection"
        ],
        "title": "Costs",
        "type": "object"
      },
      "CredentialBody": {
        "additionalProperties": false,
        "properties": {
          "access_rules": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/AccessRule"
                },
                "maxItems": 16,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Access Rules"
          },
          "expires_in_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Expires In Days"
          },
          "placement_id": {
            "title": "Placement Id",
            "type": "string"
          },
          "public_key": {
            "$ref": "#/components/schemas/nexus__api__routes__service_accounts__PublicJwk"
          }
        },
        "required": [
          "placement_id",
          "public_key"
        ],
        "title": "CredentialBody",
        "type": "object"
      },
      "DeclinedInvitation": {
        "description": "A declined invitation.",
        "properties": {
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "organization": {
            "$ref": "#/components/schemas/InvitingOrganization"
          },
          "project_count": {
            "description": "How many project roles come with it.",
            "title": "Project Count",
            "type": "integer"
          },
          "role": {
            "description": "The organization role it offers.",
            "title": "Role",
            "type": "string"
          },
          "state": {
            "const": "declined",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "organization",
          "role",
          "expires_at",
          "project_count",
          "state"
        ],
        "title": "DeclinedInvitation",
        "type": "object"
      },
      "DefaultBody": {
        "additionalProperties": false,
        "properties": {
          "preset": {
            "anyOf": [
              {
                "maxLength": 40,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Preset"
          }
        },
        "title": "DefaultBody",
        "type": "object"
      },
      "DefaultPreset": {
        "description": "The organization's choice of default preset, and what new projects now get.",
        "properties": {
          "chosen": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chosen"
          },
          "default_profile": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Profile"
          }
        },
        "required": [
          "chosen",
          "default_profile"
        ],
        "title": "DefaultPreset",
        "type": "object"
      },
      "DeleteBody": {
        "additionalProperties": false,
        "properties": {
          "cascade": {
            "default": false,
            "title": "Cascade",
            "type": "boolean"
          },
          "confirmed_report": {
            "additionalProperties": {
              "additionalProperties": {
                "type": "integer"
              },
              "type": "object"
            },
            "maxProperties": 20,
            "title": "Confirmed Report",
            "type": "object"
          }
        },
        "title": "DeleteBody",
        "type": "object"
      },
      "DeleteNowBody": {
        "additionalProperties": false,
        "properties": {
          "confirm": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Confirm",
            "type": "string"
          }
        },
        "required": [
          "confirm"
        ],
        "title": "DeleteNowBody",
        "type": "object"
      },
      "DeletionReport": {
        "description": "What deleting the project would remove, and how long it is kept first.",
        "properties": {
          "data_as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data As Of"
          },
          "placements": {
            "items": {
              "$ref": "#/components/schemas/PlacementReportView"
            },
            "title": "Placements",
            "type": "array"
          },
          "retention_s": {
            "description": "How long, in seconds, the data is kept first.",
            "title": "Retention S",
            "type": "integer"
          },
          "sources": {
            "description": "How fresh each location's counts are.",
            "items": {
              "$ref": "#/components/schemas/CollectionSource"
            },
            "title": "Sources",
            "type": "array"
          }
        },
        "required": [
          "placements",
          "sources",
          "retention_s",
          "data_as_of"
        ],
        "title": "DeletionReport",
        "type": "object"
      },
      "Dimension": {
        "properties": {
          "key": {
            "description": "`flavor` or `volume_type`.",
            "title": "Key",
            "type": "string"
          },
          "value": {
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "title": "Dimension",
        "type": "object"
      },
      "Dismissed": {
        "properties": {
          "dismissed": {
            "const": true,
            "title": "Dismissed",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "dismissed"
        ],
        "title": "Dismissed",
        "type": "object"
      },
      "EntitledClass": {
        "properties": {
          "allocated": {
            "description": "Given to the organization's projects there.",
            "title": "Allocated",
            "type": "string"
          },
          "available": {
            "title": "Available",
            "type": "string"
          },
          "budget": {
            "title": "Budget",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "max_value": {
            "title": "Max Value",
            "type": "string"
          },
          "resource_class": {
            "title": "Resource Class",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "tier_default": {
            "description": "The budget the organization's tier comes with.",
            "title": "Tier Default",
            "type": "string"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "resource_class",
          "display_name",
          "unit",
          "budget",
          "allocated",
          "available",
          "status",
          "max_value",
          "tier_default"
        ],
        "title": "EntitledClass",
        "type": "object"
      },
      "EntitledLocation": {
        "properties": {
          "allowed": {
            "title": "Allowed",
            "type": "boolean"
          },
          "classes": {
            "items": {
              "$ref": "#/components/schemas/EntitledClass"
            },
            "title": "Classes",
            "type": "array"
          },
          "data_as_of": {
            "format": "date-time",
            "title": "Data As Of",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "location": {
            "description": "The location (`loc_…`).",
            "title": "Location",
            "type": "string"
          },
          "placements": {
            "description": "How many project locations it has there.",
            "title": "Placements",
            "type": "integer"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "location",
          "slug",
          "display_name",
          "allowed",
          "placements",
          "classes",
          "data_as_of"
        ],
        "title": "EntitledLocation",
        "type": "object"
      },
      "Entitlements": {
        "description": "The organization's budgets in each location.",
        "properties": {
          "caps": {
            "items": {
              "$ref": "#/components/schemas/Ceiling"
            },
            "title": "Caps",
            "type": "array"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/EntitledLocation"
            },
            "title": "Locations",
            "type": "array"
          },
          "managed": {
            "items": {
              "$ref": "#/components/schemas/ManagedClass"
            },
            "title": "Managed",
            "type": "array"
          },
          "projects": {
            "$ref": "#/components/schemas/ProjectLimit"
          },
          "tier": {
            "title": "Tier",
            "type": "string"
          }
        },
        "required": [
          "tier",
          "projects",
          "locations",
          "caps",
          "managed"
        ],
        "title": "Entitlements",
        "type": "object"
      },
      "ErrorCode": {
        "description": "Why something failed, as a stable machine-readable code.",
        "properties": {
          "code": {
            "description": "The problem code, as in the error catalogue.",
            "title": "Code",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "title": "ErrorCode",
        "type": "object"
      },
      "ExportBody": {
        "additionalProperties": false,
        "properties": {
          "month": {
            "description": "The calendar month (UTC), `YYYY-MM`.",
            "title": "Month",
            "type": "string"
          }
        },
        "required": [
          "month"
        ],
        "title": "ExportBody",
        "type": "object"
      },
      "ExportOperation": {
        "properties": {
          "href": {
            "title": "Href",
            "type": "string"
          },
          "id": {
            "description": "`op_…`",
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "href"
        ],
        "title": "ExportOperation",
        "type": "object"
      },
      "ExtendBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "size_gb": {
            "maximum": 4096,
            "minimum": 1,
            "title": "Size Gb",
            "type": "integer"
          }
        },
        "required": [
          "size_gb"
        ],
        "title": "ExtendBody",
        "type": "object"
      },
      "FailedStep": {
        "properties": {
          "action": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Action"
          },
          "error": {
            "$ref": "#/components/schemas/ErrorCode"
          }
        },
        "required": [
          "action",
          "error"
        ],
        "title": "FailedStep",
        "type": "object"
      },
      "Forwarding": {
        "description": "What each of an instance's interfaces forwards for, as inventory last read its ports.",
        "properties": {
          "available": {
            "description": "Whether the instance's location offers forwarding.",
            "title": "Available",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "interfaces": {
            "items": {
              "$ref": "#/components/schemas/ForwardingInterface"
            },
            "title": "Interfaces",
            "type": "array"
          },
          "withheld": {
            "default": false,
            "description": "The location's network data is withheld.",
            "title": "Withheld",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "available",
          "interfaces"
        ],
        "title": "Forwarding",
        "type": "object"
      },
      "ForwardingBody": {
        "additionalProperties": false,
        "properties": {
          "cidrs": {
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "title": "Cidrs",
            "type": "array"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "network_id": {
            "title": "Network Id",
            "type": "string"
          }
        },
        "required": [
          "network_id",
          "cidrs"
        ],
        "title": "ForwardingBody",
        "type": "object"
      },
      "ForwardingInterface": {
        "properties": {
          "addresses": {
            "description": "The interface's own addresses.",
            "items": {
              "type": "string"
            },
            "title": "Addresses",
            "type": "array"
          },
          "forwarding": {
            "description": "The ranges NubeStack Cloud set it to forward for.",
            "items": {
              "type": "string"
            },
            "title": "Forwarding",
            "type": "array"
          },
          "network_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The network (`net_…`); null for one not read.",
            "title": "Network Id"
          },
          "network_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Network Name"
          },
          "observed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Observed At"
          },
          "other_pairs": {
            "description": "Address pairs set with the cloud's own tools (`address` or `address mac`).",
            "items": {
              "type": "string"
            },
            "title": "Other Pairs",
            "type": "array"
          },
          "port_security_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "False: the interface sends and receives for any address already.",
            "title": "Port Security Enabled"
          }
        },
        "required": [
          "network_id",
          "network_name",
          "addresses",
          "port_security_enabled",
          "forwarding",
          "other_pairs",
          "observed_at"
        ],
        "title": "ForwardingInterface",
        "type": "object"
      },
      "Generation": {
        "properties": {
          "desired": {
            "title": "Desired",
            "type": "integer"
          },
          "observed": {
            "title": "Observed",
            "type": "integer"
          }
        },
        "required": [
          "desired",
          "observed"
        ],
        "title": "Generation",
        "type": "object"
      },
      "Grant": {
        "description": "A person's or service account's role on a project.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "description": "The grant (`grt_…`).",
            "title": "Id",
            "type": "string"
          },
          "principal_id": {
            "description": "A person (`usr_…`) or a service account (`sa_…`).",
            "title": "Principal Id",
            "type": "string"
          },
          "principal_type": {
            "enum": [
              "human",
              "service"
            ],
            "title": "Principal Type",
            "type": "string"
          },
          "project_id": {
            "title": "Project Id",
            "type": "string"
          },
          "role": {
            "title": "Role",
            "type": "string"
          },
          "service_account_name": {
            "description": "A service account's grant only: its name.",
            "title": "Service Account Name",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/GrantStatus"
          },
          "version": {
            "description": "Its version, also its `ETag`.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "project_id",
          "principal_id",
          "principal_type",
          "role",
          "status",
          "version",
          "created_at"
        ],
        "title": "Grant",
        "type": "object"
      },
      "GrantChange": {
        "additionalProperties": false,
        "properties": {
          "role": {
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "role"
        ],
        "title": "GrantChange",
        "type": "object"
      },
      "GrantCreate": {
        "additionalProperties": false,
        "properties": {
          "principal_id": {
            "title": "Principal Id",
            "type": "string"
          },
          "role": {
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "principal_id",
          "role"
        ],
        "title": "GrantCreate",
        "type": "object"
      },
      "GrantList": {
        "description": "A page of the project's grants.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Grant"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "next_cursor",
          "items"
        ],
        "title": "GrantList",
        "type": "object"
      },
      "GrantPlacement": {
        "description": "The grant's access in one of the project's locations.",
        "properties": {
          "id": {
            "description": "The project's placement (`plc_…`).",
            "title": "Id",
            "type": "string"
          },
          "locations": {
            "items": {
              "type": "string"
            },
            "title": "Locations",
            "type": "array"
          },
          "observed_generation": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Observed Generation"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "locations",
          "status",
          "reason",
          "observed_generation"
        ],
        "title": "GrantPlacement",
        "type": "object"
      },
      "GrantStatus": {
        "properties": {
          "placements": {
            "items": {
              "$ref": "#/components/schemas/GrantPlacement"
            },
            "title": "Placements",
            "type": "array"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "state",
          "placements"
        ],
        "title": "GrantStatus",
        "type": "object"
      },
      "GroupChangeBody": {
        "additionalProperties": false,
        "properties": {
          "desired": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Desired"
          },
          "max": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max"
          },
          "max_surge": {
            "anyOf": [
              {
                "maximum": 10,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max Surge"
          },
          "member_port": {
            "anyOf": [
              {
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Member Port"
          },
          "min": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Min"
          },
          "name": {
            "anyOf": [
              {
                "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,47}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "pool_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A pool for new instances; an empty string: none.",
            "title": "Pool Id"
          },
          "template_version": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A version of the template for new instances; 0: its latest version.",
            "title": "Template Version"
          }
        },
        "title": "GroupChangeBody",
        "type": "object"
      },
      "GroupDeleted": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "state": {
            "description": "`deleted` (instances kept) or `deleting` (being deleted).",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "id",
          "state"
        ],
        "title": "GroupDeleted",
        "type": "object"
      },
      "GroupList": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/GroupView"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "GroupList",
        "type": "object"
      },
      "GroupMember": {
        "properties": {
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "delete_operation": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delete Operation"
          },
          "failure": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Why it failed: `create_failed`, `error` or `gone`.",
            "title": "Failure"
          },
          "id": {
            "description": "The instance (`srv_`).",
            "title": "Id",
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "operation": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Operation",
            "type": "object"
          },
          "state": {
            "description": "`creating`, `active`, `failed`, `deleting`, `deleted` or `released` (kept as an ordinary instance).",
            "title": "State",
            "type": "string"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The instance's status as last observed.",
            "title": "Status"
          }
        },
        "required": [
          "id",
          "name",
          "state",
          "status",
          "failure",
          "operation",
          "delete_operation",
          "created_at"
        ],
        "title": "GroupMember",
        "type": "object"
      },
      "GroupRenameBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "required": [
          "display_name"
        ],
        "title": "GroupRenameBody",
        "type": "object"
      },
      "GroupTemplate": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "The pinned version; null: the latest.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "name",
          "version"
        ],
        "title": "GroupTemplate",
        "type": "object"
      },
      "GroupView": {
        "description": "A group, its counts and, on the item route, its members.",
        "properties": {
          "counts": {
            "additionalProperties": {
              "type": "integer"
            },
            "title": "Counts",
            "type": "object"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "desired": {
            "title": "Desired",
            "type": "integer"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "last_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The last refusal the reconcile met, if any.",
            "title": "Last Error"
          },
          "last_reconcile_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Reconcile At"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "max": {
            "title": "Max",
            "type": "integer"
          },
          "max_surge": {
            "title": "Max Surge",
            "type": "integer"
          },
          "member_port": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Member Port"
          },
          "members": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/GroupMember"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Members"
          },
          "min": {
            "title": "Min",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "paused_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "`customer`, `not_authorized`, `create_failures`, `replacement_limit`, `project_deleting` or `template_gone`.",
            "title": "Paused Reason"
          },
          "pool_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pool Id"
          },
          "run_as": {
            "title": "Run As",
            "type": "string"
          },
          "run_as_actor": {
            "$ref": "#/components/schemas/ActorRef",
            "description": "Who the group acts as, by name where the caller may see it."
          },
          "state": {
            "description": "`active`, `paused` or `deleting`.",
            "title": "State",
            "type": "string"
          },
          "template": {
            "$ref": "#/components/schemas/GroupTemplate"
          },
          "updated_at": {
            "title": "Updated At",
            "type": "string"
          },
          "version": {
            "description": "The ETag: send it in `If-Match` to change it.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "location",
          "template",
          "desired",
          "min",
          "max",
          "max_surge",
          "pool_id",
          "member_port",
          "state",
          "paused_reason",
          "last_error",
          "last_reconcile_at",
          "counts",
          "run_as",
          "run_as_actor",
          "version",
          "created_at",
          "updated_at"
        ],
        "title": "GroupView",
        "type": "object"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "title": "Detail",
            "type": "array"
          }
        },
        "title": "HTTPValidationError",
        "type": "object"
      },
      "HeldProjectRole": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "description": "The grant (`grt_…`).",
            "title": "Id",
            "type": "string"
          },
          "project_id": {
            "title": "Project Id",
            "type": "string"
          },
          "role": {
            "title": "Role",
            "type": "string"
          },
          "version": {
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "project_id",
          "role",
          "version",
          "created_at"
        ],
        "title": "HeldProjectRole",
        "type": "object"
      },
      "ImageBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "required": [
          "display_name"
        ],
        "title": "ImageBody",
        "type": "object"
      },
      "ImageImportBody": {
        "additionalProperties": false,
        "description": "An image the location's image service downloads from an https address.",
        "properties": {
          "architecture": {
            "anyOf": [
              {
                "pattern": "^[A-Za-z0-9._-]{1,64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Architecture"
          },
          "disk_format": {
            "pattern": "^(qcow2|raw|vmdk|vdi|vhd|vhdx|iso)$",
            "title": "Disk Format",
            "type": "string"
          },
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "min_disk_gb": {
            "default": 0,
            "maximum": 4096,
            "minimum": 0,
            "title": "Min Disk Gb",
            "type": "integer"
          },
          "min_ram_mb": {
            "default": 0,
            "maximum": 4194304,
            "minimum": 0,
            "title": "Min Ram Mb",
            "type": "integer"
          },
          "os_distro": {
            "anyOf": [
              {
                "pattern": "^[A-Za-z0-9._-]{1,64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Os Distro"
          },
          "os_version": {
            "anyOf": [
              {
                "pattern": "^[A-Za-z0-9._-]{1,64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Os Version"
          },
          "source_url": {
            "description": "The image file's https address, readable without a password: no query or fragment, so an address that carries a signature or token is refused (NubeStack Cloud does not keep secrets in commands).",
            "maxLength": 2048,
            "minLength": 9,
            "title": "Source Url",
            "type": "string"
          }
        },
        "required": [
          "location",
          "display_name",
          "source_url",
          "disk_format"
        ],
        "title": "ImageImportBody",
        "type": "object"
      },
      "ImageSource": {
        "description": "Where one of the project's own images came from: an instance saved through NubeStack Cloud, an\naddress NubeStack Cloud had the location's image service download, or made outside NubeStack Cloud.",
        "properties": {
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "An imported image: its address.",
            "title": "Address"
          },
          "instance_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "An instance's image: the instance it was saved from.",
            "title": "Instance Id"
          },
          "kind": {
            "description": "`instance`, `address` or `outside` (native tools).",
            "title": "Kind",
            "type": "string"
          }
        },
        "required": [
          "kind"
        ],
        "title": "ImageSource",
        "type": "object"
      },
      "InUse": {
        "properties": {
          "data_as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data As Of"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "state": {
            "title": "State",
            "type": "string"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Null while it is not known.",
            "title": "Value"
          }
        },
        "required": [
          "value",
          "state",
          "reason",
          "data_as_of"
        ],
        "title": "InUse",
        "type": "object"
      },
      "InterfaceBody": {
        "additionalProperties": false,
        "description": "A private network of the instance's location: attach makes an interface on its first\nsubnet with the instance's own security groups; detach removes the instance's interface on\nit.",
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "network_id": {
            "title": "Network Id",
            "type": "string"
          }
        },
        "required": [
          "network_id"
        ],
        "title": "InterfaceBody",
        "type": "object"
      },
      "InternetAccessBody": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "required": [
          "enabled"
        ],
        "title": "InternetAccessBody",
        "type": "object"
      },
      "InventoryItem": {
        "description": "A resource as last read from its location. The fields after `phase` that are not common to\nevery type are present only on the types they belong to.",
        "properties": {
          "active_operation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActiveOperation"
              },
              {
                "type": "null"
              }
            ],
            "description": "The operation acting on the resource now (one at a time), or null. A resource the cloud reads as active is still being set up or changed while this is set: a network just created, say, while its range is attached to the private router."
          },
          "attributes": {
            "additionalProperties": true,
            "description": "Its properties as the location reports them.",
            "title": "Attributes",
            "type": "object"
          },
          "connections": {
            "items": {
              "$ref": "#/components/schemas/NetworkConnection"
            },
            "title": "Connections",
            "type": "array"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "image_source": {
            "$ref": "#/components/schemas/ImageSource",
            "title": "Image Source"
          },
          "internet_access": {
            "$ref": "#/components/schemas/NetworkInternetAccess",
            "title": "Internet Access"
          },
          "internet_gateway": {
            "$ref": "#/components/schemas/RouterInternetGateway",
            "title": "Internet Gateway"
          },
          "last_operation": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Operation"
          },
          "lb_certificates": {
            "description": "A listener: the certificates it serves, the default first.",
            "items": {
              "$ref": "#/components/schemas/LbListenerCertificate"
            },
            "title": "Lb Certificates",
            "type": "array"
          },
          "lb_change_pending": {
            "title": "Lb Change Pending",
            "type": "boolean"
          },
          "lb_configuration": {
            "$ref": "#/components/schemas/LbConfiguration",
            "title": "Lb Configuration"
          },
          "lb_features": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LbFeatures"
              },
              {
                "type": "null"
              }
            ]
          },
          "lb_members": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LbMembers"
              },
              {
                "type": "null"
              }
            ],
            "description": "A pool: its newest member list NubeStack Cloud can trust, or null."
          },
          "lb_parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lb Parent Id"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "managed_for": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A router: the network it is the gateway of, or null.",
            "title": "Managed For"
          },
          "observation": {
            "$ref": "#/components/schemas/Observation"
          },
          "org_id": {
            "title": "Org Id",
            "type": "string"
          },
          "origin": {
            "description": "`broker`: made through NubeStack Cloud; `native`: made with the location's own tools.",
            "title": "Origin",
            "type": "string"
          },
          "phase": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The state of NubeStack Cloud's own commands on it.",
            "title": "Phase"
          },
          "private_router": {
            "title": "Private Router",
            "type": "boolean"
          },
          "project_gateway": {
            "title": "Project Gateway",
            "type": "boolean"
          },
          "project_id": {
            "title": "Project Id",
            "type": "string"
          },
          "provider": {
            "$ref": "#/components/schemas/ProviderRef"
          },
          "routing": {
            "$ref": "#/components/schemas/NetworkRouting",
            "title": "Routing"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "tags": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "An instance, volume, network or public IP: its NubeStack Cloud tags.",
            "title": "Tags"
          },
          "tags_drift": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TagDrift"
              },
              {
                "type": "null"
              }
            ],
            "description": "Set when the location shows other `nx.` tags than NubeStack Cloud keeps: they were changed outside NubeStack Cloud (or NubeStack Cloud's last write failed). Null when they agree or are being written."
          },
          "tags_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags' version, sent in `If-Match` to change them.",
            "title": "Tags Version"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "org_id",
          "project_id",
          "location",
          "display_name",
          "provider",
          "attributes",
          "origin",
          "created_at",
          "status",
          "phase",
          "last_operation",
          "error",
          "observation"
        ],
        "title": "InventoryItem",
        "type": "object"
      },
      "InventoryPage": {
        "description": "A page of a project's resources of one type, with each location's freshness.",
        "properties": {
          "complete": {
            "description": "True when every source is healthy; independent of pagination.",
            "title": "Complete",
            "type": "boolean"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/InventoryItem"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cursor for the next page; null ends pagination.",
            "title": "Next Cursor"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/CollectionSource"
            },
            "title": "Sources",
            "type": "array"
          }
        },
        "required": [
          "items",
          "next_cursor",
          "complete",
          "sources"
        ],
        "title": "InventoryPage",
        "type": "object"
      },
      "InventorySummary": {
        "description": "How many resources of each type the project has in each location.",
        "properties": {
          "complete": {
            "description": "Whether every location's data is fresh.",
            "title": "Complete",
            "type": "boolean"
          },
          "counts": {
            "items": {
              "$ref": "#/components/schemas/ResourceCount"
            },
            "title": "Counts",
            "type": "array"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/CollectionSource"
            },
            "title": "Sources",
            "type": "array"
          }
        },
        "required": [
          "counts",
          "sources",
          "complete"
        ],
        "title": "InventorySummary",
        "type": "object"
      },
      "InvitationList": {
        "description": "The organization's pending invitations.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PendingInvitation"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "InvitationList",
        "type": "object"
      },
      "InvitationLookup": {
        "description": "An invitation, as the person holding its link sees it.",
        "properties": {
          "email_matches": {
            "description": "Whether the caller's verified e-mail is the one it was sent to, which accepting it needs.",
            "title": "Email Matches",
            "type": "boolean"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "organization": {
            "$ref": "#/components/schemas/InvitingOrganization"
          },
          "project_count": {
            "description": "How many project roles come with it.",
            "title": "Project Count",
            "type": "integer"
          },
          "role": {
            "description": "The organization role it offers.",
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "organization",
          "role",
          "expires_at",
          "project_count",
          "email_matches"
        ],
        "title": "InvitationLookup",
        "type": "object"
      },
      "InvitationRevoked": {
        "description": "A revoked invitation.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "state": {
            "const": "revoked",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "id",
          "state"
        ],
        "title": "InvitationRevoked",
        "type": "object"
      },
      "InviteBody": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "maxLength": 320,
            "title": "Email",
            "type": "string"
          },
          "project_grants": {
            "items": {
              "$ref": "#/components/schemas/InviteGrant"
            },
            "maxItems": 50,
            "title": "Project Grants",
            "type": "array"
          },
          "role": {
            "pattern": "^(owner|admin|billing|member|viewer)$",
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "email",
          "role"
        ],
        "title": "InviteBody",
        "type": "object"
      },
      "InviteGrant": {
        "additionalProperties": false,
        "properties": {
          "project_id": {
            "maxLength": 64,
            "title": "Project Id",
            "type": "string"
          },
          "role": {
            "maxLength": 64,
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "role"
        ],
        "title": "InviteGrant",
        "type": "object"
      },
      "InvitedProjectRole": {
        "description": "A project role the invitation gives on acceptance.",
        "properties": {
          "project_id": {
            "description": "The project (`prj_…`).",
            "title": "Project Id",
            "type": "string"
          },
          "role": {
            "description": "`project_admin`, `project_member` or `project_reader`.",
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "role"
        ],
        "title": "InvitedProjectRole",
        "type": "object"
      },
      "InvitingOrganization": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "The organization (`org_…`).",
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "display_name"
        ],
        "title": "InvitingOrganization",
        "type": "object"
      },
      "IssuedApiKey": {
        "description": "A new key, with the key itself.",
        "properties": {
          "accountable_owner": {
            "description": "Who answers for it (`usr_…`).",
            "title": "Accountable Owner",
            "type": "string"
          },
          "attest_by": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Set when its accountable owner lost the right to manage it: it stops then unless an owner or admin keeps it.",
            "title": "Attest By"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "id": {
            "description": "The key (`key_…`).",
            "title": "Id",
            "type": "string"
          },
          "key_id": {
            "description": "The key's public identifier, the first part of the key.",
            "title": "Key Id",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "predecessor_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The key it replaced, after a rotation.",
            "title": "Predecessor Id"
          },
          "revoked_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked Reason"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          },
          "secret": {
            "description": "The key, in this response only: absent when the same `Idempotency-Key` replays it.",
            "title": "Secret",
            "type": "string"
          },
          "status": {
            "description": "`active`, `expired` or `revoked`.",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key_id",
          "display_name",
          "scopes",
          "status",
          "revoked_reason",
          "expires_at",
          "last_used_at",
          "created_by",
          "created_at",
          "predecessor_id",
          "accountable_owner",
          "attest_by"
        ],
        "title": "IssuedApiKey",
        "type": "object"
      },
      "IssuedInvitation": {
        "description": "A new invitation, with its link.",
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          },
          "emailed": {
            "description": "Whether NubeStack Cloud also e-mailed the link.",
            "title": "Emailed",
            "type": "boolean"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "id": {
            "description": "The invitation (`inv_…`).",
            "title": "Id",
            "type": "string"
          },
          "link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The invitation link, with its secret. In this response only: null when the same `Idempotency-Key` replays it.",
            "title": "Link"
          },
          "project_grants": {
            "items": {
              "$ref": "#/components/schemas/InvitedProjectRole"
            },
            "title": "Project Grants",
            "type": "array"
          },
          "reissue_required": {
            "description": "Only on a replay, and then true: the link cannot be shown again; send the invitation again for a new one.",
            "title": "Reissue Required",
            "type": "boolean"
          },
          "role": {
            "description": "The organization role it offers.",
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "link",
          "emailed",
          "id",
          "email",
          "role",
          "expires_at",
          "project_grants"
        ],
        "title": "IssuedInvitation",
        "type": "object"
      },
      "KeyOwner": {
        "description": "A key belongs to one person or to one project.",
        "properties": {
          "principal_id": {
            "description": "A personal key: its owner (`usr_…`).",
            "title": "Principal Id",
            "type": "string"
          },
          "project_id": {
            "description": "A project key: the project (`prj_…`).",
            "title": "Project Id",
            "type": "string"
          },
          "type": {
            "enum": [
              "principal",
              "project"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "KeyOwner",
        "type": "object"
      },
      "LaunchAccepted": {
        "description": "An accepted launch: nothing has run yet. Follow its `Location`.",
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "created": {
            "description": "The instances' IDs (`srv_`), in launch order.",
            "items": {
              "type": "string"
            },
            "title": "Created",
            "type": "array"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "instances": {
            "items": {
              "$ref": "#/components/schemas/LaunchInstance"
            },
            "title": "Instances",
            "type": "array"
          },
          "state": {
            "title": "State",
            "type": "string"
          },
          "template": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "The template and version it launched from (`id`, `version`, and `name`, null once the template is deleted); null for a create body.",
            "title": "Template"
          }
        },
        "required": [
          "id",
          "state",
          "count",
          "template",
          "instances",
          "created_at",
          "created"
        ],
        "title": "LaunchAccepted",
        "type": "object"
      },
      "LaunchBody": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "description": "How many instances, 1 to 10.",
            "maximum": 10,
            "minimum": 1,
            "title": "Count",
            "type": "integer"
          },
          "server": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ServerCreateBody"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A create body, when no template is named."
          },
          "template": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplateRef"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "count"
        ],
        "title": "LaunchBody",
        "type": "object"
      },
      "LaunchInstance": {
        "properties": {
          "operation": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "title": "Operation",
            "type": "object"
          },
          "present": {
            "description": "False once the instance has been deleted.",
            "title": "Present",
            "type": "boolean"
          },
          "server": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Server",
            "type": "object"
          }
        },
        "required": [
          "server",
          "operation",
          "present"
        ],
        "title": "LaunchInstance",
        "type": "object"
      },
      "LaunchList": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/LaunchView"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "LaunchList",
        "type": "object"
      },
      "LaunchView": {
        "description": "A launch: its instances' operations and the state folded from them: `succeeded` when\nevery instance succeeded, `failed` when none did, `partially_succeeded` otherwise.",
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "instances": {
            "items": {
              "$ref": "#/components/schemas/LaunchInstance"
            },
            "title": "Instances",
            "type": "array"
          },
          "state": {
            "title": "State",
            "type": "string"
          },
          "template": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "The template and version it launched from (`id`, `version`, and `name`, null once the template is deleted); null for a create body.",
            "title": "Template"
          }
        },
        "required": [
          "id",
          "state",
          "count",
          "template",
          "instances",
          "created_at"
        ],
        "title": "LaunchView",
        "type": "object"
      },
      "LbChildVersionBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "expected": {
            "pattern": "^[a-f0-9]{64}$",
            "title": "Expected",
            "type": "string"
          }
        },
        "required": [
          "expected"
        ],
        "title": "LbChildVersionBody",
        "type": "object"
      },
      "LbConfiguration": {
        "properties": {
          "values": {
            "additionalProperties": true,
            "title": "Values",
            "type": "object"
          },
          "version": {
            "description": "Name it as `expected` when changing the configuration.",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version",
          "values"
        ],
        "title": "LbConfiguration",
        "type": "object"
      },
      "LbFeatures": {
        "description": "What the load balancer's provider supports, from a versioned table of its sources.",
        "properties": {
          "algorithms": {
            "items": {
              "type": "string"
            },
            "title": "Algorithms",
            "type": "array"
          },
          "member_weight": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Whether members may have different weights.",
            "title": "Member Weight"
          },
          "monitor_bounds": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LbMonitorBounds"
              },
              {
                "type": "null"
              }
            ]
          },
          "monitors": {
            "description": "Every health-check type, whatever the protocol.",
            "items": {
              "type": "string"
            },
            "title": "Monitors",
            "type": "array"
          },
          "monitors_by_protocol": {
            "anyOf": [
              {
                "additionalProperties": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "The health-check types a pool of each protocol takes.",
            "title": "Monitors By Protocol"
          },
          "pool_protocols": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "The protocol a listener's pool speaks, by listener protocol (a TLS-terminating listener's pool speaks HTTP).",
            "title": "Pool Protocols"
          },
          "protocols": {
            "items": {
              "type": "string"
            },
            "title": "Protocols",
            "type": "array"
          },
          "tls_passthrough": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Protocols whose TLS passes through to the instances; never TLS termination.",
            "title": "Tls Passthrough"
          },
          "tls_termination": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Protocols that terminate TLS with one of the project's certificates; offered only where the location has a key manager.",
            "title": "Tls Termination"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The feature table's version.",
            "title": "Version"
          }
        },
        "required": [
          "protocols",
          "algorithms",
          "monitors"
        ],
        "title": "LbFeatures",
        "type": "object"
      },
      "LbListenerBody": {
        "additionalProperties": false,
        "properties": {
          "certificate_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The certificate a `TERMINATED_HTTPS` listener serves (`crt_…`), one of this project's in the load balancer's location; no other protocol takes one.",
            "title": "Certificate Id"
          },
          "pool": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LbPoolBody"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "port": {
            "maximum": 65535,
            "minimum": 1,
            "title": "Port",
            "type": "integer"
          },
          "protocol": {
            "pattern": "^[A-Z][A-Z_-]{1,31}$",
            "title": "Protocol",
            "type": "string"
          },
          "sni_certificate_ids": {
            "description": "More certificates a `TERMINATED_HTTPS` listener serves (`crt_…`, at most 10), each chosen by the host name the client asks for (SNI); a client whose host name none of them covers gets `certificate_id`, the default. Each one this project's in the load balancer's location, listed once, never the default.",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "title": "Sni Certificate Ids",
            "type": "array"
          }
        },
        "required": [
          "protocol",
          "port"
        ],
        "title": "LbListenerBody",
        "type": "object"
      },
      "LbListenerCertificate": {
        "description": "A certificate a TLS-terminating listener serves.",
        "properties": {
          "certificate_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "`crt_…`; null for a secret that was not uploaded through NubeStack Cloud.",
            "title": "Certificate Id"
          },
          "role": {
            "description": "`default`: served when no other certificate covers the host name the client asks for; `sni`: served only to a client asking for one of its names.",
            "enum": [
              "default",
              "sni"
            ],
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "certificate_id",
          "role"
        ],
        "title": "LbListenerCertificate",
        "type": "object"
      },
      "LbListenerCreateBody": {
        "additionalProperties": false,
        "properties": {
          "certificate_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The certificate a `TERMINATED_HTTPS` listener serves (`crt_…`), one of this project's in the load balancer's location; no other protocol takes one.",
            "title": "Certificate Id"
          },
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "pool_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Pool Id"
          },
          "port": {
            "maximum": 65535,
            "minimum": 1,
            "title": "Port",
            "type": "integer"
          },
          "protocol": {
            "pattern": "^[A-Z][A-Z_-]{1,31}$",
            "title": "Protocol",
            "type": "string"
          },
          "sni_certificate_ids": {
            "description": "More certificates a `TERMINATED_HTTPS` listener serves (`crt_…`, at most 10), each chosen by the host name the client asks for (SNI); a client whose host name none of them covers gets `certificate_id`, the default. Each one this project's in the load balancer's location, listed once, never the default.",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "title": "Sni Certificate Ids",
            "type": "array"
          }
        },
        "required": [
          "display_name",
          "protocol",
          "port"
        ],
        "title": "LbListenerCreateBody",
        "type": "object"
      },
      "LbListenerUpdateBody": {
        "additionalProperties": false,
        "properties": {
          "certificate_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Switch a `TERMINATED_HTTPS` listener to another certificate (`crt_…`) of this project and location; how a certificate is rotated.",
            "title": "Certificate Id"
          },
          "display_name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "pattern": "^[^\\x00-\\x1f\\x7f]+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Display Name"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "expected": {
            "pattern": "^[a-f0-9]{64}$",
            "title": "Expected",
            "type": "string"
          },
          "pool_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Pool Id"
          },
          "sni_certificate_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 10,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Replace the certificates a `TERMINATED_HTTPS` listener serves by host name (SNI) with these (`crt_…`, at most 10; `[]` removes them all). Each one this project's in the load balancer's location, listed once, never the default.",
            "title": "Sni Certificate Ids"
          }
        },
        "required": [
          "expected"
        ],
        "title": "LbListenerUpdateBody",
        "type": "object"
      },
      "LbMember": {
        "properties": {
          "address": {
            "title": "Address",
            "type": "string"
          },
          "backup": {
            "title": "Backup",
            "type": "boolean"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "port": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Port"
          },
          "weight": {
            "title": "Weight",
            "type": "integer"
          }
        },
        "required": [
          "address",
          "port",
          "weight",
          "backup",
          "enabled"
        ],
        "title": "LbMember",
        "type": "object"
      },
      "LbMemberBody": {
        "additionalProperties": false,
        "description": "One backend: an instance of the project (`server_id`), one of the project's private\naddresses (`address`), or an instance and which of its addresses. It is pinned to one port\nand range of the project routed to the load balancer's network; an ambiguous, public,\nunsafe or unrouted target is refused before anything is queued.",
        "properties": {
          "address": {
            "anyOf": [
              {
                "maxLength": 45,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Address"
          },
          "port": {
            "maximum": 65535,
            "minimum": 1,
            "title": "Port",
            "type": "integer"
          },
          "server_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Server Id"
          },
          "subnet_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The range the address is on, where two ranges share it.",
            "title": "Subnet Id"
          },
          "weight": {
            "default": 1,
            "maximum": 256,
            "minimum": 0,
            "title": "Weight",
            "type": "integer"
          }
        },
        "required": [
          "port"
        ],
        "title": "LbMemberBody",
        "type": "object"
      },
      "LbMembers": {
        "properties": {
          "values": {
            "items": {
              "$ref": "#/components/schemas/LbMember"
            },
            "title": "Values",
            "type": "array"
          },
          "version": {
            "description": "Name it as `expected` when replacing the members.",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version",
          "values"
        ],
        "title": "LbMembers",
        "type": "object"
      },
      "LbMembersBody": {
        "additionalProperties": false,
        "description": "A pool's whole member list. `expected` is the pool's `lb_members.version` as you read it;\na list that changed since is refused before anything is changed.",
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "expected": {
            "anyOf": [
              {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Expected"
          },
          "members": {
            "items": {
              "$ref": "#/components/schemas/LbMemberBody"
            },
            "maxItems": 100,
            "title": "Members",
            "type": "array"
          }
        },
        "required": [
          "members"
        ],
        "title": "LbMembersBody",
        "type": "object"
      },
      "LbMonitorBody": {
        "additionalProperties": false,
        "properties": {
          "delay": {
            "default": 5,
            "maximum": 3600,
            "minimum": 1,
            "title": "Delay",
            "type": "integer"
          },
          "max_retries": {
            "default": 3,
            "maximum": 10,
            "minimum": 1,
            "title": "Max Retries",
            "type": "integer"
          },
          "timeout": {
            "default": 3,
            "maximum": 3600,
            "minimum": 1,
            "title": "Timeout",
            "type": "integer"
          },
          "type": {
            "pattern": "^[A-Z][A-Z_-]{1,31}$",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "LbMonitorBody",
        "type": "object"
      },
      "LbMonitorBounds": {
        "description": "A health check's timings every provider takes.",
        "properties": {
          "delay_max": {
            "title": "Delay Max",
            "type": "integer"
          },
          "delay_min": {
            "title": "Delay Min",
            "type": "integer"
          },
          "max_retries_max": {
            "title": "Max Retries Max",
            "type": "integer"
          },
          "max_retries_min": {
            "title": "Max Retries Min",
            "type": "integer"
          },
          "timeout_below_delay": {
            "description": "The timeout must be shorter than the delay.",
            "title": "Timeout Below Delay",
            "type": "boolean"
          },
          "timeout_min": {
            "title": "Timeout Min",
            "type": "integer"
          },
          "udp_connect_delay_min": {
            "title": "Udp Connect Delay Min",
            "type": "integer"
          }
        },
        "required": [
          "delay_min",
          "delay_max",
          "timeout_min",
          "timeout_below_delay",
          "max_retries_min",
          "max_retries_max",
          "udp_connect_delay_min"
        ],
        "title": "LbMonitorBounds",
        "type": "object"
      },
      "LbMonitorSetBody": {
        "additionalProperties": false,
        "description": "A pool's health check, set after the load balancer exists. A type the location's load\nbalancers do not support is refused with `422 lb_feature_unsupported`.",
        "properties": {
          "delay": {
            "default": 5,
            "maximum": 3600,
            "minimum": 1,
            "title": "Delay",
            "type": "integer"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "max_retries": {
            "default": 3,
            "maximum": 10,
            "minimum": 1,
            "title": "Max Retries",
            "type": "integer"
          },
          "timeout": {
            "default": 3,
            "maximum": 3600,
            "minimum": 1,
            "title": "Timeout",
            "type": "integer"
          },
          "type": {
            "pattern": "^[A-Z][A-Z_-]{1,31}$",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "LbMonitorSetBody",
        "type": "object"
      },
      "LbPoolBody": {
        "additionalProperties": false,
        "properties": {
          "algorithm": {
            "pattern": "^[A-Z][A-Z_-]{1,31}$",
            "title": "Algorithm",
            "type": "string"
          },
          "health_monitor": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LbMonitorBody"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "members": {
            "items": {
              "$ref": "#/components/schemas/LbMemberBody"
            },
            "maxItems": 100,
            "title": "Members",
            "type": "array"
          }
        },
        "required": [
          "algorithm"
        ],
        "title": "LbPoolBody",
        "type": "object"
      },
      "LbPoolCreateBody": {
        "additionalProperties": false,
        "properties": {
          "algorithm": {
            "pattern": "^[A-Z][A-Z_-]{1,31}$",
            "title": "Algorithm",
            "type": "string"
          },
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "protocol": {
            "pattern": "^[A-Z][A-Z_-]{1,31}$",
            "title": "Protocol",
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "protocol",
          "algorithm"
        ],
        "title": "LbPoolCreateBody",
        "type": "object"
      },
      "LbPoolUpdateBody": {
        "additionalProperties": false,
        "properties": {
          "algorithm": {
            "anyOf": [
              {
                "pattern": "^[A-Z][A-Z_-]{1,31}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Algorithm"
          },
          "display_name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "pattern": "^[^\\x00-\\x1f\\x7f]+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Display Name"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "expected": {
            "pattern": "^[a-f0-9]{64}$",
            "title": "Expected",
            "type": "string"
          }
        },
        "required": [
          "expected"
        ],
        "title": "LbPoolUpdateBody",
        "type": "object"
      },
      "LbRenameBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "required": [
          "display_name"
        ],
        "title": "LbRenameBody",
        "type": "object"
      },
      "Lifecycle": {
        "properties": {
          "desired": {
            "title": "Desired",
            "type": "string"
          },
          "observed": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Observed"
          }
        },
        "required": [
          "desired",
          "observed"
        ],
        "title": "Lifecycle",
        "type": "object"
      },
      "LineUsage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/UsageRow"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "title": "LineUsage",
        "type": "object"
      },
      "LoadBalancerCreateBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "listeners": {
            "items": {
              "$ref": "#/components/schemas/LbListenerBody"
            },
            "maxItems": 10,
            "title": "Listeners",
            "type": "array"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "offering": {
            "default": "default",
            "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
            "title": "Offering",
            "type": "string"
          },
          "subnet_id": {
            "title": "Subnet Id",
            "type": "string"
          }
        },
        "required": [
          "location",
          "display_name",
          "subnet_id"
        ],
        "title": "LoadBalancerCreateBody",
        "type": "object"
      },
      "Location": {
        "description": "A location the organization may use.",
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "The location (`loc_…`).",
            "title": "Id",
            "type": "string"
          },
          "jurisdiction": {
            "title": "Jurisdiction",
            "type": "string"
          },
          "maintenance_until": {
            "description": "In maintenance only: when it is expected to end, if known.",
            "format": "date-time",
            "title": "Maintenance Until",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "status": {
            "description": "`available`, `closed_to_new_projects`, `maintenance`, `closing`, `unavailable` or `closed`.",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "slug",
          "display_name",
          "jurisdiction",
          "status"
        ],
        "title": "Location",
        "type": "object"
      },
      "LocationList": {
        "description": "The locations the organization may use.",
        "properties": {
          "data_as_of": {
            "format": "date-time",
            "title": "Data As Of",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Location"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items",
          "data_as_of"
        ],
        "title": "LocationList",
        "type": "object"
      },
      "LocationSummary": {
        "properties": {
          "complete": {
            "title": "Complete",
            "type": "boolean"
          },
          "counts": {
            "items": {
              "$ref": "#/components/schemas/TopologyCount"
            },
            "title": "Counts",
            "type": "array"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "location_id": {
            "title": "Location Id",
            "type": "string"
          },
          "placement_id": {
            "title": "Placement Id",
            "type": "string"
          },
          "regions": {
            "items": {
              "type": "string"
            },
            "title": "Regions",
            "type": "array"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/TopologySource"
            },
            "title": "Sources",
            "type": "array"
          }
        },
        "required": [
          "placement_id",
          "location_id",
          "label",
          "regions",
          "complete",
          "counts",
          "sources"
        ],
        "title": "LocationSummary",
        "type": "object"
      },
      "ManagedClass": {
        "description": "A class NubeStack Cloud sets itself, with its fixed limit.",
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "limit": {
            "title": "Limit",
            "type": "string"
          },
          "per": {
            "const": "project_location",
            "title": "Per",
            "type": "string"
          },
          "resource_class": {
            "title": "Resource Class",
            "type": "string"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "resource_class",
          "display_name",
          "unit",
          "limit",
          "per"
        ],
        "title": "ManagedClass",
        "type": "object"
      },
      "Me": {
        "description": "The signed-in person or service account and their organizations.",
        "properties": {
          "id": {
            "description": "The caller (`usr_…`).",
            "title": "Id",
            "type": "string"
          },
          "memberships": {
            "items": {
              "$ref": "#/components/schemas/OwnMembership"
            },
            "title": "Memberships",
            "type": "array"
          },
          "profile": {
            "$ref": "#/components/schemas/Profile"
          }
        },
        "required": [
          "id",
          "profile",
          "memberships"
        ],
        "title": "Me",
        "type": "object"
      },
      "Member": {
        "description": "A member of the organization.",
        "properties": {
          "account_status": {
            "description": "To owners and admins only: the person's NubeStack Cloud account, which can be disabled while the membership is active.",
            "title": "Account Status",
            "type": "string"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "To owners and admins only.",
            "title": "Email"
          },
          "id": {
            "description": "The membership (`mem_…`), with its version for `If-Match`.",
            "title": "Id",
            "type": "string"
          },
          "principal_id": {
            "description": "The person (`usr_…`).",
            "title": "Principal Id",
            "type": "string"
          },
          "roles": {
            "items": {
              "type": "string"
            },
            "title": "Roles",
            "type": "array"
          },
          "status": {
            "description": "`active` or `suspended`.",
            "title": "Status",
            "type": "string"
          },
          "version": {
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "principal_id",
          "display_name",
          "roles",
          "status",
          "version"
        ],
        "title": "Member",
        "type": "object"
      },
      "MemberGrantList": {
        "description": "A page of members, each with the project roles the caller may see.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/MemberProjectRoles"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          },
          "visibility": {
            "description": "`organization`: every project; `granted_projects`: only the projects the caller holds a role on.",
            "enum": [
              "organization",
              "granted_projects"
            ],
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "next_cursor",
          "items",
          "visibility"
        ],
        "title": "MemberGrantList",
        "type": "object"
      },
      "MemberList": {
        "description": "A page of members.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Member"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "next_cursor",
          "items"
        ],
        "title": "MemberList",
        "type": "object"
      },
      "MemberProjectRoles": {
        "properties": {
          "grants": {
            "items": {
              "$ref": "#/components/schemas/HeldProjectRole"
            },
            "title": "Grants",
            "type": "array"
          },
          "member_id": {
            "title": "Member Id",
            "type": "string"
          },
          "principal_id": {
            "title": "Principal Id",
            "type": "string"
          }
        },
        "required": [
          "member_id",
          "principal_id",
          "grants"
        ],
        "title": "MemberProjectRoles",
        "type": "object"
      },
      "MemberRoleChange": {
        "properties": {
          "id": {
            "description": "The membership (`mem_…`).",
            "title": "Id",
            "type": "string"
          },
          "roles": {
            "items": {
              "type": "string"
            },
            "title": "Roles",
            "type": "array"
          }
        },
        "required": [
          "id",
          "roles"
        ],
        "title": "MemberRoleChange",
        "type": "object"
      },
      "MemberRoles": {
        "description": "A member's organization roles after the change.",
        "properties": {
          "id": {
            "description": "The membership (`mem_…`).",
            "title": "Id",
            "type": "string"
          },
          "roles": {
            "items": {
              "type": "string"
            },
            "title": "Roles",
            "type": "array"
          },
          "version": {
            "description": "The membership's new version, also its `ETag`.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "roles",
          "version"
        ],
        "title": "MemberRoles",
        "type": "object"
      },
      "MembershipOrganization": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "The organization (`org_…`).",
            "title": "Id",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "id",
          "slug",
          "display_name"
        ],
        "title": "MembershipOrganization",
        "type": "object"
      },
      "MetadataBody": {
        "additionalProperties": false,
        "description": "Keys to set (a string) or remove (null); the instance's other keys stay. Keys are 1-64\nletters, digits, `-` or `_`, never starting with `nexus` (NubeStack Cloud's own); values at most 255\nprintable characters.",
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "metadata": {
            "additionalProperties": {
              "anyOf": [
                {
                  "maxLength": 255,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "maxProperties": 32,
            "minProperties": 1,
            "propertyNames": {
              "maxLength": 64
            },
            "title": "Metadata",
            "type": "object"
          }
        },
        "required": [
          "metadata"
        ],
        "title": "MetadataBody",
        "type": "object"
      },
      "NativeCredential": {
        "description": "An OpenStack application credential of the service account in one location.",
        "properties": {
          "access_rules": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/AccessRule"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "What it may call, when it was made with access rules.",
            "title": "Access Rules"
          },
          "accountable_owner": {
            "description": "Who answers for it (`usr_…`).",
            "title": "Accountable Owner",
            "type": "string"
          },
          "attest_by": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Set when its accountable owner lost the right to manage it: it is deleted then unless an owner or admin keeps it.",
            "title": "Attest By"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          },
          "id": {
            "description": "The credential (`ncr_…`).",
            "title": "Id",
            "type": "string"
          },
          "keystone_credential_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Keystone Credential Id"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "operation": {
            "$ref": "#/components/schemas/OperationLink",
            "description": "The operation that makes or deletes it.",
            "title": "Operation"
          },
          "placement_id": {
            "title": "Placement Id",
            "type": "string"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Project Id"
          },
          "requested_by": {
            "title": "Requested By",
            "type": "string"
          },
          "revoked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          },
          "secret_state": {
            "description": "`pending`, `ready` (collect it now), `retrieved` or `gone`.",
            "title": "Secret State",
            "type": "string"
          },
          "state": {
            "description": "`requested`, `active`, `revoking`, `expired`, `failed` or `revoked`.",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "id",
          "placement_id",
          "project_id",
          "location",
          "state",
          "secret_state",
          "keystone_credential_id",
          "failure_code",
          "expires_at",
          "requested_by",
          "created_at",
          "revoked_at",
          "accountable_owner",
          "attest_by",
          "access_rules"
        ],
        "title": "NativeCredential",
        "type": "object"
      },
      "NativeCredentialList": {
        "description": "The service account's location credentials.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/NativeCredential"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "next_cursor",
          "items"
        ],
        "title": "NativeCredentialList",
        "type": "object"
      },
      "NativeCredentialRevoked": {
        "description": "A credential revoked with nothing left to delete in its location.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "state": {
            "const": "revoked",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "id",
          "state"
        ],
        "title": "NativeCredentialRevoked",
        "type": "object"
      },
      "NativeCredentialSecret": {
        "description": "A location credential's secret, encrypted to the public key sent when it was made.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "jwe": {
            "description": "The secret as a compact JWE.",
            "title": "Jwe",
            "type": "string"
          },
          "retrieved_at": {
            "format": "date-time",
            "title": "Retrieved At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "jwe",
          "retrieved_at"
        ],
        "title": "NativeCredentialSecret",
        "type": "object"
      },
      "NativeIdentity": {
        "description": "The account's user in one cloud, for its location credentials.",
        "properties": {
          "deployment": {
            "title": "Deployment",
            "type": "string"
          },
          "groups": {
            "description": "How many of its project groups it is in there.",
            "title": "Groups",
            "type": "integer"
          },
          "observed_at": {
            "format": "date-time",
            "title": "Observed At",
            "type": "string"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "deployment",
          "state",
          "groups",
          "observed_at"
        ],
        "title": "NativeIdentity",
        "type": "object"
      },
      "NetworkConnection": {
        "properties": {
          "peer_id": {
            "description": "The network it is connected to (`net_…`).",
            "title": "Peer Id",
            "type": "string"
          },
          "pending": {
            "title": "Pending",
            "type": "boolean"
          },
          "router_id": {
            "title": "Router Id",
            "type": "string"
          }
        },
        "required": [
          "peer_id",
          "router_id",
          "pending"
        ],
        "title": "NetworkConnection",
        "type": "object"
      },
      "NetworkCreateBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "internet_access": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Internet Access"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "routed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Routed"
          },
          "subnet": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SubnetBody"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels `key: value` NubeStack Cloud keeps and writes to the resource in its location as `nx.<key>=<value>` (a volume's metadata key `nx.<key>`), keeping its other tags. At most 20; a key is 1-32 of `a-z`, `0-9`, `_`, `.`, `-`, starting with a letter; a value is 0-24 of `A-Z`, `a-z`, `0-9`, `_`, `.`, `:`, `-`. An organization uses at most 50 keys.",
            "maxProperties": 64,
            "title": "Tags",
            "type": "object"
          }
        },
        "required": [
          "location",
          "display_name"
        ],
        "title": "NetworkCreateBody",
        "type": "object"
      },
      "NetworkInternetAccess": {
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "observed_gateway": {
            "title": "Observed Gateway",
            "type": "boolean"
          },
          "pending": {
            "title": "Pending",
            "type": "boolean"
          },
          "project_gateway": {
            "description": "Whether it is through the project's own router.",
            "title": "Project Gateway",
            "type": "boolean"
          },
          "router_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Router Id"
          }
        },
        "required": [
          "enabled",
          "router_id",
          "pending",
          "observed_gateway",
          "project_gateway"
        ],
        "title": "NetworkInternetAccess",
        "type": "object"
      },
      "NetworkRouting": {
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "pending": {
            "title": "Pending",
            "type": "boolean"
          },
          "router_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Router Id"
          }
        },
        "required": [
          "enabled",
          "router_id",
          "pending"
        ],
        "title": "NetworkRouting",
        "type": "object"
      },
      "NewVolumeBody": {
        "additionalProperties": false,
        "description": "An empty volume made with the instance, as a volume create makes one.",
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "size_gb": {
            "maximum": 4096,
            "minimum": 1,
            "title": "Size Gb",
            "type": "integer"
          },
          "volume_type": {
            "default": "standard",
            "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
            "title": "Volume Type",
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "size_gb"
        ],
        "title": "NewVolumeBody",
        "type": "object"
      },
      "NoticePreference": {
        "properties": {
          "description": {
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "kind": {
            "description": "Such as `maintenance_started`.",
            "title": "Kind",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "description",
          "enabled"
        ],
        "title": "NoticePreference",
        "type": "object"
      },
      "NoticePreferences": {
        "description": "The e-mail notices the caller can turn off, each with whether it is on.",
        "properties": {
          "email_enabled": {
            "description": "Whether this installation sends e-mail at all.",
            "title": "Email Enabled",
            "type": "boolean"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/NoticePreference"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "email_enabled",
          "items"
        ],
        "title": "NoticePreferences",
        "type": "object"
      },
      "Observation": {
        "description": "Where the resource's state was read and how fresh it is.",
        "properties": {
          "data_as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data As Of"
          },
          "lifecycle": {
            "description": "Such as `creating`, `present`, `missing` or `create_failed`.",
            "title": "Lifecycle",
            "type": "string"
          },
          "observed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Observed At"
          },
          "source": {
            "description": "`collector`: the location's regular read; `operation`: NubeStack Cloud's own command, before the location has been read since.",
            "enum": [
              "collector",
              "operation"
            ],
            "title": "Source",
            "type": "string"
          },
          "source_status": {
            "title": "Source Status",
            "type": "string"
          },
          "stale": {
            "title": "Stale",
            "type": "boolean"
          },
          "status": {
            "description": "What the command itself read, when it read one.",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "source",
          "observed_at",
          "data_as_of",
          "stale",
          "source_status",
          "lifecycle"
        ],
        "title": "Observation",
        "type": "object"
      },
      "Offering": {
        "description": "Something that can be created in the location.",
        "properties": {
          "attributes": {
            "additionalProperties": true,
            "description": "What the offering is, by kind.",
            "title": "Attributes",
            "type": "object"
          },
          "availability": {
            "description": "Whether it can be created now, such as `available`.",
            "title": "Availability",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "kind": {
            "description": "Such as `compute`, `image`, `volume_type` or `public_network`.",
            "title": "Kind",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "slug",
          "display_name",
          "attributes",
          "availability"
        ],
        "title": "Offering",
        "type": "object"
      },
      "Operation": {
        "description": "An operation, its state and its steps.",
        "properties": {
          "accepted_at": {
            "format": "date-time",
            "title": "Accepted At",
            "type": "string"
          },
          "actor": {
            "$ref": "#/components/schemas/ActorRef"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ErrorCode"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "description": "The operation (`op_…`).",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Project Id"
          },
          "resource": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OperationResource"
              },
              {
                "type": "null"
              }
            ]
          },
          "revocation": {
            "$ref": "#/components/schemas/Revocation",
            "description": "A revocation's operation only."
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "state": {
            "description": "`queued`, `running`, `cancelling`, or finished: `succeeded`, `partially_succeeded`, `failed` or `cancelled`.",
            "title": "State",
            "type": "string"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/OperationStep"
            },
            "title": "Steps",
            "type": "array"
          },
          "waiting_for": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WaitingFor"
              },
              {
                "type": "null"
              }
            ],
            "description": "A queued workload operation accepted while another command of the organization was acting on the same resource: the operation it waits for. It starts once that one ends, and fails `blocking_operation_failed` if that one left nothing to act on, or `wait_expired` at its `execute_before`. Null otherwise."
          }
        },
        "required": [
          "resource",
          "project_id",
          "actor",
          "id",
          "kind",
          "state",
          "error",
          "accepted_at",
          "started_at",
          "completed_at",
          "steps"
        ],
        "title": "Operation",
        "type": "object"
      },
      "OperationLink": {
        "description": "The operation that carries out an accepted change.",
        "properties": {
          "href": {
            "description": "Where to read the operation; also the `Location` header.",
            "title": "Href",
            "type": "string"
          },
          "id": {
            "description": "The operation's ID (`op_…`).",
            "title": "Id",
            "type": "string"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its state when accepted, normally `queued`.",
            "title": "State"
          }
        },
        "required": [
          "id",
          "href"
        ],
        "title": "OperationLink",
        "type": "object"
      },
      "OperationList": {
        "description": "A page of operations, newest first.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/OperationSummary"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "next_cursor",
          "items"
        ],
        "title": "OperationList",
        "type": "object"
      },
      "OperationResource": {
        "description": "The resource an operation acted on, as last read.",
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "provider_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its ID in the location, once it has one.",
            "title": "Provider Id"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "display_name",
          "provider_id",
          "location"
        ],
        "title": "OperationResource",
        "type": "object"
      },
      "OperationState": {
        "description": "An operation and its state.",
        "properties": {
          "id": {
            "description": "The operation (`op_…`).",
            "title": "Id",
            "type": "string"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "id",
          "state"
        ],
        "title": "OperationState",
        "type": "object"
      },
      "OperationStep": {
        "description": "A step of the operation, with the locations it acts in.",
        "properties": {
          "action": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What the step does, such as `create_server`.",
            "title": "Action"
          },
          "attempts": {
            "title": "Attempts",
            "type": "integer"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "component": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Component"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ErrorCode"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "description": "The step (`ops_…`).",
            "title": "Id",
            "type": "string"
          },
          "locations": {
            "items": {
              "type": "string"
            },
            "title": "Locations",
            "type": "array"
          },
          "ordinal": {
            "title": "Ordinal",
            "type": "integer"
          },
          "region": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Region"
          },
          "result": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                },
                {
                  "type": "boolean"
                },
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              ]
            },
            "description": "The identifiers the step recorded, such as the provider ID it created.",
            "title": "Result",
            "type": "object"
          },
          "service": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Service"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "state": {
            "title": "State",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "ordinal",
          "action",
          "service",
          "region",
          "state",
          "error",
          "attempts",
          "started_at",
          "completed_at",
          "result",
          "id",
          "type",
          "component",
          "locations"
        ],
        "title": "OperationStep",
        "type": "object"
      },
      "OperationSummary": {
        "description": "An operation as listed.",
        "properties": {
          "accepted_at": {
            "format": "date-time",
            "title": "Accepted At",
            "type": "string"
          },
          "actor": {
            "$ref": "#/components/schemas/ActorRef"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ErrorCode"
              },
              {
                "type": "null"
              }
            ]
          },
          "failed_step": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FailedStep"
              },
              {
                "type": "null"
              }
            ],
            "description": "The first step that failed, if any."
          },
          "id": {
            "description": "The operation (`op_…`).",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "resource": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OperationResource"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "title": "State",
            "type": "string"
          },
          "steps": {
            "$ref": "#/components/schemas/StepCount"
          },
          "target": {
            "$ref": "#/components/schemas/OperationTarget"
          }
        },
        "required": [
          "resource",
          "steps",
          "failed_step",
          "actor",
          "id",
          "kind",
          "target",
          "state",
          "error",
          "accepted_at",
          "completed_at"
        ],
        "title": "OperationSummary",
        "type": "object"
      },
      "OperationTarget": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Project Id"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "project_id"
        ],
        "title": "OperationTarget",
        "type": "object"
      },
      "Organization": {
        "description": "The organization and the caller's roles in it.",
        "properties": {
          "closure": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Closure"
              },
              {
                "type": "null"
              }
            ],
            "description": "The latest closure, if it was ever closed."
          },
          "desired_lifecycle_state": {
            "description": "`deleted` while it closes.",
            "title": "Desired Lifecycle State",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "lifecycle_state": {
            "title": "Lifecycle State",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "your_roles": {
            "items": {
              "type": "string"
            },
            "title": "Your Roles",
            "type": "array"
          }
        },
        "required": [
          "closure",
          "id",
          "slug",
          "display_name",
          "lifecycle_state",
          "desired_lifecycle_state",
          "your_roles"
        ],
        "title": "Organization",
        "type": "object"
      },
      "OrganizationSettings": {
        "description": "The organization's settings.",
        "properties": {
          "audit": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AuditSettings"
              },
              {
                "type": "null"
              }
            ]
          },
          "descriptions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "What each setting does, by its name.",
            "title": "Descriptions",
            "type": "object"
          },
          "invitation_domains": {
            "description": "Empty: invitations go to any domain.",
            "items": {
              "type": "string"
            },
            "title": "Invitation Domains",
            "type": "array"
          },
          "members_create_projects": {
            "title": "Members Create Projects",
            "type": "boolean"
          },
          "mfa_grace_until": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Until when members without a second factor may still sign in.",
            "title": "Mfa Grace Until"
          },
          "mfa_required": {
            "description": "Every member signs in with a second factor.",
            "title": "Mfa Required",
            "type": "boolean"
          },
          "owner_only": {
            "description": "The settings only an owner changes.",
            "items": {
              "type": "string"
            },
            "title": "Owner Only",
            "type": "array"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "verified": {
            "title": "Verified",
            "type": "boolean"
          },
          "version": {
            "description": "For `If-Match` when changing them.",
            "title": "Version",
            "type": "string"
          },
          "viewers_read_audit": {
            "title": "Viewers Read Audit",
            "type": "boolean"
          }
        },
        "required": [
          "audit",
          "mfa_required",
          "mfa_grace_until",
          "members_create_projects",
          "viewers_read_audit",
          "invitation_domains",
          "version",
          "verified",
          "updated_at",
          "descriptions",
          "owner_only"
        ],
        "title": "OrganizationSettings",
        "type": "object"
      },
      "OrganizationSettingsView": {
        "description": "The organization's settings, with the second-factor rule in force.",
        "properties": {
          "audit": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AuditSettings"
              },
              {
                "type": "null"
              }
            ]
          },
          "descriptions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "What each setting does, by its name.",
            "title": "Descriptions",
            "type": "object"
          },
          "invitation_domains": {
            "description": "Empty: invitations go to any domain.",
            "items": {
              "type": "string"
            },
            "title": "Invitation Domains",
            "type": "array"
          },
          "members_create_projects": {
            "title": "Members Create Projects",
            "type": "boolean"
          },
          "mfa_grace_until": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Until when members without a second factor may still sign in.",
            "title": "Mfa Grace Until"
          },
          "mfa_required": {
            "description": "Every member signs in with a second factor.",
            "title": "Mfa Required",
            "type": "boolean"
          },
          "owner_only": {
            "description": "The settings only an owner changes.",
            "items": {
              "type": "string"
            },
            "title": "Owner Only",
            "type": "array"
          },
          "second_factor": {
            "$ref": "#/components/schemas/SecondFactorRule"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "verified": {
            "title": "Verified",
            "type": "boolean"
          },
          "version": {
            "description": "For `If-Match` when changing them.",
            "title": "Version",
            "type": "string"
          },
          "viewers_read_audit": {
            "title": "Viewers Read Audit",
            "type": "boolean"
          }
        },
        "required": [
          "audit",
          "mfa_required",
          "mfa_grace_until",
          "members_create_projects",
          "viewers_read_audit",
          "invitation_domains",
          "version",
          "verified",
          "updated_at",
          "descriptions",
          "owner_only",
          "second_factor"
        ],
        "title": "OrganizationSettingsView",
        "type": "object"
      },
      "OwnMembership": {
        "properties": {
          "membership_id": {
            "description": "The membership (`mem_…`).",
            "title": "Membership Id",
            "type": "string"
          },
          "organization": {
            "$ref": "#/components/schemas/MembershipOrganization"
          },
          "roles": {
            "items": {
              "type": "string"
            },
            "title": "Roles",
            "type": "array"
          },
          "status": {
            "description": "`active` or `suspended`.",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "organization",
          "membership_id",
          "roles",
          "status"
        ],
        "title": "OwnMembership",
        "type": "object"
      },
      "OwnPreset": {
        "description": "One of the organization's own presets, named `custom:<name>`.",
        "properties": {
          "custom": {
            "const": true,
            "title": "Custom",
            "type": "boolean"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "values": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PresetValue"
            },
            "description": "Per resource class.",
            "title": "Values",
            "type": "object"
          },
          "version": {
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "name",
          "display_name",
          "values",
          "custom",
          "version"
        ],
        "title": "OwnPreset",
        "type": "object"
      },
      "OwnershipTransferred": {
        "description": "Both memberships after the transfer: the new owner's, then the caller's.",
        "properties": {
          "members": {
            "items": {
              "$ref": "#/components/schemas/MemberRoleChange"
            },
            "title": "Members",
            "type": "array"
          }
        },
        "required": [
          "members"
        ],
        "title": "OwnershipTransferred",
        "type": "object"
      },
      "PendingInvitation": {
        "description": "An invitation waiting for an answer.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "email": {
            "title": "Email",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "issued_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The member who sent it (`usr_…`); null otherwise.",
            "title": "Issued By"
          },
          "project_grants": {
            "items": {
              "$ref": "#/components/schemas/InvitedProjectRole"
            },
            "title": "Project Grants",
            "type": "array"
          },
          "role": {
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "id",
          "email",
          "role",
          "project_grants",
          "issued_by",
          "created_at",
          "expires_at"
        ],
        "title": "PendingInvitation",
        "type": "object"
      },
      "PersonalBody": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "default": "",
            "maxLength": 256,
            "title": "Description",
            "type": "string"
          },
          "display_name": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Display Name"
          }
        },
        "title": "PersonalBody",
        "type": "object"
      },
      "PersonalServiceAccount": {
        "description": "Your own service account on one project.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "The service account (`sa_…`).",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "description": "`organization`, or `personal` (one person's, one project).",
            "title": "Kind",
            "type": "string"
          },
          "operation": {
            "$ref": "#/components/schemas/OperationLink",
            "description": "Its access to the project being set up in each location.",
            "title": "Operation"
          },
          "owner_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A personal account's owner (`usr_…`).",
            "title": "Owner Id"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A personal account's project.",
            "title": "Project Id"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its organization role.",
            "title": "Role"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "version": {
            "description": "Its version, also its `ETag`.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "display_name",
          "description",
          "kind",
          "role",
          "status",
          "project_id",
          "owner_id",
          "created_by",
          "created_at",
          "version"
        ],
        "title": "PersonalServiceAccount",
        "type": "object"
      },
      "PlacementCondition": {
        "properties": {
          "observed_at": {
            "format": "date-time",
            "title": "Observed At",
            "type": "string"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "status",
          "reason",
          "observed_at"
        ],
        "title": "PlacementCondition",
        "type": "object"
      },
      "PlacementDeletion": {
        "description": "The project's removal from the location, while it is under way.",
        "properties": {
          "blocked_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blocked Reason"
          },
          "cascade": {
            "title": "Cascade",
            "type": "boolean"
          },
          "release": {
            "description": "Whether instances and networking go as retention starts; data is kept.",
            "title": "Release",
            "type": "boolean"
          },
          "released_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Released At"
          },
          "retention_until": {
            "description": "Until when nothing is destroyed.",
            "format": "date-time",
            "title": "Retention Until",
            "type": "string"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "state",
          "cascade",
          "retention_until",
          "blocked_reason",
          "release",
          "released_at"
        ],
        "title": "PlacementDeletion",
        "type": "object"
      },
      "PlacementLocation": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "id",
          "slug",
          "display_name"
        ],
        "title": "PlacementLocation",
        "type": "object"
      },
      "PlacementProvider": {
        "properties": {
          "keystone_project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The project's ID in the location.",
            "title": "Keystone Project Id"
          }
        },
        "required": [
          "keystone_project_id"
        ],
        "title": "PlacementProvider",
        "type": "object"
      },
      "PlacementQuota": {
        "description": "A project's quota in one location.",
        "properties": {
          "advisory": {
            "title": "Advisory",
            "type": "boolean"
          },
          "budget": {
            "additionalProperties": {
              "$ref": "#/components/schemas/BudgetLeft"
            },
            "description": "To callers who may read the budgets: the location's budget per class.",
            "title": "Budget",
            "type": "object"
          },
          "classes": {
            "items": {
              "$ref": "#/components/schemas/PlacementQuotaClass"
            },
            "title": "Classes",
            "type": "array"
          },
          "customized": {
            "description": "Whether a value differs from the preset's.",
            "title": "Customized",
            "type": "boolean"
          },
          "data_as_of": {
            "format": "date-time",
            "title": "Data As Of",
            "type": "string"
          },
          "managed": {
            "title": "Managed",
            "type": "boolean"
          },
          "placement": {
            "$ref": "#/components/schemas/QuotaPlacement"
          },
          "quota_profile": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quota Profile"
          },
          "status": {
            "$ref": "#/components/schemas/QuotaStatus"
          },
          "version": {
            "description": "Also the `ETag`, for `If-Match` when setting it.",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "placement",
          "version",
          "quota_profile",
          "managed",
          "customized",
          "classes",
          "status",
          "advisory",
          "data_as_of"
        ],
        "title": "PlacementQuota",
        "type": "object"
      },
      "PlacementQuotaClass": {
        "properties": {
          "applied": {
            "$ref": "#/components/schemas/AppliedQuota",
            "description": "What the location applied."
          },
          "below_in_use": {
            "description": "Whether what is set is below what is in use.",
            "title": "Below In Use",
            "type": "boolean"
          },
          "control": {
            "description": "`allocated`: a figure is set per project; `managed`: NubeStack Cloud sets it.",
            "title": "Control",
            "type": "string"
          },
          "desired": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What is set.",
            "title": "Desired"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "in_use": {
            "$ref": "#/components/schemas/InUse"
          },
          "managed_limit": {
            "description": "A managed class only: its fixed limit per project location.",
            "title": "Managed Limit",
            "type": "string"
          },
          "max_value": {
            "description": "The most any project may be given.",
            "title": "Max Value",
            "type": "string"
          },
          "resource_class": {
            "description": "Such as `instances`, `cores` or `volume_gigabytes`.",
            "title": "Resource Class",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "resource_class",
          "display_name",
          "unit",
          "status",
          "max_value",
          "control",
          "desired",
          "applied",
          "in_use",
          "below_in_use"
        ],
        "title": "PlacementQuotaClass",
        "type": "object"
      },
      "PlacementReportView": {
        "description": "What removing the project from one location would remove.",
        "properties": {
          "counts": {
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Per resource type; confirm these when deleting.",
            "title": "Counts",
            "type": "object"
          },
          "empty": {
            "title": "Empty",
            "type": "boolean"
          },
          "externally_visible": {
            "items": {
              "$ref": "#/components/schemas/VisibleResource"
            },
            "title": "Externally Visible",
            "type": "array"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "placement_id": {
            "title": "Placement Id",
            "type": "string"
          }
        },
        "required": [
          "placement_id",
          "location",
          "counts",
          "empty",
          "externally_visible"
        ],
        "title": "PlacementReportView",
        "type": "object"
      },
      "PlacementRouting": {
        "description": "The project's private router in the location.",
        "properties": {
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "id": {
            "description": "The router (`rtr_…`).",
            "title": "Id",
            "type": "string"
          },
          "operation": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The operation that last changed it (`op_…`).",
            "title": "Operation"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "id",
          "state",
          "operation",
          "error"
        ],
        "title": "PlacementRouting",
        "type": "object"
      },
      "PlacementWarning": {
        "description": "Something about the location's cloud worth knowing, which does not stop the project.",
        "properties": {
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "reason"
        ],
        "title": "PlacementWarning",
        "type": "object"
      },
      "PoolBody": {
        "additionalProperties": false,
        "properties": {
          "end": {
            "maxLength": 39,
            "title": "End",
            "type": "string"
          },
          "start": {
            "maxLength": 39,
            "title": "Start",
            "type": "string"
          }
        },
        "required": [
          "start",
          "end"
        ],
        "title": "PoolBody",
        "type": "object"
      },
      "PoolMemberBody": {
        "additionalProperties": false,
        "description": "The pool an instance joins at create, with the member's port and weight.",
        "properties": {
          "pool_id": {
            "description": "A pool (`lbp_`) of a load balancer of this project.",
            "title": "Pool Id",
            "type": "string"
          },
          "port": {
            "description": "The port the instance serves on.",
            "maximum": 65535,
            "minimum": 1,
            "title": "Port",
            "type": "integer"
          },
          "weight": {
            "default": 1,
            "maximum": 256,
            "minimum": 0,
            "title": "Weight",
            "type": "integer"
          }
        },
        "required": [
          "pool_id",
          "port"
        ],
        "title": "PoolMemberBody",
        "type": "object"
      },
      "PowerTimetable": {
        "additionalProperties": false,
        "properties": {
          "days": {
            "description": "The days of the week.",
            "items": {
              "enum": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ],
              "type": "string"
            },
            "maxItems": 7,
            "minItems": 1,
            "title": "Days",
            "type": "array"
          },
          "start_at": {
            "anyOf": [
              {
                "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When to start them again (local time), HH:MM.",
            "title": "Start At"
          },
          "stop_at": {
            "anyOf": [
              {
                "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When to stop the instances (local time), HH:MM.",
            "title": "Stop At"
          }
        },
        "required": [
          "days"
        ],
        "title": "PowerTimetable",
        "type": "object"
      },
      "PreferenceBody": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "title": "PreferenceBody",
        "type": "object"
      },
      "Preset": {
        "description": "One of the organization's own presets.",
        "properties": {
          "custom": {
            "const": true,
            "title": "Custom",
            "type": "boolean"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "name": {
            "description": "`custom:<name>`.",
            "title": "Name",
            "type": "string"
          },
          "values": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Per resource class.",
            "title": "Values",
            "type": "object"
          },
          "version": {
            "description": "Its version, also its `ETag`.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "name",
          "display_name",
          "custom",
          "version",
          "values"
        ],
        "title": "Preset",
        "type": "object"
      },
      "PresetBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Display Name",
            "type": "string"
          },
          "name": {
            "maxLength": 32,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "values": {
            "additionalProperties": {
              "type": "integer"
            },
            "maxProperties": 64,
            "title": "Values",
            "type": "object"
          }
        },
        "required": [
          "name",
          "display_name",
          "values"
        ],
        "title": "PresetBody",
        "type": "object"
      },
      "PresetPatch": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Display Name"
          },
          "values": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "integer"
                },
                "maxProperties": 64,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Values"
          }
        },
        "title": "PresetPatch",
        "type": "object"
      },
      "PresetValue": {
        "properties": {
          "minimum": {
            "title": "Minimum",
            "type": "string"
          },
          "value": {
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "value",
          "minimum"
        ],
        "title": "PresetValue",
        "type": "object"
      },
      "Previous": {
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/PreviousGroup"
            },
            "title": "Groups",
            "type": "array"
          },
          "period": {
            "title": "Period",
            "type": "string"
          },
          "reason": {
            "anyOf": [
              {
                "enum": [
                  "no_data",
                  "currency_changed"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "`currency_changed`: last month was priced in another currency.",
            "title": "Reason"
          },
          "total": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Last month's total; null with a `reason`.",
            "title": "Total"
          }
        },
        "required": [
          "period",
          "total",
          "groups",
          "reason"
        ],
        "title": "Previous",
        "type": "object"
      },
      "PreviousGroup": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Key"
          }
        },
        "required": [
          "key",
          "amount"
        ],
        "title": "PreviousGroup",
        "type": "object"
      },
      "Profile": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "email_verified": {
            "title": "Email Verified",
            "type": "boolean"
          }
        },
        "required": [
          "display_name",
          "email",
          "email_verified"
        ],
        "title": "Profile",
        "type": "object"
      },
      "Project": {
        "description": "A project and the location it lives in.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "desired_lifecycle_state": {
            "title": "Desired Lifecycle State",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "The project (`prj_…`).",
            "title": "Id",
            "type": "string"
          },
          "lifecycle_state": {
            "description": "Such as `active`, `suspended`, `deletion_requested`, `retention` or `deleting`.",
            "title": "Lifecycle State",
            "type": "string"
          },
          "location": {
            "description": "The slug of the location the project lives in. A project placed in two locations reads the earliest one it is not being removed from.",
            "title": "Location",
            "type": "string"
          },
          "placements": {
            "items": {
              "$ref": "#/components/schemas/ProjectPlacement"
            },
            "title": "Placements",
            "type": "array"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "id",
          "slug",
          "display_name",
          "location",
          "lifecycle_state",
          "desired_lifecycle_state",
          "created_at",
          "placements"
        ],
        "title": "Project",
        "type": "object"
      },
      "ProjectCreate": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Display Name",
            "type": "string"
          },
          "location": {
            "description": "The location the project lives in (`loc_…`).",
            "title": "Location",
            "type": "string"
          },
          "network": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProjectNetwork"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "quota_profile": {
            "anyOf": [
              {
                "pattern": "^(custom:)?[a-z][a-z0-9_]{0,31}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Quota Profile"
          },
          "slug": {
            "pattern": "^[a-z0-9][a-z0-9-]{0,50}$",
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "display_name",
          "location"
        ],
        "title": "ProjectCreate",
        "type": "object"
      },
      "ProjectLimit": {
        "properties": {
          "limit": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "How many projects it may have; null: no limit.",
            "title": "Limit"
          },
          "used": {
            "title": "Used",
            "type": "integer"
          }
        },
        "required": [
          "limit",
          "used"
        ],
        "title": "ProjectLimit",
        "type": "object"
      },
      "ProjectList": {
        "description": "The projects the caller can see.",
        "properties": {
          "data_as_of": {
            "format": "date-time",
            "title": "Data As Of",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Project"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items",
          "data_as_of"
        ],
        "title": "ProjectList",
        "type": "object"
      },
      "ProjectNetwork": {
        "additionalProperties": false,
        "description": "A ready network in each new location.",
        "properties": {
          "cidr": {
            "default": "10.0.0.0/24",
            "maxLength": 43,
            "title": "Cidr",
            "type": "string"
          },
          "dns_nameservers": {
            "items": {
              "type": "string"
            },
            "maxItems": 4,
            "title": "Dns Nameservers",
            "type": "array"
          },
          "internet_gateway": {
            "default": false,
            "title": "Internet Gateway",
            "type": "boolean"
          }
        },
        "title": "ProjectNetwork",
        "type": "object"
      },
      "ProjectPlacement": {
        "description": "The project in one location.",
        "properties": {
          "conditions": {
            "items": {
              "$ref": "#/components/schemas/PlacementCondition"
            },
            "title": "Conditions",
            "type": "array"
          },
          "data_as_of": {
            "format": "date-time",
            "title": "Data As Of",
            "type": "string"
          },
          "deletion": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlacementDeletion"
              },
              {
                "type": "null"
              }
            ]
          },
          "generation": {
            "$ref": "#/components/schemas/Generation"
          },
          "id": {
            "description": "The placement (`plc_…`).",
            "title": "Id",
            "type": "string"
          },
          "lifecycle": {
            "$ref": "#/components/schemas/Lifecycle"
          },
          "location": {
            "$ref": "#/components/schemas/PlacementLocation"
          },
          "provider": {
            "$ref": "#/components/schemas/PlacementProvider"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "routing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlacementRouting"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "description": "`provisioning`, `ready`, `error` or `blocked`.",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "items": {
              "$ref": "#/components/schemas/PlacementWarning"
            },
            "title": "Warnings",
            "type": "array"
          }
        },
        "required": [
          "id",
          "location",
          "status",
          "reason",
          "warnings",
          "routing",
          "lifecycle",
          "deletion",
          "generation",
          "conditions",
          "provider",
          "data_as_of"
        ],
        "title": "ProjectPlacement",
        "type": "object"
      },
      "ProjectQuota": {
        "description": "A project's quota in each of its locations.",
        "properties": {
          "data_as_of": {
            "format": "date-time",
            "title": "Data As Of",
            "type": "string"
          },
          "items": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PlacementQuota"
                },
                {
                  "$ref": "#/components/schemas/QuotaUnavailable"
                }
              ]
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items",
          "data_as_of"
        ],
        "title": "ProjectQuota",
        "type": "object"
      },
      "ProjectRef": {
        "description": "A project, by ID and name.",
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "The project (`prj_…`).",
            "title": "Id",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "id",
          "slug",
          "display_name"
        ],
        "title": "ProjectRef",
        "type": "object"
      },
      "ProjectRoleBody": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "items": {
              "type": "string"
            },
            "maxItems": 64,
            "minItems": 1,
            "title": "Actions",
            "type": "array"
          },
          "description": {
            "default": "",
            "maxLength": 256,
            "title": "Description",
            "type": "string"
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name",
          "actions"
        ],
        "title": "ProjectRoleBody",
        "type": "object"
      },
      "ProjectSummary": {
        "properties": {
          "complete": {
            "title": "Complete",
            "type": "boolean"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "lifecycle_state": {
            "title": "Lifecycle State",
            "type": "string"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/LocationSummary"
            },
            "title": "Locations",
            "type": "array"
          },
          "project_id": {
            "title": "Project Id",
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "label",
          "lifecycle_state",
          "complete",
          "locations"
        ],
        "title": "ProjectSummary",
        "type": "object"
      },
      "ProjectView": {
        "description": "A project, its location and the caller's role on it.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "data_as_of": {
            "format": "date-time",
            "title": "Data As Of",
            "type": "string"
          },
          "desired_lifecycle_state": {
            "title": "Desired Lifecycle State",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "The project (`prj_…`).",
            "title": "Id",
            "type": "string"
          },
          "lifecycle_state": {
            "description": "Such as `active`, `suspended`, `deletion_requested`, `retention` or `deleting`.",
            "title": "Lifecycle State",
            "type": "string"
          },
          "location": {
            "description": "The slug of the location the project lives in. A project placed in two locations reads the earliest one it is not being removed from.",
            "title": "Location",
            "type": "string"
          },
          "placements": {
            "items": {
              "$ref": "#/components/schemas/ProjectPlacement"
            },
            "title": "Placements",
            "type": "array"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "your_role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The caller's project role; null: none.",
            "title": "Your Role"
          }
        },
        "required": [
          "id",
          "slug",
          "display_name",
          "location",
          "lifecycle_state",
          "desired_lifecycle_state",
          "created_at",
          "placements",
          "your_role",
          "data_as_of"
        ],
        "title": "ProjectView",
        "type": "object"
      },
      "Projection": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The month to date plus the mean of the last complete days (at most 7) for each whole day left; null with a `reason`.",
            "title": "Amount"
          },
          "basis_days": {
            "title": "Basis Days",
            "type": "integer"
          },
          "reason": {
            "anyOf": [
              {
                "enum": [
                  "too_few_days",
                  "past_month",
                  "no_data"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          }
        },
        "required": [
          "amount",
          "basis_days",
          "reason"
        ],
        "title": "Projection",
        "type": "object"
      },
      "ProviderRef": {
        "properties": {
          "deployment": {
            "title": "Deployment",
            "type": "string"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its ID in the location, once it has one.",
            "title": "Id"
          },
          "region": {
            "title": "Region",
            "type": "string"
          }
        },
        "required": [
          "deployment",
          "region",
          "id"
        ],
        "title": "ProviderRef",
        "type": "object"
      },
      "QuotaAllocations": {
        "description": "Every project's quota, location by location.",
        "properties": {
          "allocatable": {
            "description": "Whether the caller may change them.",
            "title": "Allocatable",
            "type": "boolean"
          },
          "data_as_of": {
            "format": "date-time",
            "title": "Data As Of",
            "type": "string"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/AllocationLocation"
            },
            "title": "Locations",
            "type": "array"
          },
          "managed": {
            "items": {
              "$ref": "#/components/schemas/ManagedClass"
            },
            "title": "Managed",
            "type": "array"
          }
        },
        "required": [
          "allocatable",
          "locations",
          "managed",
          "data_as_of"
        ],
        "title": "QuotaAllocations",
        "type": "object"
      },
      "QuotaChange": {
        "properties": {
          "from": {
            "title": "From",
            "type": "string"
          },
          "to": {
            "title": "To",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "title": "QuotaChange",
        "type": "object"
      },
      "QuotaChangeAccepted": {
        "description": "Changed, and being applied in the location: follow `operation` until it finishes.",
        "properties": {
          "changes": {
            "additionalProperties": {
              "$ref": "#/components/schemas/QuotaChange"
            },
            "description": "Per resource class that changed.",
            "title": "Changes",
            "type": "object"
          },
          "operation": {
            "$ref": "#/components/schemas/OperationLink"
          },
          "placement": {
            "$ref": "#/components/schemas/ChangedPlacement"
          }
        },
        "required": [
          "placement",
          "changes",
          "operation"
        ],
        "title": "QuotaChangeAccepted",
        "type": "object"
      },
      "QuotaChanged": {
        "description": "The project's quota in the location, changed.",
        "properties": {
          "changes": {
            "additionalProperties": {
              "$ref": "#/components/schemas/QuotaChange"
            },
            "description": "Per resource class that changed.",
            "title": "Changes",
            "type": "object"
          },
          "placement": {
            "$ref": "#/components/schemas/ChangedPlacement"
          }
        },
        "required": [
          "placement",
          "changes"
        ],
        "title": "QuotaChanged",
        "type": "object"
      },
      "QuotaCondition": {
        "properties": {
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "scope": {
            "title": "Scope",
            "type": "string"
          },
          "since": {
            "format": "date-time",
            "title": "Since",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "scope",
          "status",
          "reason",
          "since"
        ],
        "title": "QuotaCondition",
        "type": "object"
      },
      "QuotaPatch": {
        "additionalProperties": false,
        "properties": {
          "confirm_below_in_use": {
            "default": false,
            "title": "Confirm Below In Use",
            "type": "boolean"
          },
          "values": {
            "additionalProperties": {
              "type": "integer"
            },
            "maxProperties": 64,
            "minProperties": 1,
            "title": "Values",
            "type": "object"
          }
        },
        "required": [
          "values"
        ],
        "title": "QuotaPatch",
        "type": "object"
      },
      "QuotaPlacement": {
        "properties": {
          "deployment": {
            "title": "Deployment",
            "type": "string"
          },
          "id": {
            "description": "The project's placement (`plc_…`).",
            "title": "Id",
            "type": "string"
          },
          "location": {
            "title": "Location",
            "type": "string"
          }
        },
        "required": [
          "id",
          "location",
          "deployment"
        ],
        "title": "QuotaPlacement",
        "type": "object"
      },
      "QuotaProfiles": {
        "description": "The presets a project's quota can start from.",
        "properties": {
          "chosen": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The organization's own choice; null: its tier's or the platform's applies.",
            "title": "Chosen"
          },
          "classes": {
            "items": {
              "$ref": "#/components/schemas/ResourceClassView"
            },
            "title": "Classes",
            "type": "array"
          },
          "custom": {
            "description": "The organization's own presets.",
            "items": {
              "$ref": "#/components/schemas/OwnPreset"
            },
            "title": "Custom",
            "type": "array"
          },
          "default_profile": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The preset the next new project gets.",
            "title": "Default Profile"
          },
          "profiles": {
            "description": "The provider's presets.",
            "items": {
              "$ref": "#/components/schemas/StarterPreset"
            },
            "title": "Profiles",
            "type": "array"
          }
        },
        "required": [
          "default_profile",
          "chosen",
          "profiles",
          "custom",
          "classes"
        ],
        "title": "QuotaProfiles",
        "type": "object"
      },
      "QuotaStatus": {
        "properties": {
          "conditions": {
            "items": {
              "$ref": "#/components/schemas/QuotaCondition"
            },
            "title": "Conditions",
            "type": "array"
          },
          "generation": {
            "title": "Generation",
            "type": "integer"
          },
          "observed_generation": {
            "title": "Observed Generation",
            "type": "integer"
          }
        },
        "required": [
          "generation",
          "observed_generation",
          "conditions"
        ],
        "title": "QuotaStatus",
        "type": "object"
      },
      "QuotaUnavailable": {
        "description": "A location whose quota could not be read just now.",
        "properties": {
          "error": {
            "const": "quota_unavailable",
            "title": "Error",
            "type": "string"
          },
          "placement": {
            "$ref": "#/components/schemas/QuotaPlacement"
          }
        },
        "required": [
          "placement",
          "error"
        ],
        "title": "QuotaUnavailable",
        "type": "object"
      },
      "RateCard": {
        "description": "The rates that price usage now, and the next scheduled change.",
        "properties": {
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "in_force": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RateVersion"
              },
              {
                "type": "null"
              }
            ]
          },
          "next": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RateVersion"
              },
              {
                "type": "null"
              }
            ]
          },
          "provisional": {
            "const": true,
            "title": "Provisional",
            "type": "boolean"
          }
        },
        "required": [
          "currency",
          "provisional",
          "in_force",
          "next"
        ],
        "title": "RateCard",
        "type": "object"
      },
      "RateLine": {
        "properties": {
          "dimension": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Dimension"
              },
              {
                "type": "null"
              }
            ]
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "None: every location.",
            "title": "Location"
          },
          "metric": {
            "title": "Metric",
            "type": "string"
          },
          "unit_price": {
            "title": "Unit Price",
            "type": "string"
          }
        },
        "required": [
          "metric",
          "location",
          "dimension",
          "unit_price"
        ],
        "title": "RateLine",
        "type": "object"
      },
      "RateVersion": {
        "properties": {
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ISO 4217. It changes only from 00:00 UTC on the 1st of a month.",
            "title": "Currency"
          },
          "effective_from": {
            "format": "date-time",
            "title": "Effective From",
            "type": "string"
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/RateLine"
            },
            "title": "Lines",
            "type": "array"
          },
          "version": {
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "effective_from",
          "currency",
          "lines"
        ],
        "title": "RateVersion",
        "type": "object"
      },
      "RebootBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "type": {
            "default": "soft",
            "enum": [
              "soft",
              "hard"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "RebootBody",
        "type": "object"
      },
      "RebuildBody": {
        "additionalProperties": false,
        "description": "An image of the server's location: a catalog offering (`image`, optionally its version),\nor one of the project's own images there (`image_id`); exactly one.",
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "image": {
            "anyOf": [
              {
                "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image"
          },
          "image_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image Id"
          },
          "image_version": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image Version"
          }
        },
        "title": "RebuildBody",
        "type": "object"
      },
      "RefreshBody": {
        "additionalProperties": false,
        "properties": {
          "locations": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 10,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Locations"
          },
          "resource_types": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ResourceType"
                },
                "maxItems": 10,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Resource Types"
          }
        },
        "title": "RefreshBody",
        "type": "object"
      },
      "Related": {
        "description": "What the resource is attached to or holds.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "relations": {
            "items": {
              "$ref": "#/components/schemas/Relation"
            },
            "title": "Relations",
            "type": "array"
          }
        },
        "required": [
          "id",
          "relations"
        ],
        "title": "Related",
        "type": "object"
      },
      "Relation": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/InventoryItem"
            },
            "title": "Items",
            "type": "array"
          },
          "relation": {
            "description": "Such as `servers`, `volumes` or `subnets`.",
            "title": "Relation",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "withheld": {
            "description": "True when the location's data cannot be shown now.",
            "title": "Withheld",
            "type": "boolean"
          }
        },
        "required": [
          "relation",
          "type",
          "items"
        ],
        "title": "Relation",
        "type": "object"
      },
      "RequestBody": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "title": "Location",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "title": "Reason",
            "type": "string"
          },
          "values": {
            "additionalProperties": {
              "type": "integer"
            },
            "maxProperties": 64,
            "minProperties": 1,
            "title": "Values",
            "type": "object"
          }
        },
        "required": [
          "location",
          "values",
          "reason"
        ],
        "title": "RequestBody",
        "type": "object"
      },
      "RequestedValue": {
        "properties": {
          "current": {
            "title": "Current",
            "type": "string"
          },
          "requested": {
            "title": "Requested",
            "type": "string"
          }
        },
        "required": [
          "current",
          "requested"
        ],
        "title": "RequestedValue",
        "type": "object"
      },
      "ResentInvitation": {
        "description": "The invitation that replaces a pending one, with its new link.",
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          },
          "emailed": {
            "description": "Whether NubeStack Cloud also e-mailed the link.",
            "title": "Emailed",
            "type": "boolean"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "id": {
            "description": "The new invitation (`inv_…`).",
            "title": "Id",
            "type": "string"
          },
          "link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The invitation link, with its secret. In this response only: null when the same `Idempotency-Key` replays it.",
            "title": "Link"
          },
          "reissue_required": {
            "description": "Only on a replay, and then true: the link cannot be shown again; send the invitation again for a new one.",
            "title": "Reissue Required",
            "type": "boolean"
          },
          "replaced_id": {
            "description": "The invitation it replaces, whose link stopped working.",
            "title": "Replaced Id",
            "type": "string"
          },
          "role": {
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "link",
          "emailed",
          "id",
          "replaced_id",
          "email",
          "role",
          "expires_at"
        ],
        "title": "ResentInvitation",
        "type": "object"
      },
      "ResizeBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "offering": {
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[a-z0-9][a-z0-9-]*$",
            "title": "Offering",
            "type": "string"
          }
        },
        "required": [
          "offering"
        ],
        "title": "ResizeBody",
        "type": "object"
      },
      "ResourceClassView": {
        "description": "A resource class quota is set for, as a form describes it.",
        "properties": {
          "control": {
            "description": "`allocated`: a figure is set per project; `managed`: NubeStack Cloud sets it.",
            "title": "Control",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "managed_limit": {
            "description": "A managed class only: its fixed limit per project location.",
            "title": "Managed Limit",
            "type": "string"
          },
          "max_value": {
            "description": "The most any project may be given.",
            "title": "Max Value",
            "type": "string"
          },
          "resource_class": {
            "description": "Such as `instances`, `cores` or `volume_gigabytes`.",
            "title": "Resource Class",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "resource_class",
          "display_name",
          "unit",
          "status",
          "max_value",
          "control"
        ],
        "title": "ResourceClassView",
        "type": "object"
      },
      "ResourceCount": {
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "resource_type": {
            "title": "Resource Type",
            "type": "string"
          }
        },
        "required": [
          "location",
          "resource_type",
          "count"
        ],
        "title": "ResourceCount",
        "type": "object"
      },
      "ResourceOperation": {
        "properties": {
          "accepted_at": {
            "format": "date-time",
            "title": "Accepted At",
            "type": "string"
          },
          "actor": {
            "$ref": "#/components/schemas/ActorRef"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ErrorCode"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "description": "The operation (`op_…`).",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "role": {
            "description": "Whether the operation acted on the resource or only named it.",
            "enum": [
              "target",
              "referenced"
            ],
            "title": "Role",
            "type": "string"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "state": {
            "title": "State",
            "type": "string"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/StepCall"
            },
            "title": "Steps",
            "type": "array"
          }
        },
        "required": [
          "id",
          "kind",
          "state",
          "error",
          "role",
          "actor",
          "accepted_at",
          "started_at",
          "completed_at",
          "steps"
        ],
        "title": "ResourceOperation",
        "type": "object"
      },
      "ResourceType": {
        "enum": [
          "server",
          "volume",
          "volume_snapshot",
          "network",
          "subnet",
          "router",
          "port",
          "security_group",
          "floating_ip",
          "image",
          "load_balancer",
          "lb_listener",
          "lb_pool",
          "lb_health_monitor",
          "server_group"
        ],
        "title": "ResourceType",
        "type": "string"
      },
      "RetentionEnded": {
        "description": "The deletion goes ahead now.",
        "properties": {
          "locations": {
            "description": "How many locations it now goes ahead in.",
            "title": "Locations",
            "type": "integer"
          },
          "project": {
            "title": "Project",
            "type": "string"
          }
        },
        "required": [
          "project",
          "locations"
        ],
        "title": "RetentionEnded",
        "type": "object"
      },
      "RetypeBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "volume_type": {
            "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
            "title": "Volume Type",
            "type": "string"
          }
        },
        "required": [
          "volume_type"
        ],
        "title": "RetypeBody",
        "type": "object"
      },
      "Revocation": {
        "description": "How far a revocation has reached in each location.",
        "properties": {
          "locations": {
            "items": {
              "$ref": "#/components/schemas/RevocationLocation"
            },
            "title": "Locations",
            "type": "array"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "state",
          "locations"
        ],
        "title": "Revocation",
        "type": "object"
      },
      "RevocationLocation": {
        "properties": {
          "effective_by": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the access is gone there by.",
            "title": "Effective By"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "location",
          "status",
          "effective_by"
        ],
        "title": "RevocationLocation",
        "type": "object"
      },
      "Role": {
        "description": "A role: built in, or one of the organization's own.",
        "properties": {
          "actions": {
            "description": "What it allows (`GET …/role-actions` says each).",
            "items": {
              "type": "string"
            },
            "title": "Actions",
            "type": "array"
          },
          "builtin": {
            "description": "Built-in roles cannot be changed or deleted.",
            "title": "Builtin",
            "type": "boolean"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "holders": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Members, project grants and pending invitations that hold it now; null for built-in roles.",
            "title": "Holders"
          },
          "id": {
            "description": "`rol_…` for a custom role; the name for a built-in one.",
            "title": "Id",
            "type": "string"
          },
          "keystone_role": {
            "anyOf": [
              {
                "enum": [
                  "member",
                  "reader"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "For a project role: its access in each location's own tools — `member`, `reader` where the location enforces read-only, or none (portal and API only).",
            "title": "Keystone Role"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "For a project's own role, that project (`prj_…`); otherwise null.",
            "title": "Project Id"
          },
          "scope": {
            "description": "`organization`: held as a member's role. `project`: held on a project.",
            "enum": [
              "organization",
              "project"
            ],
            "title": "Scope",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its version, also its `ETag`; null when built in.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "scope",
          "project_id",
          "builtin",
          "actions",
          "keystone_role",
          "holders",
          "version",
          "created_at",
          "updated_at"
        ],
        "title": "Role",
        "type": "object"
      },
      "RoleAction": {
        "description": "An action a custom role may hold.",
        "properties": {
          "action": {
            "title": "Action",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "held": {
            "description": "Whether you hold it where the roles listed here are made, so may put it in a role.",
            "title": "Held",
            "type": "boolean"
          },
          "held_on_every_project": {
            "description": "Under the organization only: whether you hold it on every project, for project roles made for the whole organization.",
            "title": "Held On Every Project",
            "type": "boolean"
          },
          "scopes": {
            "description": "The role scopes it may be part of.",
            "items": {
              "enum": [
                "organization",
                "project"
              ],
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          }
        },
        "required": [
          "action",
          "description",
          "scopes",
          "held"
        ],
        "title": "RoleAction",
        "type": "object"
      },
      "RoleActionList": {
        "description": "The actions custom roles are made of.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RoleAction"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "RoleActionList",
        "type": "object"
      },
      "RoleBody": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "items": {
              "type": "string"
            },
            "maxItems": 64,
            "minItems": 1,
            "title": "Actions",
            "type": "array"
          },
          "description": {
            "default": "",
            "maxLength": 256,
            "title": "Description",
            "type": "string"
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "scope": {
            "enum": [
              "organization",
              "project"
            ],
            "title": "Scope",
            "type": "string"
          }
        },
        "required": [
          "name",
          "scope",
          "actions"
        ],
        "title": "RoleBody",
        "type": "object"
      },
      "RoleChange": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 64,
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Actions"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 256,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Description"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          }
        },
        "title": "RoleChange",
        "type": "object"
      },
      "RoleDeleted": {
        "description": "A deleted custom role.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "status": {
            "const": "deleted",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "title": "RoleDeleted",
        "type": "object"
      },
      "RoleList": {
        "description": "Roles, built-in ones first.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Role"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "RoleList",
        "type": "object"
      },
      "RolesBody": {
        "additionalProperties": false,
        "properties": {
          "roles": {
            "items": {
              "type": "string"
            },
            "maxItems": 15,
            "minItems": 1,
            "title": "Roles",
            "type": "array"
          }
        },
        "required": [
          "roles"
        ],
        "title": "RolesBody",
        "type": "object"
      },
      "RotateBody": {
        "additionalProperties": false,
        "properties": {
          "expires_in_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Expires In Days"
          },
          "overlap_s": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Overlap S"
          }
        },
        "title": "RotateBody",
        "type": "object"
      },
      "RotatedApiKey": {
        "description": "The replacement key, and the key it replaces with its new expiry.",
        "properties": {
          "accountable_owner": {
            "description": "Who answers for it (`usr_…`).",
            "title": "Accountable Owner",
            "type": "string"
          },
          "attest_by": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Set when its accountable owner lost the right to manage it: it stops then unless an owner or admin keeps it.",
            "title": "Attest By"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "id": {
            "description": "The key (`key_…`).",
            "title": "Id",
            "type": "string"
          },
          "key_id": {
            "description": "The key's public identifier, the first part of the key.",
            "title": "Key Id",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "predecessor": {
            "$ref": "#/components/schemas/ApiKey"
          },
          "predecessor_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The key it replaced, after a rotation.",
            "title": "Predecessor Id"
          },
          "revoked_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked Reason"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          },
          "secret": {
            "description": "The key, in this response only: absent when the same `Idempotency-Key` replays it.",
            "title": "Secret",
            "type": "string"
          },
          "status": {
            "description": "`active`, `expired` or `revoked`.",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key_id",
          "display_name",
          "scopes",
          "status",
          "revoked_reason",
          "expires_at",
          "last_used_at",
          "created_by",
          "created_at",
          "predecessor_id",
          "accountable_owner",
          "attest_by",
          "predecessor"
        ],
        "title": "RotatedApiKey",
        "type": "object"
      },
      "RouteBody": {
        "additionalProperties": false,
        "properties": {
          "destination": {
            "maxLength": 43,
            "title": "Destination",
            "type": "string"
          },
          "nexthop": {
            "maxLength": 39,
            "title": "Nexthop",
            "type": "string"
          }
        },
        "required": [
          "destination",
          "nexthop"
        ],
        "title": "RouteBody",
        "type": "object"
      },
      "RouterCreateBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "public_gateway": {
            "default": true,
            "title": "Public Gateway",
            "type": "boolean"
          },
          "subnet_ids": {
            "items": {
              "type": "string"
            },
            "maxItems": 8,
            "title": "Subnet Ids",
            "type": "array"
          }
        },
        "required": [
          "location",
          "display_name"
        ],
        "title": "RouterCreateBody",
        "type": "object"
      },
      "RouterGatewayBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "public": {
            "default": true,
            "title": "Public",
            "type": "boolean"
          }
        },
        "title": "RouterGatewayBody",
        "type": "object"
      },
      "RouterInterfaceBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "subnet_id": {
            "title": "Subnet Id",
            "type": "string"
          }
        },
        "required": [
          "subnet_id"
        ],
        "title": "RouterInterfaceBody",
        "type": "object"
      },
      "RouterInternetGateway": {
        "properties": {
          "addresses": {
            "description": "Its public addresses.",
            "items": {},
            "title": "Addresses",
            "type": "array"
          },
          "desired": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Desired"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "pending": {
            "title": "Pending",
            "type": "boolean"
          },
          "snat_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Snat Enabled"
          },
          "state": {
            "description": "`creating`, `deleting`, `active`, `absent` or `unknown`.",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "addresses",
          "snat_enabled",
          "pending",
          "desired",
          "state"
        ],
        "title": "RouterInternetGateway",
        "type": "object"
      },
      "RouterRoutesBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "routes": {
            "items": {
              "$ref": "#/components/schemas/RouteBody"
            },
            "maxItems": 16,
            "title": "Routes",
            "type": "array"
          }
        },
        "required": [
          "routes"
        ],
        "title": "RouterRoutesBody",
        "type": "object"
      },
      "RuleBody": {
        "additionalProperties": false,
        "properties": {
          "direction": {
            "enum": [
              "ingress",
              "egress"
            ],
            "title": "Direction",
            "type": "string"
          },
          "ethertype": {
            "default": "IPv4",
            "enum": [
              "IPv4",
              "IPv6"
            ],
            "title": "Ethertype",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "icmp_code": {
            "anyOf": [
              {
                "maximum": 255,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Icmp Code"
          },
          "icmp_type": {
            "anyOf": [
              {
                "maximum": 255,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Icmp Type"
          },
          "port_max": {
            "anyOf": [
              {
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Port Max"
          },
          "port_min": {
            "anyOf": [
              {
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Port Min"
          },
          "protocol": {
            "anyOf": [
              {
                "enum": [
                  "tcp",
                  "udp",
                  "icmp",
                  "ipv6-icmp"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Protocol"
          },
          "remote_group_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Remote Group Id"
          },
          "remote_ip_prefix": {
            "anyOf": [
              {
                "maxLength": 43,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Remote Ip Prefix"
          }
        },
        "required": [
          "direction"
        ],
        "title": "RuleBody",
        "type": "object"
      },
      "ScheduleChangeBody": {
        "additionalProperties": false,
        "properties": {
          "desired": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Desired"
          },
          "keep": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Keep"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 1,
                "pattern": "^[^\\x00-\\x1f\\x7f]+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "power": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PowerTimetable"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "recurrence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BackupTimetable"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "time_zone": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Time Zone"
          }
        },
        "title": "ScheduleChangeBody",
        "type": "object"
      },
      "ScheduleCreateBody": {
        "additionalProperties": false,
        "properties": {
          "desired": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A resize: the instance group's size from each run on.",
            "title": "Desired"
          },
          "keep": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A backup: how many of its own snapshots of each volume to keep; older ones it made are deleted.",
            "title": "Keep"
          },
          "kind": {
            "description": "`backup`: snapshot the volumes; `power`: stop and start the instances; `resize`: set an instance group's size.",
            "enum": [
              "backup",
              "power",
              "resize"
            ],
            "title": "Kind",
            "type": "string"
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Name",
            "type": "string"
          },
          "power": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PowerTimetable"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A power schedule's timetable."
          },
          "recurrence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BackupTimetable"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A backup's or a resize's timetable."
          },
          "target_ids": {
            "description": "`vol_`, `srv_` or `igr_` IDs of this project, in one location.",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "title": "Target Ids",
            "type": "array"
          },
          "target_type": {
            "description": "Volumes, or instances (a backup snapshots every volume of each instance), or one instance group (a resize).",
            "enum": [
              "volume",
              "server",
              "instance_group"
            ],
            "title": "Target Type",
            "type": "string"
          },
          "time_zone": {
            "default": "UTC",
            "description": "An IANA time zone, such as `Asia/Karachi`.",
            "maxLength": 64,
            "minLength": 1,
            "title": "Time Zone",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "name",
          "target_type",
          "target_ids"
        ],
        "title": "ScheduleCreateBody",
        "type": "object"
      },
      "ScheduleDeleted": {
        "properties": {
          "deleted": {
            "title": "Deleted",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "deleted"
        ],
        "title": "ScheduleDeleted",
        "type": "object"
      },
      "ScheduleList": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ScheduleView"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "ScheduleList",
        "type": "object"
      },
      "ScheduleRunOperation": {
        "properties": {
          "href": {
            "title": "Href",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "id",
          "state",
          "href"
        ],
        "title": "ScheduleRunOperation",
        "type": "object"
      },
      "ScheduleRunView": {
        "properties": {
          "action": {
            "description": "`snapshot`, `stop`, `start` or `prune` (retention).",
            "title": "Action",
            "type": "string"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "operations": {
            "items": {
              "$ref": "#/components/schemas/ScheduleRunOperation"
            },
            "title": "Operations",
            "type": "array"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Why a target or the run was left out, if one was.",
            "title": "Reason"
          },
          "scheduled_for": {
            "title": "Scheduled For",
            "type": "string"
          },
          "state": {
            "description": "`accepted` (operations made) or `skipped`.",
            "title": "State",
            "type": "string"
          },
          "targets": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Targets",
            "type": "array"
          }
        },
        "required": [
          "id",
          "action",
          "scheduled_for",
          "state",
          "reason",
          "operations",
          "targets",
          "created_at"
        ],
        "title": "ScheduleRunView",
        "type": "object"
      },
      "ScheduleTarget": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "present": {
            "title": "Present",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "present"
        ],
        "title": "ScheduleTarget",
        "type": "object"
      },
      "ScheduleView": {
        "description": "A schedule, its next run (computed by the API in its time zone) and, on the item route,\nits latest runs.",
        "properties": {
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "desired": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "A resize schedule's size.",
            "title": "Desired"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "keep": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Keep"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "last_run_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Run At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "next_run_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Run At"
          },
          "next_start_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Start At"
          },
          "next_stop_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Stop At"
          },
          "paused_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Paused Reason"
          },
          "power": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Power"
          },
          "recurrence": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence"
          },
          "run_as": {
            "title": "Run As",
            "type": "string"
          },
          "runs": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ScheduleRunView"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Runs"
          },
          "state": {
            "title": "State",
            "type": "string"
          },
          "target_type": {
            "title": "Target Type",
            "type": "string"
          },
          "targets": {
            "items": {
              "$ref": "#/components/schemas/ScheduleTarget"
            },
            "title": "Targets",
            "type": "array"
          },
          "time_zone": {
            "title": "Time Zone",
            "type": "string"
          },
          "updated_at": {
            "title": "Updated At",
            "type": "string"
          },
          "version": {
            "description": "The ETag: send it in `If-Match` to change it.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "kind",
          "name",
          "target_type",
          "targets",
          "recurrence",
          "power",
          "time_zone",
          "keep",
          "desired",
          "state",
          "paused_reason",
          "next_run_at",
          "next_stop_at",
          "next_start_at",
          "last_run_at",
          "run_as",
          "version",
          "created_at",
          "updated_at"
        ],
        "title": "ScheduleView",
        "type": "object"
      },
      "SecondFactorRule": {
        "description": "What else decides who signs in with a second factor.",
        "properties": {
          "always_for_roles": {
            "description": "The roles that always sign in with one.",
            "items": {
              "type": "string"
            },
            "title": "Always For Roles",
            "type": "array"
          },
          "platform_requires": {
            "description": "Whether the provider requires it of everyone.",
            "title": "Platform Requires",
            "type": "boolean"
          }
        },
        "required": [
          "platform_requires",
          "always_for_roles"
        ],
        "title": "SecondFactorRule",
        "type": "object"
      },
      "ServerCreateBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "fixed_ip": {
            "anyOf": [
              {
                "maxLength": 15,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Fixed Ip"
          },
          "image": {
            "anyOf": [
              {
                "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image"
          },
          "image_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image Id"
          },
          "image_version": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image Version"
          },
          "load_balancer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PoolMemberBody"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A pool of one of this project's load balancers in the same location that the instance joins once it runs, at its private address on `network_id`. If joining fails, the instance stays and the operation ends `partially_succeeded`. Deleting the instance later leaves the member in the pool."
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "network_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Network Id"
          },
          "offering": {
            "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
            "title": "Offering",
            "type": "string"
          },
          "public_ip": {
            "default": false,
            "title": "Public Ip",
            "type": "boolean"
          },
          "public_ip_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Public Ip Id"
          },
          "security_group_ids": {
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "title": "Security Group Ids",
            "type": "array"
          },
          "security_group_templates": {
            "description": "Inbound rules from anywhere (0.0.0.0/0): `ssh` is TCP 22, `web` is TCP 80 and 443. A rule that any group in `security_group_ids` already allows is not added again; the others are added to the first group named there, the cloud's `default` group included, and no group is created. When no group is named, one new group `<project slug>-access` is created with them (`-2`, `-3`, ... when that name is taken in the organization).",
            "items": {
              "enum": [
                "ssh",
                "web"
              ],
              "type": "string"
            },
            "maxItems": 2,
            "title": "Security Group Templates",
            "type": "array"
          },
          "server_group_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A server group of this project in the same location. The instance joins it now; it cannot join, leave or change group later.",
            "title": "Server Group Id"
          },
          "ssh_key_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Ssh Key Id"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels `key: value` NubeStack Cloud keeps and writes to the resource in its location as `nx.<key>=<value>` (a volume's metadata key `nx.<key>`), keeping its other tags. At most 20; a key is 1-32 of `a-z`, `0-9`, `_`, `.`, `-`, starting with a letter; a value is 0-24 of `A-Z`, `a-z`, `0-9`, `_`, `.`, `:`, `-`. An organization uses at most 50 keys.",
            "maxProperties": 64,
            "title": "Tags",
            "type": "object"
          },
          "user_data": {
            "anyOf": [
              {
                "maxLength": 65535,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "User Data"
          },
          "volumes": {
            "description": "Up to 8 data volumes, attached in this order once the instance runs: each an existing volume (`volume_id`) or a new empty one (`new`). New volumes are made before the instance. If an attachment fails, the instance and every volume stay, and the operation ends `partially_succeeded`. Deleting the instance later detaches its volumes and keeps them.",
            "items": {
              "$ref": "#/components/schemas/ServerVolumeBody"
            },
            "maxItems": 8,
            "title": "Volumes",
            "type": "array"
          }
        },
        "required": [
          "location",
          "display_name",
          "offering"
        ],
        "title": "ServerCreateBody",
        "type": "object"
      },
      "ServerGroupCreateBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f\\s]([^\\x00-\\x1f\\x7f]{0,62}[^\\x00-\\x1f\\x7f\\s])?$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "max_server_per_host": {
            "anyOf": [
              {
                "maximum": 10,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "`anti-affinity` only: how many of the group's instances one host may run (1 when left out).",
            "title": "Max Server Per Host"
          },
          "policy": {
            "description": "Where the location's cloud places the group's instances: `anti-affinity` on different hosts, or the instance fails to start; `affinity` on the same host, or it fails; `soft-anti-affinity` and `soft-affinity` the same when the cloud can, never failing for it. Hosts are not availability zones.",
            "enum": [
              "anti-affinity",
              "affinity",
              "soft-anti-affinity",
              "soft-affinity"
            ],
            "title": "Policy",
            "type": "string"
          }
        },
        "required": [
          "location",
          "display_name",
          "policy"
        ],
        "title": "ServerGroupCreateBody",
        "type": "object"
      },
      "ServerGroupsBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "security_group_ids": {
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "title": "Security Group Ids",
            "type": "array"
          }
        },
        "required": [
          "security_group_ids"
        ],
        "title": "ServerGroupsBody",
        "type": "object"
      },
      "ServerVolumeBody": {
        "additionalProperties": false,
        "description": "One data volume of an instance create: an existing volume or a new one, not both.",
        "properties": {
          "new": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NewVolumeBody"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A new empty volume."
          },
          "volume_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "An existing volume of this project in the same location, available and attached to nothing.",
            "title": "Volume Id"
          }
        },
        "title": "ServerVolumeBody",
        "type": "object"
      },
      "Service": {
        "properties": {
          "key": {
            "title": "Key",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          }
        },
        "required": [
          "key",
          "label"
        ],
        "title": "Service",
        "type": "object"
      },
      "ServiceAccount": {
        "description": "A non-person account for scripts and pipelines.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "The service account (`sa_…`).",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "description": "`organization`, or `personal` (one person's, one project).",
            "title": "Kind",
            "type": "string"
          },
          "owner_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A personal account's owner (`usr_…`).",
            "title": "Owner Id"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A personal account's project.",
            "title": "Project Id"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its organization role.",
            "title": "Role"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "version": {
            "description": "Its version, also its `ETag`.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "display_name",
          "description",
          "kind",
          "role",
          "status",
          "project_id",
          "owner_id",
          "created_by",
          "created_at",
          "version"
        ],
        "title": "ServiceAccount",
        "type": "object"
      },
      "ServiceAccountDeleted": {
        "description": "A deleted service account that had nothing left to delete in any location.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "status": {
            "const": "deleted",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "title": "ServiceAccountDeleted",
        "type": "object"
      },
      "ServiceAccountDetail": {
        "description": "A service account with its project roles and its users in each cloud.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "grants": {
            "items": {
              "$ref": "#/components/schemas/AccountProjectRole"
            },
            "title": "Grants",
            "type": "array"
          },
          "id": {
            "description": "The service account (`sa_…`).",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "description": "`organization`, or `personal` (one person's, one project).",
            "title": "Kind",
            "type": "string"
          },
          "native_identities": {
            "items": {
              "$ref": "#/components/schemas/NativeIdentity"
            },
            "title": "Native Identities",
            "type": "array"
          },
          "owner_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A personal account's owner (`usr_…`).",
            "title": "Owner Id"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A personal account's project.",
            "title": "Project Id"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its organization role.",
            "title": "Role"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "version": {
            "description": "Its version, also its `ETag`.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "display_name",
          "description",
          "kind",
          "role",
          "status",
          "project_id",
          "owner_id",
          "created_by",
          "created_at",
          "version",
          "grants",
          "native_identities"
        ],
        "title": "ServiceAccountDetail",
        "type": "object"
      },
      "ServiceAccountList": {
        "description": "A page of service accounts.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ServiceAccountSummary"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "next_cursor",
          "items"
        ],
        "title": "ServiceAccountList",
        "type": "object"
      },
      "ServiceAccountSummary": {
        "properties": {
          "active_keys": {
            "description": "How many of its API keys work now.",
            "title": "Active Keys",
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "grants": {
            "description": "How many project roles it holds.",
            "title": "Grants",
            "type": "integer"
          },
          "id": {
            "description": "The service account (`sa_…`).",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "description": "`organization`, or `personal` (one person's, one project).",
            "title": "Kind",
            "type": "string"
          },
          "owner_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A personal account's owner (`usr_…`).",
            "title": "Owner Id"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "A personal account's project.",
            "title": "Project Id"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its organization role.",
            "title": "Role"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "version": {
            "description": "Its version, also its `ETag`.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "display_name",
          "description",
          "kind",
          "role",
          "status",
          "project_id",
          "owner_id",
          "created_by",
          "created_at",
          "version",
          "active_keys",
          "grants"
        ],
        "title": "ServiceAccountSummary",
        "type": "object"
      },
      "SettingsBody": {
        "additionalProperties": false,
        "properties": {
          "audit_export_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Audit Export Enabled"
          },
          "audit_lookback_days": {
            "anyOf": [
              {
                "maximum": 365,
                "minimum": 7,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Audit Lookback Days"
          },
          "audit_version": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Audit Version"
          },
          "invitation_domains": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 20,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Invitation Domains"
          },
          "members_create_projects": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Members Create Projects"
          },
          "mfa_grace_days": {
            "anyOf": [
              {
                "maximum": 30,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Mfa Grace Days"
          },
          "mfa_required": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Mfa Required"
          },
          "viewers_read_audit": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Viewers Read Audit"
          }
        },
        "title": "SettingsBody",
        "type": "object"
      },
      "SignupTicket": {
        "description": "A one-time ticket to create an account for the invitation's e-mail address.",
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "ticket": {
            "description": "The ticket; it is a credential, used once.",
            "title": "Ticket",
            "type": "string"
          }
        },
        "required": [
          "ticket",
          "email",
          "expires_at"
        ],
        "title": "SignupTicket",
        "type": "object"
      },
      "SnapshotBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "required": [
          "display_name"
        ],
        "title": "SnapshotBody",
        "type": "object"
      },
      "SourceProblem": {
        "properties": {
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "code"
        ],
        "title": "SourceProblem",
        "type": "object"
      },
      "SshKey": {
        "description": "A public SSH key to choose when creating instances.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "fingerprint": {
            "description": "Its SHA-256 fingerprint.",
            "title": "Fingerprint",
            "type": "string"
          },
          "id": {
            "description": "The key (`ssh_…`).",
            "title": "Id",
            "type": "string"
          },
          "key_type": {
            "description": "Such as `ssh-ed25519`.",
            "title": "Key Type",
            "type": "string"
          },
          "owner": {
            "$ref": "#/components/schemas/KeyOwner"
          },
          "public_key": {
            "description": "The public key, without its comment.",
            "title": "Public Key",
            "type": "string"
          }
        },
        "required": [
          "id",
          "display_name",
          "owner",
          "key_type",
          "public_key",
          "fingerprint",
          "created_at"
        ],
        "title": "SshKey",
        "type": "object"
      },
      "SshKeyDeleted": {
        "properties": {
          "deleted": {
            "const": true,
            "title": "Deleted",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "deleted"
        ],
        "title": "SshKeyDeleted",
        "type": "object"
      },
      "SshKeyList": {
        "description": "A page of SSH keys.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/SshKey"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass as `cursor` for the next page; null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "next_cursor",
          "items"
        ],
        "title": "SshKeyList",
        "type": "object"
      },
      "StarterPreset": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "values": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PresetValue"
            },
            "description": "Per resource class.",
            "title": "Values",
            "type": "object"
          }
        },
        "required": [
          "name",
          "display_name",
          "values"
        ],
        "title": "StarterPreset",
        "type": "object"
      },
      "Statement": {
        "properties": {
          "adjustments_after": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Adjustments count corrections collected after this time.",
            "title": "Adjustments After"
          },
          "as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Usage collected up to this time is counted.",
            "title": "As Of"
          },
          "built_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Built At"
          },
          "closed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Closed At"
          },
          "closes_at": {
            "format": "date-time",
            "title": "Closes At",
            "type": "string"
          },
          "currency": {
            "description": "ISO 4217 code.",
            "title": "Currency",
            "type": "string"
          },
          "gaps": {
            "description": "The month's hours whose usage is not known, as the last build saw them; a closed statement keeps those it closed with. Never counted as zero; hours derived later reach the next statement as adjustments.",
            "items": {
              "$ref": "#/components/schemas/StatementGap"
            },
            "title": "Gaps",
            "type": "array"
          },
          "id": {
            "description": "`stm_…`",
            "title": "Id",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/StatementLine"
            },
            "title": "Items",
            "type": "array"
          },
          "lines": {
            "title": "Lines",
            "type": "integer"
          },
          "period": {
            "description": "The calendar month (UTC), `YYYY-MM`.",
            "title": "Period",
            "type": "string"
          },
          "period_end": {
            "format": "date-time",
            "title": "Period End",
            "type": "string"
          },
          "period_start": {
            "format": "date-time",
            "title": "Period Start",
            "type": "string"
          },
          "provisional": {
            "description": "True while the usage behind it is provisional.",
            "title": "Provisional",
            "type": "boolean"
          },
          "state": {
            "description": "`open` while the month runs and until its close; `closed` is final.",
            "enum": [
              "open",
              "closed"
            ],
            "title": "State",
            "type": "string"
          },
          "total": {
            "description": "The rated lines' amounts added up, a decimal as text.",
            "title": "Total",
            "type": "string"
          },
          "unrated_lines": {
            "description": "Lines of usage with no rate; not in the total.",
            "title": "Unrated Lines",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "period",
          "period_start",
          "period_end",
          "state",
          "currency",
          "total",
          "lines",
          "unrated_lines",
          "provisional",
          "as_of",
          "closes_at",
          "closed_at",
          "gaps",
          "adjustments_after",
          "built_at",
          "items"
        ],
        "title": "Statement",
        "type": "object"
      },
      "StatementGap": {
        "description": "A span of a project's hours in the month that is not derived.",
        "properties": {
          "from": {
            "format": "date-time",
            "title": "From",
            "type": "string"
          },
          "hours": {
            "description": "Its width, a decimal as text.",
            "title": "Hours",
            "type": "string"
          },
          "kind": {
            "enum": [
              "skipped",
              "lost",
              "pending"
            ],
            "title": "Kind",
            "type": "string"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "project": {
            "description": "The project (`prj_…`).",
            "title": "Project",
            "type": "string"
          },
          "to": {
            "format": "date-time",
            "title": "To",
            "type": "string"
          }
        },
        "required": [
          "project",
          "location",
          "kind",
          "from",
          "to",
          "hours"
        ],
        "title": "StatementGap",
        "type": "object"
      },
      "StatementLine": {
        "description": "A group of usage on a statement and what it cost.",
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "bounded": {
            "description": "An hour holds a boundary known only between two readings.",
            "title": "Bounded",
            "type": "boolean"
          },
          "dimension": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Dimension"
              },
              {
                "type": "null"
              }
            ]
          },
          "hours_from": {
            "format": "date-time",
            "title": "Hours From",
            "type": "string"
          },
          "hours_to": {
            "format": "date-time",
            "title": "Hours To",
            "type": "string"
          },
          "id": {
            "description": "`stl_…`",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "description": "`adjustment`: a correction of a closed month, by the difference.",
            "enum": [
              "usage",
              "adjustment"
            ],
            "title": "Kind",
            "type": "string"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "metric": {
            "title": "Metric",
            "type": "string"
          },
          "observations": {
            "title": "Observations",
            "type": "integer"
          },
          "quantity": {
            "description": "A decimal as text; negative for a correction downwards.",
            "title": "Quantity",
            "type": "string"
          },
          "rate_version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rate Version"
          },
          "rated": {
            "description": "False when no rate applies: no price and no amount.",
            "title": "Rated",
            "type": "boolean"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          },
          "unit_price": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unit Price"
          },
          "usage_period": {
            "description": "The month the hours belong to, `YYYY-MM`.",
            "title": "Usage Period",
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "usage_period",
          "metric",
          "unit",
          "location",
          "dimension",
          "rated",
          "rate_version",
          "unit_price",
          "quantity",
          "amount",
          "hours_from",
          "hours_to",
          "observations",
          "bounded"
        ],
        "title": "StatementLine",
        "type": "object"
      },
      "StatementList": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/StatementSummary"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "title": "StatementList",
        "type": "object"
      },
      "StatementSummary": {
        "description": "One month's statement.",
        "properties": {
          "as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Usage collected up to this time is counted.",
            "title": "As Of"
          },
          "closed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Closed At"
          },
          "closes_at": {
            "format": "date-time",
            "title": "Closes At",
            "type": "string"
          },
          "currency": {
            "description": "ISO 4217 code.",
            "title": "Currency",
            "type": "string"
          },
          "gaps": {
            "description": "The month's hours whose usage is not known, as the last build saw them; a closed statement keeps those it closed with. Never counted as zero; hours derived later reach the next statement as adjustments.",
            "items": {
              "$ref": "#/components/schemas/StatementGap"
            },
            "title": "Gaps",
            "type": "array"
          },
          "id": {
            "description": "`stm_…`",
            "title": "Id",
            "type": "string"
          },
          "lines": {
            "title": "Lines",
            "type": "integer"
          },
          "period": {
            "description": "The calendar month (UTC), `YYYY-MM`.",
            "title": "Period",
            "type": "string"
          },
          "period_end": {
            "format": "date-time",
            "title": "Period End",
            "type": "string"
          },
          "period_start": {
            "format": "date-time",
            "title": "Period Start",
            "type": "string"
          },
          "provisional": {
            "description": "True while the usage behind it is provisional.",
            "title": "Provisional",
            "type": "boolean"
          },
          "state": {
            "description": "`open` while the month runs and until its close; `closed` is final.",
            "enum": [
              "open",
              "closed"
            ],
            "title": "State",
            "type": "string"
          },
          "total": {
            "description": "The rated lines' amounts added up, a decimal as text.",
            "title": "Total",
            "type": "string"
          },
          "unrated_lines": {
            "description": "Lines of usage with no rate; not in the total.",
            "title": "Unrated Lines",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "period",
          "period_start",
          "period_end",
          "state",
          "currency",
          "total",
          "lines",
          "unrated_lines",
          "provisional",
          "as_of",
          "closes_at",
          "closed_at",
          "gaps"
        ],
        "title": "StatementSummary",
        "type": "object"
      },
      "StepCall": {
        "description": "One step of an operation: what ran, where, how often, and its outcome.",
        "properties": {
          "action": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What the step does, such as `create_server`.",
            "title": "Action"
          },
          "attempts": {
            "title": "Attempts",
            "type": "integer"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ErrorCode"
              },
              {
                "type": "null"
              }
            ]
          },
          "ordinal": {
            "title": "Ordinal",
            "type": "integer"
          },
          "region": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Region"
          },
          "result": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                },
                {
                  "type": "boolean"
                },
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              ]
            },
            "description": "The identifiers the step recorded, such as the provider ID it created.",
            "title": "Result",
            "type": "object"
          },
          "service": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Service"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "ordinal",
          "action",
          "service",
          "region",
          "state",
          "error",
          "attempts",
          "started_at",
          "completed_at",
          "result"
        ],
        "title": "StepCall",
        "type": "object"
      },
      "StepCount": {
        "properties": {
          "succeeded": {
            "title": "Succeeded",
            "type": "integer"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "total",
          "succeeded"
        ],
        "title": "StepCount",
        "type": "object"
      },
      "SubnetBody": {
        "additionalProperties": false,
        "properties": {
          "allocation_pools": {
            "items": {
              "$ref": "#/components/schemas/PoolBody"
            },
            "maxItems": 4,
            "title": "Allocation Pools",
            "type": "array"
          },
          "cidr": {
            "maxLength": 43,
            "title": "Cidr",
            "type": "string"
          },
          "dns_nameservers": {
            "items": {
              "type": "string"
            },
            "maxItems": 4,
            "title": "Dns Nameservers",
            "type": "array"
          },
          "enable_dhcp": {
            "default": true,
            "title": "Enable Dhcp",
            "type": "boolean"
          },
          "gateway_ip": {
            "anyOf": [
              {
                "maxLength": 39,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Gateway Ip"
          },
          "no_gateway": {
            "default": false,
            "title": "No Gateway",
            "type": "boolean"
          }
        },
        "required": [
          "cidr"
        ],
        "title": "SubnetBody",
        "type": "object"
      },
      "SubnetCreateBody": {
        "additionalProperties": false,
        "properties": {
          "allocation_pools": {
            "items": {
              "$ref": "#/components/schemas/PoolBody"
            },
            "maxItems": 4,
            "title": "Allocation Pools",
            "type": "array"
          },
          "cidr": {
            "maxLength": 43,
            "title": "Cidr",
            "type": "string"
          },
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "dns_nameservers": {
            "items": {
              "type": "string"
            },
            "maxItems": 4,
            "title": "Dns Nameservers",
            "type": "array"
          },
          "enable_dhcp": {
            "default": true,
            "title": "Enable Dhcp",
            "type": "boolean"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "gateway_ip": {
            "anyOf": [
              {
                "maxLength": 39,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Gateway Ip"
          },
          "no_gateway": {
            "default": false,
            "title": "No Gateway",
            "type": "boolean"
          }
        },
        "required": [
          "display_name",
          "cidr"
        ],
        "title": "SubnetCreateBody",
        "type": "object"
      },
      "SubnetPatchBody": {
        "additionalProperties": false,
        "properties": {
          "allocation_pools": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PoolBody"
                },
                "maxItems": 4,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Allocation Pools"
          },
          "display_name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "pattern": "^[^\\x00-\\x1f\\x7f]+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Display Name"
          },
          "dns_nameservers": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 4,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Dns Nameservers"
          },
          "enable_dhcp": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Enable Dhcp"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "gateway_ip": {
            "anyOf": [
              {
                "maxLength": 39,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Gateway Ip"
          },
          "host_routes": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/RouteBody"
                },
                "maxItems": 16,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Host Routes"
          },
          "no_gateway": {
            "default": false,
            "title": "No Gateway",
            "type": "boolean"
          }
        },
        "title": "SubnetPatchBody",
        "type": "object"
      },
      "TagDrift": {
        "description": "The resource's `nx.` tags as its location last reported them, when they differ from\nNubeStack Cloud's. NubeStack Cloud does not change them back; its own tags still decide lists and cost.",
        "properties": {
          "cloud": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The `nx.` tags read from the location.",
            "title": "Cloud",
            "type": "object"
          },
          "observed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Observed At"
          }
        },
        "required": [
          "cloud",
          "observed_at"
        ],
        "title": "TagDrift",
        "type": "object"
      },
      "TagsBody": {
        "additionalProperties": false,
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels `key: value` NubeStack Cloud keeps and writes to the resource in its location as `nx.<key>=<value>` (a volume's metadata key `nx.<key>`), keeping its other tags. At most 20; a key is 1-32 of `a-z`, `0-9`, `_`, `.`, `-`, starting with a letter; a value is 0-24 of `A-Z`, `a-z`, `0-9`, `_`, `.`, `:`, `-`. An organization uses at most 50 keys.",
            "maxProperties": 64,
            "title": "Tags",
            "type": "object"
          }
        },
        "required": [
          "tags"
        ],
        "title": "TagsBody",
        "type": "object"
      },
      "TemplateChangeBody": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 256,
                "pattern": "^[^\\x00-\\x1f\\x7f]*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Description"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 1,
                "pattern": "^[^\\x00-\\x1f\\x7f]+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "server": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ServerCreateBody"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A new body: saved as the next version, which becomes current. It has exactly the user data it sends (none when absent)."
          }
        },
        "title": "TemplateChangeBody",
        "type": "object"
      },
      "TemplateCreateBody": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "default": "",
            "maxLength": 256,
            "pattern": "^[^\\x00-\\x1f\\x7f]*$",
            "title": "Description",
            "type": "string"
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Name",
            "type": "string"
          },
          "server": {
            "$ref": "#/components/schemas/ServerCreateBody",
            "description": "What `POST …/servers` takes, without `execute_before`, `fixed_ip`, `public_ip_id` or an existing volume. `display_name` is the base of the instances' names. `user_data` is sealed and never shown again."
          }
        },
        "required": [
          "name",
          "server"
        ],
        "title": "TemplateCreateBody",
        "type": "object"
      },
      "TemplateDeleted": {
        "properties": {
          "deleted": {
            "title": "Deleted",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "deleted"
        ],
        "title": "TemplateDeleted",
        "type": "object"
      },
      "TemplateList": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/TemplateView"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "TemplateList",
        "type": "object"
      },
      "TemplateRef": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "The launch template (`ltp_`).",
            "title": "Id",
            "type": "string"
          },
          "version": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A version of it; the current one when absent.",
            "title": "Version"
          }
        },
        "required": [
          "id"
        ],
        "title": "TemplateRef",
        "type": "object"
      },
      "TemplateVersionView": {
        "properties": {
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "has_user_data": {
            "title": "Has User Data",
            "type": "boolean"
          },
          "version": {
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "has_user_data",
          "created_at"
        ],
        "title": "TemplateVersionView",
        "type": "object"
      },
      "TemplateView": {
        "description": "A launch template and one version's body (the current one unless asked).",
        "properties": {
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "current_version": {
            "title": "Current Version",
            "type": "integer"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "has_user_data": {
            "title": "Has User Data",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "server": {
            "additionalProperties": true,
            "description": "The version's body, without its user data.",
            "title": "Server",
            "type": "object"
          },
          "shown_version": {
            "title": "Shown Version",
            "type": "integer"
          },
          "updated_at": {
            "title": "Updated At",
            "type": "string"
          },
          "version": {
            "description": "The ETag: send it in `If-Match` to change or delete.",
            "title": "Version",
            "type": "integer"
          },
          "versions": {
            "items": {
              "$ref": "#/components/schemas/TemplateVersionView"
            },
            "title": "Versions",
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "current_version",
          "version",
          "server",
          "shown_version",
          "has_user_data",
          "versions",
          "created_at",
          "updated_at"
        ],
        "title": "TemplateView",
        "type": "object"
      },
      "TopologyCount": {
        "properties": {
          "count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Count"
          },
          "kind": {
            "enum": [
              "network",
              "router",
              "internet_gateway",
              "server",
              "load_balancer",
              "floating_ip"
            ],
            "title": "Kind",
            "type": "string"
          },
          "observed": {
            "title": "Observed",
            "type": "integer"
          }
        },
        "required": [
          "kind",
          "count",
          "observed"
        ],
        "title": "TopologyCount",
        "type": "object"
      },
      "TopologyEdge": {
        "properties": {
          "evidence": {
            "title": "Evidence",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "observed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Observed At"
          },
          "source": {
            "title": "Source",
            "type": "string"
          },
          "state": {
            "default": "observed",
            "enum": [
              "observed",
              "pending",
              "unresolved"
            ],
            "title": "State",
            "type": "string"
          },
          "target": {
            "title": "Target",
            "type": "string"
          }
        },
        "required": [
          "id",
          "source",
          "target",
          "kind",
          "label",
          "evidence"
        ],
        "title": "TopologyEdge",
        "type": "object"
      },
      "TopologyGroup": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "location_id": {
            "title": "Location Id",
            "type": "string"
          },
          "placement_id": {
            "title": "Placement Id",
            "type": "string"
          },
          "project_id": {
            "title": "Project Id",
            "type": "string"
          },
          "region": {
            "title": "Region",
            "type": "string"
          }
        },
        "required": [
          "id",
          "project_id",
          "placement_id",
          "location_id",
          "label",
          "region"
        ],
        "title": "TopologyGroup",
        "type": "object"
      },
      "TopologyNode": {
        "properties": {
          "details": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Details",
            "type": "object"
          },
          "group": {
            "title": "Group",
            "type": "string"
          },
          "href": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Href"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "incomplete": {
            "default": false,
            "title": "Incomplete",
            "type": "boolean"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "observed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Observed At"
          },
          "operation_href": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Operation Href"
          },
          "origin": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Origin"
          },
          "parent": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          },
          "state": {
            "default": "observed",
            "enum": [
              "observed",
              "pending",
              "unresolved"
            ],
            "title": "State",
            "type": "string"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          }
        },
        "required": [
          "id",
          "kind",
          "label",
          "group"
        ],
        "title": "TopologyNode",
        "type": "object"
      },
      "TopologySource": {
        "properties": {
          "data_as_of": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data As Of"
          },
          "group": {
            "title": "Group",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "last_success_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Success At"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "region": {
            "title": "Region",
            "type": "string"
          },
          "service": {
            "title": "Service",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "group",
          "location",
          "service",
          "region",
          "status",
          "reason",
          "data_as_of",
          "last_success_at"
        ],
        "title": "TopologySource",
        "type": "object"
      },
      "TopologySummary": {
        "properties": {
          "complete": {
            "title": "Complete",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "project_count": {
            "title": "Project Count",
            "type": "integer"
          },
          "projects": {
            "items": {
              "$ref": "#/components/schemas/ProjectSummary"
            },
            "title": "Projects",
            "type": "array"
          },
          "schema_version": {
            "default": 1,
            "title": "Schema Version",
            "type": "integer"
          },
          "scope": {
            "enum": [
              "organization",
              "granted"
            ],
            "title": "Scope",
            "type": "string"
          },
          "truncated": {
            "title": "Truncated",
            "type": "boolean"
          },
          "view_revision": {
            "title": "View Revision",
            "type": "string"
          }
        },
        "required": [
          "view_revision",
          "scope",
          "project_count",
          "projects",
          "complete",
          "truncated"
        ],
        "title": "TopologySummary",
        "type": "object"
      },
      "TopologyView": {
        "properties": {
          "complete": {
            "title": "Complete",
            "type": "boolean"
          },
          "edges": {
            "items": {
              "$ref": "#/components/schemas/TopologyEdge"
            },
            "title": "Edges",
            "type": "array"
          },
          "focus": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Focus"
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/TopologyGroup"
            },
            "title": "Groups",
            "type": "array"
          },
          "layers": {
            "items": {
              "type": "string"
            },
            "title": "Layers",
            "type": "array"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "nodes": {
            "items": {
              "$ref": "#/components/schemas/TopologyNode"
            },
            "title": "Nodes",
            "type": "array"
          },
          "notices": {
            "items": {
              "type": "string"
            },
            "title": "Notices",
            "type": "array"
          },
          "observed_resource_count": {
            "title": "Observed Resource Count",
            "type": "integer"
          },
          "omitted_adjacency": {
            "default": 0,
            "title": "Omitted Adjacency",
            "type": "integer"
          },
          "project_id": {
            "title": "Project Id",
            "type": "string"
          },
          "resource_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Count"
          },
          "schema_version": {
            "default": 1,
            "title": "Schema Version",
            "type": "integer"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/TopologySource"
            },
            "title": "Sources",
            "type": "array"
          },
          "truncated": {
            "title": "Truncated",
            "type": "boolean"
          },
          "unresolved_count": {
            "title": "Unresolved Count",
            "type": "integer"
          },
          "view_revision": {
            "title": "View Revision",
            "type": "string"
          }
        },
        "required": [
          "view_revision",
          "project_id",
          "location",
          "focus",
          "layers",
          "nodes",
          "edges",
          "groups",
          "sources",
          "complete",
          "truncated",
          "resource_count",
          "observed_resource_count",
          "unresolved_count"
        ],
        "title": "TopologyView",
        "type": "object"
      },
      "Unrated": {
        "properties": {
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "metric": {
            "title": "Metric",
            "type": "string"
          },
          "quantity": {
            "description": "Usage with no rate. Not in any amount, never a zero cost.",
            "title": "Quantity",
            "type": "string"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "metric",
          "unit",
          "location",
          "quantity"
        ],
        "title": "Unrated",
        "type": "object"
      },
      "UpdateBody": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 255,
                "pattern": "^[^\\x00-\\x1f\\x7f]*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Description"
          },
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          }
        },
        "required": [
          "display_name"
        ],
        "title": "UpdateBody",
        "type": "object"
      },
      "Usage": {
        "description": "Provisional usage quantities for a window of whole hours. Never prices.",
        "properties": {
          "from": {
            "description": "The window's start (included).",
            "format": "date-time",
            "title": "From",
            "type": "string"
          },
          "group_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Group By"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UsageQuantity"
            },
            "title": "Items",
            "type": "array"
          },
          "provisional": {
            "const": true,
            "title": "Provisional",
            "type": "boolean"
          },
          "quality": {
            "const": "provisional",
            "title": "Quality",
            "type": "string"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/UsageSource"
            },
            "title": "Sources",
            "type": "array"
          },
          "to": {
            "description": "The window's end (excluded).",
            "format": "date-time",
            "title": "To",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to",
          "group_by",
          "provisional",
          "quality",
          "items",
          "sources"
        ],
        "title": "Usage",
        "type": "object"
      },
      "UsageExportItem": {
        "description": "One export of a month's hourly usage.",
        "properties": {
          "as_of": {
            "description": "Usage collected up to this time is in the export.",
            "format": "date-time",
            "title": "As Of",
            "type": "string"
          },
          "href": {
            "description": "Where to download it once ready.",
            "title": "Href",
            "type": "string"
          },
          "id": {
            "description": "`uex_…`",
            "title": "Id",
            "type": "string"
          },
          "month": {
            "description": "The calendar month (UTC), `YYYY-MM`.",
            "title": "Month",
            "type": "string"
          },
          "operation": {
            "$ref": "#/components/schemas/ExportOperation"
          },
          "ready_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ready At"
          },
          "requested_at": {
            "format": "date-time",
            "title": "Requested At",
            "type": "string"
          },
          "state": {
            "description": "`ready`: download it from `href`; `failed`: its operation ended without it (the month's hourly usage was removed meanwhile).",
            "enum": [
              "preparing",
              "ready",
              "failed"
            ],
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "id",
          "month",
          "state",
          "as_of",
          "requested_at",
          "ready_at",
          "operation",
          "href"
        ],
        "title": "UsageExportItem",
        "type": "object"
      },
      "UsageExportList": {
        "description": "The organization's usage exports, newest first. Their usage is provisional.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/UsageExportItem"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "provisional": {
            "const": true,
            "title": "Provisional",
            "type": "boolean"
          }
        },
        "required": [
          "provisional",
          "items",
          "next_cursor"
        ],
        "title": "UsageExportList",
        "type": "object"
      },
      "UsageGap": {
        "description": "A span of a project's hours in one location that is not derived: never counted as zero.",
        "properties": {
          "from": {
            "description": "The gap's start in the window (included).",
            "format": "date-time",
            "title": "From",
            "type": "string"
          },
          "hours": {
            "description": "Its width in the window, a decimal as text.",
            "title": "Hours",
            "type": "string"
          },
          "kind": {
            "description": "`skipped`: hours the ledger left behind, which a repair can still derive; `lost`: hours before the change log's reach, unknown for ever; `pending`: hours not derived yet, more than six hours after they ended.",
            "enum": [
              "skipped",
              "lost",
              "pending"
            ],
            "title": "Kind",
            "type": "string"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "project": {
            "description": "The project (`prj_…`).",
            "title": "Project",
            "type": "string"
          },
          "to": {
            "description": "The gap's end in the window (excluded).",
            "format": "date-time",
            "title": "To",
            "type": "string"
          }
        },
        "required": [
          "project",
          "location",
          "kind",
          "from",
          "to",
          "hours"
        ],
        "title": "UsageGap",
        "type": "object"
      },
      "UsageGaps": {
        "description": "The organization's usage gaps in a window of whole hours.",
        "properties": {
          "from": {
            "format": "date-time",
            "title": "From",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UsageGap"
            },
            "title": "Items",
            "type": "array"
          },
          "provisional": {
            "const": true,
            "title": "Provisional",
            "type": "boolean"
          },
          "to": {
            "format": "date-time",
            "title": "To",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to",
          "provisional",
          "items"
        ],
        "title": "UsageGaps",
        "type": "object"
      },
      "UsageMonthItem": {
        "description": "One metric's quantity in one calendar month.",
        "properties": {
          "bounded": {
            "description": "Whether an hour in the month has a start or end known only between two readings rather than exactly.",
            "title": "Bounded",
            "type": "boolean"
          },
          "metric": {
            "title": "Metric",
            "type": "string"
          },
          "month": {
            "description": "The calendar month (UTC), `YYYY-MM`.",
            "title": "Month",
            "type": "string"
          },
          "quantity": {
            "description": "A decimal, as text.",
            "title": "Quantity",
            "type": "string"
          },
          "source": {
            "description": "`hourly`: summed from the hourly usage, which can be exported; `monthly_totals`: the month's totals, kept for ever after its hourly usage was removed.",
            "enum": [
              "hourly",
              "monthly_totals"
            ],
            "title": "Source",
            "type": "string"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "month",
          "metric",
          "unit",
          "quantity",
          "bounded",
          "source"
        ],
        "title": "UsageMonthItem",
        "type": "object"
      },
      "UsageMonths": {
        "description": "Provisional usage per calendar month, newest first. Never prices.",
        "properties": {
          "detail_from": {
            "description": "The oldest month whose hourly usage is kept (13 months); earlier months have their totals only.",
            "title": "Detail From",
            "type": "string"
          },
          "from": {
            "description": "The first month (included), `YYYY-MM`.",
            "title": "From",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UsageMonthItem"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "provisional": {
            "const": true,
            "title": "Provisional",
            "type": "boolean"
          },
          "quality": {
            "const": "provisional",
            "title": "Quality",
            "type": "string"
          },
          "to": {
            "description": "The last month (included), `YYYY-MM`.",
            "title": "To",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to",
          "detail_from",
          "provisional",
          "quality",
          "items",
          "next_cursor"
        ],
        "title": "UsageMonths",
        "type": "object"
      },
      "UsageQuantity": {
        "description": "One metric's quantity in the window, for the group it is in.",
        "properties": {
          "bounded": {
            "description": "Whether an hour in the sum has a start or end known only between two readings rather than exactly.",
            "title": "Bounded",
            "type": "boolean"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Grouped by location.",
            "title": "Location"
          },
          "metric": {
            "description": "Such as `instance.hours` or `ram.gb_hours`.",
            "title": "Metric",
            "type": "string"
          },
          "project": {
            "description": "Grouped by project: the project (`prj_…`).",
            "title": "Project",
            "type": "string"
          },
          "quantity": {
            "description": "A decimal, as text.",
            "title": "Quantity",
            "type": "string"
          },
          "resource_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Grouped by resource type.",
            "title": "Resource Type"
          },
          "unit": {
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "metric",
          "unit",
          "quantity",
          "bounded"
        ],
        "title": "UsageQuantity",
        "type": "object"
      },
      "UsageRow": {
        "properties": {
          "counted": {
            "description": "`removed`: an earlier value an adjustment takes back.",
            "enum": [
              "added",
              "removed"
            ],
            "title": "Counted",
            "type": "string"
          },
          "hour": {
            "format": "date-time",
            "title": "Hour",
            "type": "string"
          },
          "observation": {
            "description": "`uob_…`",
            "title": "Observation",
            "type": "string"
          },
          "precision": {
            "enum": [
              "exact",
              "bounded"
            ],
            "title": "Precision",
            "type": "string"
          },
          "quantity": {
            "title": "Quantity",
            "type": "string"
          },
          "supersedes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The observation this one corrects.",
            "title": "Supersedes"
          }
        },
        "required": [
          "observation",
          "hour",
          "quantity",
          "precision",
          "supersedes",
          "counted"
        ],
        "title": "UsageRow",
        "type": "object"
      },
      "UsageSource": {
        "description": "How far one location's hours are known.",
        "properties": {
          "data_as_of": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data As Of"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "status": {
            "description": "`pending`: no hour derived there yet.",
            "enum": [
              "ok",
              "pending"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "location",
          "status",
          "data_as_of"
        ],
        "title": "UsageSource",
        "type": "object"
      },
      "ValidationError": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "VisibleResource": {
        "description": "A resource others can see or use, such as a shared image, which deleting it affects.",
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "visibility": {
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "display_name",
          "visibility"
        ],
        "title": "VisibleResource",
        "type": "object"
      },
      "VolumeCreateBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "image": {
            "anyOf": [
              {
                "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image"
          },
          "image_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image Id"
          },
          "image_version": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Image Version"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "size_gb": {
            "maximum": 4096,
            "minimum": 1,
            "title": "Size Gb",
            "type": "integer"
          },
          "snapshot_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Snapshot Id"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels `key: value` NubeStack Cloud keeps and writes to the resource in its location as `nx.<key>=<value>` (a volume's metadata key `nx.<key>`), keeping its other tags. At most 20; a key is 1-32 of `a-z`, `0-9`, `_`, `.`, `-`, starting with a letter; a value is 0-24 of `A-Z`, `a-z`, `0-9`, `_`, `.`, `:`, `-`. An organization uses at most 50 keys.",
            "maxProperties": 64,
            "title": "Tags",
            "type": "object"
          },
          "volume_type": {
            "default": "standard",
            "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
            "title": "Volume Type",
            "type": "string"
          }
        },
        "required": [
          "location",
          "display_name",
          "size_gb"
        ],
        "title": "VolumeCreateBody",
        "type": "object"
      },
      "WaitingFor": {
        "description": "The operation a queued one waits for.",
        "properties": {
          "id": {
            "description": "The operation (`op_…`) directly ahead of this one.",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind"
        ],
        "title": "WaitingFor",
        "type": "object"
      },
      "nexus__api__routes__consoles__PublicJwk": {
        "additionalProperties": false,
        "description": "An ephemeral EC P-256 public key the browser tab made: exactly the point.",
        "properties": {
          "crv": {
            "title": "Crv",
            "type": "string"
          },
          "kty": {
            "title": "Kty",
            "type": "string"
          },
          "x": {
            "title": "X",
            "type": "string"
          },
          "y": {
            "title": "Y",
            "type": "string"
          }
        },
        "required": [
          "kty",
          "crv",
          "x",
          "y"
        ],
        "title": "PublicJwk",
        "type": "object"
      },
      "nexus__api__routes__instance_groups__GroupCreateBody": {
        "additionalProperties": false,
        "properties": {
          "desired": {
            "description": "How many instances to keep.",
            "maximum": 100,
            "minimum": 0,
            "title": "Desired",
            "type": "integer"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The template's location (`loc_`); the group always makes its instances there.",
            "title": "Location"
          },
          "max": {
            "description": "The largest `desired` may be.",
            "maximum": 100,
            "minimum": 0,
            "title": "Max",
            "type": "integer"
          },
          "max_surge": {
            "default": 1,
            "description": "How many instances may be created at once.",
            "maximum": 10,
            "minimum": 1,
            "title": "Max Surge",
            "type": "integer"
          },
          "member_port": {
            "anyOf": [
              {
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The port the pool sends to.",
            "title": "Member Port"
          },
          "min": {
            "default": 0,
            "description": "The smallest `desired` may be.",
            "maximum": 100,
            "minimum": 0,
            "title": "Min",
            "type": "integer"
          },
          "name": {
            "description": "Its instances are named `<name>-<n>`.",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,47}$",
            "title": "Name",
            "type": "string"
          },
          "pool_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A load balancer pool (`lbp_`) each instance joins once it runs, and leaves before it is deleted.",
            "title": "Pool Id"
          },
          "template_id": {
            "description": "A launch template of this project (`ltp_`).",
            "title": "Template Id",
            "type": "string"
          },
          "template_version": {
            "anyOf": [
              {
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A version of it; absent: the template's latest version at each create.",
            "title": "Template Version"
          }
        },
        "required": [
          "name",
          "template_id",
          "desired",
          "max"
        ],
        "title": "GroupCreateBody",
        "type": "object"
      },
      "nexus__api__routes__members__TransferBody": {
        "additionalProperties": false,
        "properties": {
          "member_id": {
            "maxLength": 64,
            "title": "Member Id",
            "type": "string"
          },
          "then": {
            "enum": [
              "owner",
              "admin",
              "member"
            ],
            "title": "Then",
            "type": "string"
          }
        },
        "required": [
          "member_id",
          "then"
        ],
        "title": "TransferBody",
        "type": "object"
      },
      "nexus__api__routes__service_accounts__KeyBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Display Name",
            "type": "string"
          },
          "expires_in_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Expires In Days"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "maxItems": 4,
            "title": "Scopes",
            "type": "array"
          }
        },
        "required": [
          "display_name"
        ],
        "title": "KeyBody",
        "type": "object"
      },
      "nexus__api__routes__service_accounts__PublicJwk": {
        "additionalProperties": false,
        "description": "An ephemeral EC P-256 public key: exactly the point, never a private `d`.",
        "properties": {
          "crv": {
            "title": "Crv",
            "type": "string"
          },
          "kty": {
            "title": "Kty",
            "type": "string"
          },
          "x": {
            "title": "X",
            "type": "string"
          },
          "y": {
            "title": "Y",
            "type": "string"
          }
        },
        "required": [
          "kty",
          "crv",
          "x",
          "y"
        ],
        "title": "PublicJwk",
        "type": "object"
      },
      "nexus__api__routes__ssh_keys__KeyBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Display Name",
            "type": "string"
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Project Id"
          },
          "public_key": {
            "maxLength": 16384,
            "minLength": 16,
            "title": "Public Key",
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "public_key"
        ],
        "title": "KeyBody",
        "type": "object"
      },
      "nexus__api__routes__workloads__GroupCreateBody": {
        "additionalProperties": false,
        "properties": {
          "display_name": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "title": "Display Name",
            "type": "string"
          },
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "location": {
            "title": "Location",
            "type": "string"
          },
          "template": {
            "anyOf": [
              {
                "enum": [
                  "ssh",
                  "web",
                  "private"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Template"
          }
        },
        "required": [
          "location",
          "display_name"
        ],
        "title": "GroupCreateBody",
        "type": "object"
      },
      "nexus__api__routes__workloads__TransferBody": {
        "additionalProperties": false,
        "description": "Another project of this organization, placed in the volume's location (OQ-6).",
        "properties": {
          "execute_before": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Execute Before"
          },
          "target_project_id": {
            "title": "Target Project Id",
            "type": "string"
          }
        },
        "required": [
          "target_project_id"
        ],
        "title": "TransferBody",
        "type": "object"
      }
    },
    "securitySchemes": {
      "Authorization": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API key",
        "description": "Bearer followed by a service account's API key. The console uses your signed-in session instead."
      }
    }
  },
  "info": {
    "title": "NubeStack Cloud API",
    "version": "1",
    "description": "The NubeStack Cloud customer API, version 1. Authenticate with a service account's API key as a bearer token. Changes that run in a location answer `202 Accepted` with an operation to follow."
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/invitations/{org_id}/{invitation_id}": {
      "get": {
        "description": "The organization and role an invitation offers, for the signed-in person holding its link, and whether their e-mail matches it. The invitation's secret goes in the `Nexus-Invitation-Secret` header.",
        "operationId": "get_invitation",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "title": "Invitation Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "nexus-invitation-secret",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Nexus-Invitation-Secret"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvitationLookup"
                }
              }
            },
            "description": "What the invitation offers."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Look up an invitation",
        "tags": [
          "Invitations"
        ]
      }
    },
    "/v1/invitations/{org_id}/{invitation_id}:accept": {
      "post": {
        "description": "Joins the organization with the role and project roles the invitation offers. The signed-in person's verified e-mail must match it.",
        "operationId": "accept_invitation",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "title": "Invitation Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "nexus-invitation-secret",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Nexus-Invitation-Secret"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedInvitation"
                }
              }
            },
            "description": "The new membership."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Accept an invitation",
        "tags": [
          "Invitations"
        ]
      }
    },
    "/v1/invitations/{org_id}/{invitation_id}:decline": {
      "post": {
        "description": "Refuses the invitation; its link stops working.",
        "operationId": "decline_invitation",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "title": "Invitation Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "nexus-invitation-secret",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Nexus-Invitation-Secret"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeclinedInvitation"
                }
              }
            },
            "description": "The invitation, declined."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Decline an invitation",
        "tags": [
          "Invitations"
        ]
      }
    },
    "/v1/invitations/{org_id}/{invitation_id}:signup": {
      "post": {
        "description": "A one-time ticket to create an account for the invitation's e-mail address, for someone who has no account yet.",
        "operationId": "signup_ticket",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "title": "Invitation Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "nexus-invitation-secret",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Nexus-Invitation-Secret"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignupTicket"
                }
              }
            },
            "description": "The sign-up ticket."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Start signing up from an invitation",
        "tags": [
          "Invitations"
        ]
      }
    },
    "/v1/me": {
      "get": {
        "description": "The signed-in person or service account, with every organization they belong to, their roles there and each membership's status.",
        "operationId": "me",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Me"
                }
              }
            },
            "description": "The caller and their organizations."
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Who am I",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}": {
      "get": {
        "description": "The organization's name, short name and state, and the caller's roles in it.",
        "operationId": "get_org",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Organization"
                }
              }
            },
            "description": "The organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get the organization",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}/audit-events": {
      "get": {
        "description": "The organization's audit log, newest first, a page at a time, filtered by time, category, name, outcome, actor, target or operation.",
        "operationId": "list_audit_events",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "category",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Category"
            }
          },
          {
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^[a-z][a-z0-9_.]{0,127}$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Name"
            }
          },
          {
            "in": "query",
            "name": "outcome",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^(accepted|succeeded|failed|denied)$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Outcome"
            }
          },
          {
            "in": "query",
            "name": "actor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Actor"
            }
          },
          {
            "description": "Who acted, by kind: `human`, `service`, `support`, `operator` or `system`, or several separated by commas, such as `human,operator,support`.",
            "in": "query",
            "name": "actor_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Who acted, by kind: `human`, `service`, `support`, `operator` or `system`, or several separated by commas, such as `human,operator,support`.",
              "title": "Actor Type"
            }
          },
          {
            "in": "query",
            "name": "target",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Target"
            }
          },
          {
            "in": "query",
            "name": "operation",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Operation"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditEventList"
                }
              }
            },
            "description": "A page of events."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List audit events",
        "tags": [
          "Audit log"
        ]
      }
    },
    "/v1/orgs/{org_id}/audit-events/{event_id}": {
      "get": {
        "description": "One audit event: who did what to which target, when, and the outcome.",
        "operationId": "get_audit_event",
        "parameters": [
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditEventView"
                }
              }
            },
            "description": "The event."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get an audit event",
        "tags": [
          "Audit log"
        ]
      }
    },
    "/v1/orgs/{org_id}/audit-events:export": {
      "get": {
        "description": "The audit events matching the same filters as the list, streamed as JSON lines or CSV for keeping or analysis elsewhere.",
        "operationId": "export_audit_events",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "format",
            "required": false,
            "schema": {
              "default": "jsonl",
              "pattern": "^(csv|jsonl)$",
              "title": "Format",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "category",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Category"
            }
          },
          {
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^[a-z][a-z0-9_.]{0,127}$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Name"
            }
          },
          {
            "in": "query",
            "name": "outcome",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^(accepted|succeeded|failed|denied)$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Outcome"
            }
          },
          {
            "in": "query",
            "name": "actor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Actor"
            }
          },
          {
            "description": "Who acted, by kind: `human`, `service`, `support`, `operator` or `system`, or several separated by commas, such as `human,operator,support`.",
            "in": "query",
            "name": "actor_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Who acted, by kind: `human`, `service`, `support`, `operator` or `system`, or several separated by commas, such as `human,operator,support`.",
              "title": "Actor Type"
            }
          },
          {
            "in": "query",
            "name": "target",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Target"
            }
          },
          {
            "in": "query",
            "name": "operation",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Operation"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The events as a download: one JSON object per line, as an event reads in the list, or CSV with a header row."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Export audit events",
        "tags": [
          "Audit log"
        ]
      }
    },
    "/v1/orgs/{org_id}/catalog": {
      "get": {
        "description": "What can be created in one location the organization may use: sizes, images, volume types and other offerings, each with whether it is available now.",
        "operationId": "catalog",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "location",
            "required": true,
            "schema": {
              "title": "Location",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catalog"
                }
              }
            },
            "description": "The location's offerings."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a location's catalog",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}/closure-report": {
      "get": {
        "description": "What closing the organization would remove, per project and location, with how long it is kept before anything is destroyed.",
        "operationId": "get_closure_report",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClosureReport"
                }
              }
            },
            "description": "The report."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get the organization's closure report",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}/costs": {
      "get": {
        "description": "A month's provisional cost so far by project, service, location or one tag key's values, day by day, with last month's total and an estimate of this month's.",
        "operationId": "costs",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "period",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Period"
            }
          },
          {
            "in": "query",
            "name": "group_by",
            "required": false,
            "schema": {
              "default": "project",
              "pattern": "^(project|service|location|tag:[a-z][a-z0-9_.-]{0,31})$",
              "title": "Group By",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "project",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Project"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Costs"
                }
              }
            },
            "description": "The month's cost, grouped."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Explore the organization's costs",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/data-export": {
      "get": {
        "description": "The export an owner asked for while the organization is closing, once it is ready: the organization's records up to the time it was asked for, as JSON lines.",
        "operationId": "download_data_export",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The organization's records, one JSON object per line."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Download the organization's data export",
        "tags": [
          "Organizations"
        ]
      },
      "post": {
        "description": "While the organization is closing, until its records are purged, an owner can ask for an export of its records: projects and locations, members and roles, usage, statements and the audit log. Accepted at once: follow the returned operation; the organization's closure says when the export is ready to download.",
        "operationId": "request_data_export",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Request the organization's data export",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}/entitlements": {
      "get": {
        "description": "For each location: the budget per resource class, how much of it is allocated to projects and how much is left.",
        "operationId": "get_entitlements",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Entitlements"
                }
              }
            },
            "description": "The budgets in each location."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get the organization's budgets",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/invitations": {
      "get": {
        "description": "The organization's invitations and their state.",
        "operationId": "list_invitations",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvitationList"
                }
              }
            },
            "description": "The pending invitations."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List invitations",
        "tags": [
          "Members and invitations"
        ]
      },
      "post": {
        "description": "Invites an e-mail address to the organization with a role and, optionally, project roles. The link is in this response only.",
        "operationId": "create_invitation",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedInvitation"
                }
              }
            },
            "description": "The invitation, with its link."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Invite someone",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/invitations/{invitation_id}": {
      "delete": {
        "description": "Stops a pending invitation's link from working.",
        "operationId": "revoke_invitation",
        "parameters": [
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "title": "Invitation Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvitationRevoked"
                }
              }
            },
            "description": "The invitation, revoked."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Revoke an invitation",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/invitations/{invitation_id}:resend": {
      "post": {
        "description": "Replaces a pending invitation with an identical one and a new link, returned in this response only; the old link stops working.",
        "operationId": "resend_invitation",
        "parameters": [
          {
            "in": "path",
            "name": "invitation_id",
            "required": true,
            "schema": {
              "title": "Invitation Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResentInvitation"
                }
              }
            },
            "description": "The new invitation, with its link."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Send an invitation again",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/locations": {
      "get": {
        "description": "The locations the organization may use, and whether each is taking new resources now.",
        "operationId": "list_locations",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationList"
                }
              }
            },
            "description": "The locations."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List locations",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}/member-grants": {
      "get": {
        "description": "Each member's project roles, in the same order and pages as the member list. Only projects the caller may see are included; `visibility` says whether the answer is complete.",
        "operationId": "list_member_grants",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "member",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Member"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberGrantList"
                }
              }
            },
            "description": "A page of members and their project roles."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List members' project roles",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/members": {
      "get": {
        "description": "The organization's members with their roles and status, a page at a time.",
        "operationId": "list_members",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberList"
                }
              }
            },
            "description": "A page of members."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List members",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/members/me:leave": {
      "post": {
        "description": "Removes the caller from this organization, as removing a member does. The organization's only owner is refused until they make someone else an owner.",
        "operationId": "leave",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Leave the organization",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/members/{member_id}": {
      "delete": {
        "description": "Removes the person from the organization, with their project roles, invitations they issued and personal SSH keys; their access in each location is revoked. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "remove",
        "parameters": [
          {
            "in": "path",
            "name": "member_id",
            "required": true,
            "schema": {
              "title": "Member Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Remove a member",
        "tags": [
          "Members and invitations"
        ]
      },
      "patch": {
        "description": "Sets the member's organization roles. Send the member's current version in `If-Match`.",
        "operationId": "change_roles",
        "parameters": [
          {
            "in": "path",
            "name": "member_id",
            "required": true,
            "schema": {
              "title": "Member Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RolesBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberRoles"
                }
              }
            },
            "description": "The member's roles after the change."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a member's roles",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/members/{member_id}:resume": {
      "post": {
        "description": "Gives a suspended member their access back. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "resume",
        "parameters": [
          {
            "in": "path",
            "name": "member_id",
            "required": true,
            "schema": {
              "title": "Member Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Resume a member",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/members/{member_id}:suspend": {
      "post": {
        "description": "Stops the member using the organization and its projects until resumed, including in each location's console and CLI. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "suspend",
        "parameters": [
          {
            "in": "path",
            "name": "member_id",
            "required": true,
            "schema": {
              "title": "Member Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Suspend a member",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/network-topology": {
      "get": {
        "description": "Every project the caller can see, with the number of networks, routers and connected resources in each location.",
        "operationId": "organization_topology",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 50,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 4096,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopologySummary"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get the network map summary",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/notification-preferences": {
      "get": {
        "description": "Which e-mail notices the caller receives from this organization.",
        "operationId": "get_preferences",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoticePreferences"
                }
              }
            },
            "description": "The caller's e-mail notices."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get my e-mail notices",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}/notification-preferences/{kind}": {
      "put": {
        "description": "Turns one kind of e-mail notice on or off for the caller.",
        "operationId": "put_preference",
        "parameters": [
          {
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "title": "Kind",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreferenceBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoticePreferences"
                }
              }
            },
            "description": "The caller's e-mail notices after the change."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set an e-mail notice",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}/operations": {
      "get": {
        "description": "The operations the caller can see, newest first, a page at a time; `project` limits them to one project.",
        "operationId": "list_operations",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          },
          {
            "in": "query",
            "name": "project",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Project"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationList"
                }
              }
            },
            "description": "A page of operations."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List operations",
        "tags": [
          "Operations"
        ]
      }
    },
    "/v1/orgs/{org_id}/operations/{operation_id}": {
      "get": {
        "description": "One operation's state and steps. Read it until `state` is `succeeded`, `partially_succeeded`, `failed` or `cancelled`.",
        "operationId": "get_operation",
        "parameters": [
          {
            "in": "path",
            "name": "operation_id",
            "required": true,
            "schema": {
              "title": "Operation Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            },
            "description": "The operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get an operation",
        "tags": [
          "Operations"
        ]
      }
    },
    "/v1/orgs/{org_id}/operations/{operation_id}:cancel": {
      "post": {
        "description": "Stops an operation that has not finished. Steps already done stay done; nothing is rolled back.",
        "operationId": "cancel_operation",
        "parameters": [
          {
            "in": "path",
            "name": "operation_id",
            "required": true,
            "schema": {
              "title": "Operation Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelledOperation"
                }
              }
            },
            "description": "The operation, cancelled."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Cancel an operation",
        "tags": [
          "Operations"
        ]
      }
    },
    "/v1/orgs/{org_id}/ownership:transfer": {
      "post": {
        "description": "Makes another active member an owner and, unless asked to stay an owner, makes the caller an admin or member, in one step. Needs a recent second-factor sign-in.",
        "operationId": "transfer_ownership",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nexus__api__routes__members__TransferBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OwnershipTransferred"
                }
              }
            },
            "description": "Both memberships after the transfer."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Make another member an owner",
        "tags": [
          "Members and invitations"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects": {
      "get": {
        "description": "The projects the caller can see, with their location and state.",
        "operationId": "list_projects",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectList"
                }
              }
            },
            "description": "The projects."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List projects",
        "tags": [
          "Projects"
        ]
      },
      "post": {
        "description": "Creates a project in one location, with private routing and, if asked, a ready network there. A project's location never changes. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_project",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a project",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}": {
      "delete": {
        "description": "Starts the project's deletion: it is suspended and kept for the retention period, during which the deletion can be cancelled. Needs a recent second-factor sign-in. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_project",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a project",
        "tags": [
          "Projects"
        ]
      },
      "get": {
        "description": "One project with its location, its state there and the caller's role.",
        "operationId": "get_project",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectView"
                }
              }
            },
            "description": "The project."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a project",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/certificates": {
      "get": {
        "description": "The project's TLS certificates in every location, with their expiry and the listeners that serve them. Never their keys.",
        "operationId": "list_certificates",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "location",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Location"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificateList"
                }
              }
            },
            "description": "The project's certificates."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List certificates",
        "tags": [
          "Certificates"
        ]
      },
      "post": {
        "description": "Uploads a TLS certificate, its chain and its private key to one location, for HTTPS load balancers. Checked at once (the key must be the certificate's, the certificate valid for at least another day and the chain in order); the key is then sealed and delivered into the location's key manager, and never shown again. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_certificate",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Upload a certificate",
        "tags": [
          "Certificates"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/certificates/{certificate_id}": {
      "delete": {
        "description": "Deletes the certificate and its key from the location's key manager. Refused while a load balancer listener serves it: switch the listener to another certificate first. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_certificate",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "certificate_id",
            "required": true,
            "schema": {
              "title": "Certificate Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a certificate",
        "tags": [
          "Certificates"
        ]
      },
      "get": {
        "description": "One certificate's subject, names, validity, fingerprint and the listeners that serve it. Never its key.",
        "operationId": "get_certificate",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "certificate_id",
            "required": true,
            "schema": {
              "title": "Certificate Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificateView"
                }
              }
            },
            "description": "The certificate."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a certificate",
        "tags": [
          "Certificates"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/clouds.yaml": {
      "get": {
        "description": "A `clouds.yaml` for the OpenStack CLI with an entry per location of the project, or for one location with `placement`. It holds no password or token: the CLI signs in through your browser.",
        "operationId": "get_clouds_yaml",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "placement",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Placement"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/yaml": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The `clouds.yaml` file."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Download clouds.yaml",
        "tags": [
          "Native access"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/console-requests/{console_request_id}:collect": {
      "post": {
        "description": "The encrypted result of a console request, once, to whoever asked and from the same session or API key. Anyone else, a second call, or a call after the collection window gets `404`.",
        "operationId": "collect_console",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "console_request_id",
            "required": true,
            "schema": {
              "title": "Console Request Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsoleCollected"
                }
              }
            },
            "description": "The encrypted console URL or log, once."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Collect a console URL or console log",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/deletion-report": {
      "get": {
        "description": "What deleting the project would remove, counted per location and resource type, with how long it is kept before anything is destroyed. Confirm these counts when you delete it.",
        "operationId": "get_report",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletionReport"
                }
              }
            },
            "description": "The report."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a project's deletion report",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/floating-ips": {
      "post": {
        "description": "Reserves a public IPv4 address in one location, optionally attached to an instance at once. It stays allocated, and counted in usage, until released. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_address",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddressBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Allocate a public IP",
        "tags": [
          "Public IPs"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/floating-ips/{address_id}": {
      "delete": {
        "description": "Returns the address to the location. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "release_address",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "address_id",
            "required": true,
            "schema": {
              "title": "Address Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Release a public IP",
        "tags": [
          "Public IPs"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/floating-ips/{address_id}:associate": {
      "post": {
        "description": "Points the address at an instance or load balancer in its location. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "associate_address",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "address_id",
            "required": true,
            "schema": {
              "title": "Address Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssociateBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Attach a public IP",
        "tags": [
          "Public IPs"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/floating-ips/{address_id}:disassociate": {
      "post": {
        "description": "Detaches the address; it stays allocated to the project. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "disassociate_address",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "address_id",
            "required": true,
            "schema": {
              "title": "Address Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Detach a public IP",
        "tags": [
          "Public IPs"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/floating-ips/{resource_id}/tags": {
      "put": {
        "description": "Replaces the public IP's tags with the whole set given and writes them to it in its location with the `nx.` prefix, keeping every tag set there without the prefix. Send the `tags_version` you read in `If-Match`: a set changed since is `412`. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_floating_ip_tags",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set a public IP's tags",
        "tags": [
          "Public IPs"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/grants": {
      "get": {
        "description": "Who has which role on the project, a page at a time.",
        "operationId": "list_grants",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GrantList"
                }
              }
            },
            "description": "A page of the project's grants."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List a project's roles",
        "tags": [
          "Project access"
        ]
      },
      "post": {
        "description": "Gives a member or service account a role on the project, which also gives them access in each of its locations. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "create_grant",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GrantCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Give a project role",
        "tags": [
          "Project access"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/grants/{grant_id}": {
      "delete": {
        "description": "Removes the grant and revokes the access it gave in each location, which can take up to 15 minutes to reach every location. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "revoke",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "grant_id",
            "required": true,
            "schema": {
              "title": "Grant Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "security",
            "required": false,
            "schema": {
              "default": false,
              "title": "Security",
              "type": "boolean"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Take a project role away",
        "tags": [
          "Project access"
        ]
      },
      "get": {
        "description": "One person's or service account's role on the project, with its version for `If-Match`.",
        "operationId": "get_grant",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "grant_id",
            "required": true,
            "schema": {
              "title": "Grant Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Grant"
                }
              }
            },
            "description": "The grant."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a project role",
        "tags": [
          "Project access"
        ]
      },
      "patch": {
        "description": "Changes the role of an existing project grant. Send its current version in `If-Match`.",
        "operationId": "change_grant",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "grant_id",
            "required": true,
            "schema": {
              "title": "Grant Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GrantChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Grant"
                }
              }
            },
            "description": "The grant, when the change needs nothing done in a location."
          },
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a project role",
        "tags": [
          "Project access"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/images": {
      "post": {
        "description": "Makes a private image of the project in one location, which the location's image service downloads from an https address. Accepted at once: follow the returned operation; the image is `importing` until the download ends, and an import that fails leaves nothing behind. Delete the image to stop an import in progress.",
        "operationId": "import_image",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageImportBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Import an image from an address",
        "tags": [
          "Images"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/images/{image_id}": {
      "delete": {
        "description": "Deletes one of the project's own images. Instances started from it keep running. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_image",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "image_id",
            "required": true,
            "schema": {
              "title": "Image Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete an image",
        "tags": [
          "Images"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/images/{resource_id}": {
      "patch": {
        "description": "Changes the name of one of the project's own images (an image has no description; sending one is refused). Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_image",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rename an image",
        "tags": [
          "Images"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/instance-groups": {
      "get": {
        "description": "Every instance group of the project (at most 20), with its counts; `member` keeps the group an instance belongs to.",
        "operationId": "list_instance_groups",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "member",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Member"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupList"
                }
              }
            },
            "description": "The project's instance groups, newest first."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List instance groups",
        "tags": [
          "Instance groups"
        ]
      },
      "post": {
        "description": "Keeps `desired` instances of a launch template running in its location: failed ones are replaced, and an optional load balancer pool follows the group. Its commands act as you: you need the actions they take.",
        "operationId": "create_instance_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nexus__api__routes__instance_groups__GroupCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupView"
                }
              }
            },
            "description": "The group; its instances are created from now on."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create an instance group",
        "tags": [
          "Instance groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/instance-groups/{instance_group_id}": {
      "delete": {
        "description": "`instances=keep` (the default): its instances stay as ordinary instances and the group is gone at once. `instances=delete`: each instance leaves the pool and is deleted, then the group goes. Send its current version in `If-Match`.",
        "operationId": "delete_instance_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "instance_group_id",
            "required": true,
            "schema": {
              "title": "Instance Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "instances",
            "required": false,
            "schema": {
              "default": "keep",
              "enum": [
                "keep",
                "delete"
              ],
              "title": "Instances",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupDeleted"
                }
              }
            },
            "description": "The group is deleted, or being deleted."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete an instance group",
        "tags": [
          "Instance groups"
        ]
      },
      "get": {
        "description": "The group, its counts, its last reconcile and paused reason, and its members with their instances' states and operations.",
        "operationId": "get_instance_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "instance_group_id",
            "required": true,
            "schema": {
              "title": "Instance Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupView"
                }
              }
            },
            "description": "The group and its members."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get an instance group",
        "tags": [
          "Instance groups"
        ]
      },
      "patch": {
        "description": "Its size (`desired`, `min`, `max`), surge, name, template version or pool; a new version or pool applies to instances created from now on. Its commands then act as you. Send its current version in `If-Match`.",
        "operationId": "change_instance_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "instance_group_id",
            "required": true,
            "schema": {
              "title": "Instance Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupChangeBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupView"
                }
              }
            },
            "description": "The group as changed."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change an instance group",
        "tags": [
          "Instance groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/instance-groups/{instance_group_id}:pause": {
      "post": {
        "description": "It creates, replaces and deletes nothing until it is resumed; its instances keep running. Send its current version in `If-Match`.",
        "operationId": "pause_instance_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "instance_group_id",
            "required": true,
            "schema": {
              "title": "Instance Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupView"
                }
              }
            },
            "description": "The group, paused."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Pause an instance group",
        "tags": [
          "Instance groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/instance-groups/{instance_group_id}:resume": {
      "post": {
        "description": "It acts again, as you, with its failure counts cleared, whatever paused it. Send its current version in `If-Match`.",
        "operationId": "resume_instance_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "instance_group_id",
            "required": true,
            "schema": {
              "title": "Instance Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupView"
                }
              }
            },
            "description": "The group, active again."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Resume an instance group",
        "tags": [
          "Instance groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/instance-launches": {
      "get": {
        "description": "The launches from one launch template (`template`), or the launch that made one instance (`server`): exactly one of the two, newest first, at most 20. Each instance says whether it is still there.",
        "operationId": "find_launches",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "description": "A template (`ltp_`).",
            "in": "query",
            "name": "template",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "A template (`ltp_`).",
              "title": "Template"
            }
          },
          {
            "description": "An instance (`srv_`).",
            "in": "query",
            "name": "server",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "An instance (`srv_`).",
              "title": "Server"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaunchList"
                }
              }
            },
            "description": "The launches, newest first."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Find launches",
        "tags": [
          "Launch templates"
        ]
      },
      "post": {
        "description": "Creates 1 to 10 instances from a launch template or a create body, admitted all or nothing; each is its own operation. Instances are named `<name>-1`, `<name>-2`, ... (the next free numbers in the project). Follow the launch for each instance's state.",
        "operationId": "post_launch",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LaunchBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaunchAccepted"
                }
              }
            },
            "description": "Accepted: the launch and each instance's operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Launch instances",
        "tags": [
          "Launch templates"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/instance-launches/{launch_id}": {
      "get": {
        "description": "Each instance's server and operation, and the launch's state: `succeeded` when every instance succeeded, `failed` when none did, `partially_succeeded` otherwise.",
        "operationId": "get_launch",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "launch_id",
            "required": true,
            "schema": {
              "title": "Launch Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaunchView"
                }
              }
            },
            "description": "The launch and each instance's operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a launch",
        "tags": [
          "Launch templates"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/inventory": {
      "get": {
        "description": "How many resources of each type the project has in each location, and how fresh that information is.",
        "operationId": "summary",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventorySummary"
                }
              }
            },
            "description": "The counts, and how fresh they are."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a project's inventory summary",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/inventory:refresh": {
      "post": {
        "description": "Asks each location to read the project's resources again instead of waiting for the next regular check. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "refresh_project",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Check a project's resources now",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/launch-templates": {
      "get": {
        "description": "Every launch template of the project (at most 50), each with its current body.",
        "operationId": "list_templates",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateList"
                }
              }
            },
            "description": "The project's launch templates, newest change first."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List launch templates",
        "tags": [
          "Launch templates"
        ]
      },
      "post": {
        "description": "Saves an instance create body under a name unique in the project. References are checked now as far as they can be; a launch checks everything again.",
        "operationId": "create_template",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateView"
                }
              }
            },
            "description": "The template, saved as version 1."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a launch template",
        "tags": [
          "Launch templates"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/launch-templates/{template_id}": {
      "delete": {
        "description": "Deletes it and erases its saved user data. Refused while a launch from it has not yet created its instances. Send its current version in `If-Match`.",
        "operationId": "delete_template",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "template_id",
            "required": true,
            "schema": {
              "title": "Template Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDeleted"
                }
              }
            },
            "description": "The template is deleted."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a launch template",
        "tags": [
          "Launch templates"
        ]
      },
      "get": {
        "description": "The current version's body, or `?version=n`'s. User data is never shown.",
        "operationId": "get_template",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "template_id",
            "required": true,
            "schema": {
              "title": "Template Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "version",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "minimum": 1,
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Version"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateView"
                }
              }
            },
            "description": "The template, with a version's body and its versions."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a launch template",
        "tags": [
          "Launch templates"
        ]
      },
      "patch": {
        "description": "Renames it, changes its description, or saves a new body as the next version (which becomes current). Send its current version in `If-Match`.",
        "operationId": "change_template",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "template_id",
            "required": true,
            "schema": {
              "title": "Template Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateChangeBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateView"
                }
              }
            },
            "description": "The template as changed."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a launch template",
        "tags": [
          "Launch templates"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/load-balancers": {
      "post": {
        "description": "Creates a load balancer on a network in one location, with optional listeners, pools and members. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_load_balancer",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoadBalancerCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a load balancer",
        "tags": [
          "Load balancers"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/load-balancers/{lb_id}": {
      "delete": {
        "description": "Deletes the load balancer with its listeners, pools and health checks; the instances behind it are not touched. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_load_balancer",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a load balancer",
        "tags": [
          "Load balancers"
        ]
      },
      "patch": {
        "description": "Changes the load balancer's name. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "rename_load_balancer",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbRenameBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rename a load balancer",
        "tags": [
          "Load balancers"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/load-balancers/{lb_id}/listeners": {
      "post": {
        "description": "Adds a listener (protocol and port) to the load balancer. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "create_load_balancer_listener",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbListenerCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Add a listener",
        "tags": [
          "Load balancers"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/load-balancers/{lb_id}/listeners/{child_id}": {
      "delete": {
        "description": "Removes a listener from the load balancer. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_load_balancer_listener",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "child_id",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Child Id"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbChildVersionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a listener",
        "tags": [
          "Load balancers"
        ]
      },
      "patch": {
        "description": "Changes a listener's name or the pool it sends to. Send the version you read in `expected`. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_load_balancer_listener",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "child_id",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Child Id"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbListenerUpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a listener",
        "tags": [
          "Load balancers"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/load-balancers/{lb_id}/pools": {
      "post": {
        "description": "Adds a pool of backend members to the load balancer. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "create_load_balancer_pool",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbPoolCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Add a pool",
        "tags": [
          "Load balancers"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/load-balancers/{lb_id}/pools/{child_id}": {
      "delete": {
        "description": "Removes a pool from the load balancer. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_load_balancer_pool",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "child_id",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Child Id"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbChildVersionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a pool",
        "tags": [
          "Load balancers"
        ]
      },
      "patch": {
        "description": "Changes a pool's name or balancing method. Send the version you read in `expected`. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_load_balancer_pool",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "child_id",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Child Id"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbPoolUpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a pool",
        "tags": [
          "Load balancers"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/load-balancers/{lb_id}/pools/{pool_id}/health-monitor": {
      "delete": {
        "description": "Removes the pool's health check. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "clear_health_monitor",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pool_id",
            "required": true,
            "schema": {
              "title": "Pool Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Remove a pool's health check",
        "tags": [
          "Load balancers"
        ]
      },
      "post": {
        "description": "Creates or replaces the pool's health check. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_health_monitor",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pool_id",
            "required": true,
            "schema": {
              "title": "Pool Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbMonitorSetBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set a pool's health check",
        "tags": [
          "Load balancers"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/load-balancers/{lb_id}/pools/{pool_id}/members:replace": {
      "post": {
        "description": "Replaces the pool's whole member list. Send the list's version you read in `expected`; a list that changed since is refused. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "put_lb_members",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lb_id",
            "required": true,
            "schema": {
              "title": "Lb Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pool_id",
            "required": true,
            "schema": {
              "title": "Pool Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LbMembersBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Replace a pool's members",
        "tags": [
          "Load balancers"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/network-topology": {
      "get": {
        "description": "The project's networks, routers, instances and other connected resources in its locations, and how they connect.",
        "operationId": "project_topology",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "location",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Location"
            }
          },
          {
            "in": "query",
            "name": "focus",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Focus"
            }
          },
          {
            "in": "query",
            "name": "layers",
            "required": false,
            "schema": {
              "default": "structure",
              "maxLength": 100,
              "title": "Layers",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 250,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 4096,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopologyView"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a project's network map",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/networks": {
      "post": {
        "description": "Creates a private network with one address range in one location, attached to the project's private routing unless asked otherwise. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_network",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NetworkCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a network",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/networks/{network_id}/connections": {
      "post": {
        "description": "No longer offered: networks attached to the project's private routing already reach each other. Always refused with `connections_retired`.",
        "operationId": "connect_networks",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "network_id",
            "required": true,
            "schema": {
              "title": "Network Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Connect two networks",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/networks/{network_id}/connections/{peer_id}": {
      "delete": {
        "description": "Removes an existing connection between two networks made before private routing. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "disconnect_networks",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "network_id",
            "required": true,
            "schema": {
              "title": "Network Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "peer_id",
            "required": true,
            "schema": {
              "title": "Peer Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Disconnect two networks",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/networks/{network_id}/subnets": {
      "post": {
        "description": "Adds an address range to a network. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_subnet",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "network_id",
            "required": true,
            "schema": {
              "title": "Network Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubnetCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Add an address range",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/networks/{network_id}:set-internet-access": {
      "post": {
        "description": "Attaches the network to the location's Internet gateway, or detaches it; private routing is unchanged. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_internet_access",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "network_id",
            "required": true,
            "schema": {
              "title": "Network Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InternetAccessBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Turn a network's Internet access on or off",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/networks/{network_id}:set-routing": {
      "post": {
        "description": "Attaches the network to the project's private router in its location, so it reaches the project's other routed networks, or detaches it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_network_routing",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "network_id",
            "required": true,
            "schema": {
              "title": "Network Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InternetAccessBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Attach or detach private routing",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/networks/{resource_id}": {
      "delete": {
        "description": "Deletes the network with its range and routing attachment; other networks and private routing stay. Refused while anything still has an address on it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_network",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a network",
        "tags": [
          "Networking"
        ]
      },
      "patch": {
        "description": "Changes the network's name or description. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_network",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rename a network",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/networks/{resource_id}/tags": {
      "put": {
        "description": "Replaces the network's tags with the whole set given and writes them to it in its location with the `nx.` prefix, keeping every tag set there without the prefix. Send the `tags_version` you read in `If-Match`: a set changed since is `412`. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_network_tags",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set a network's tags",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/personal-service-account": {
      "get": {
        "description": "Your own service account on this project, if you have one (else 404).",
        "operationId": "get_personal_service_account",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceAccountDetail"
                }
              }
            },
            "description": "Your personal service account."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get your personal service account",
        "tags": [
          "Projects"
        ]
      },
      "post": {
        "description": "Creates your own service account on this project, with member access here only. Its keys and location credentials last 30 days at most and end with your access to the project. One per person and project.",
        "operationId": "create_personal_service_account",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PersonalBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalServiceAccount"
                }
              }
            },
            "description": "Your account."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create your personal service account",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}": {
      "delete": {
        "description": "Starts removing the project from one location, with the same retention and cancellation as a project's deletion. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_placement",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Remove a location from a project",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}/connection": {
      "get": {
        "description": "The settings the OpenStack CLI and other tools need to sign in to this project in one location: sign-in address, region, identity provider, protocol, client and project ID. Contains no secret.",
        "operationId": "get_connection",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Connection"
                }
              }
            },
            "description": "The connection details."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get connection details",
        "tags": [
          "Native access"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}/console": {
      "get": {
        "description": "A link into the location's own web console for this project, or, with `server`, straight to that instance's page there. `native_access` says whether the caller can sign in to it.",
        "operationId": "get_console",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "server",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Server"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsoleLink"
                }
              }
            },
            "description": "The link."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a console link",
        "tags": [
          "Native access"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}/internet-gateway": {
      "delete": {
        "description": "Removes the location's outbound Internet connection; private routing, routes, networks and instances stay. Refused while a public IP in the location is attached. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_internet_gateway",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Remove the Internet gateway",
        "tags": [
          "Networking"
        ]
      },
      "post": {
        "description": "Gives the project's private routing in one location an outbound Internet connection (NAT). Accepted at once: follow the returned operation until it finishes.",
        "operationId": "create_internet_gateway",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Add an Internet gateway",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}/quota": {
      "get": {
        "description": "Per resource class: what is set, what the location applied and what is in use, with the version for `If-Match`.",
        "operationId": "get_placement_quota",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlacementQuota"
                }
              }
            },
            "description": "The quota in the location."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a project's quota in one location",
        "tags": [
          "Quota"
        ]
      },
      "patch": {
        "description": "Sets quota values for the project in one location, out of the organization's budget there. Send the current version in `If-Match`. Answers 202 with an operation while the location applies it.",
        "operationId": "patch_placement_quota",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotaPatch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaChanged"
                }
              }
            },
            "description": "Changed, with nothing to apply in the location."
          },
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaChangeAccepted"
                }
              }
            },
            "description": "Changed; the location applies it as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set a project's quota in one location",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}:bootstrap-network": {
      "post": {
        "description": "Creates a network with one address range in one location, attached to the project's private routing, in one request. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_bootstrap",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BootstrapBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a ready network",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}:cancel-deletion": {
      "post": {
        "description": "Stops removing the project from this location, while nothing has been destroyed there yet. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "cancel_placement",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Cancel a location's removal",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}:confirm-deletion": {
      "post": {
        "description": "A removal stopped because resources were still there, or because the report changed, continues once you confirm the counts it now shows. Needs a recent second-factor sign-in.",
        "operationId": "confirm_placement",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmedRemoval"
                }
              }
            },
            "description": "The removal continues."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Confirm a blocked removal",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/placements/{placement_id}:resume": {
      "post": {
        "description": "Makes the project active again in one location. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "resume_placement",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "placement_id",
            "required": true,
            "schema": {
              "title": "Placement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Resume a project in one location",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/quota": {
      "get": {
        "description": "The project's quota in each of its locations: per resource class, what is set, what each location applied and what is in use.",
        "operationId": "get_project_quota",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectQuota"
                }
              }
            },
            "description": "The quota in each location."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a project's quota",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/role-actions": {
      "get": {
        "description": "Every action a project role may hold, in words, and whether you hold it here.",
        "operationId": "list_project_role_actions",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleActionList"
                }
              }
            },
            "description": "What this project's roles may hold."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List what a project's roles may hold",
        "tags": [
          "Roles"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/roles": {
      "get": {
        "description": "The built-in project roles, the organization's project roles, and this project's own roles: every role that can be given on this project.",
        "operationId": "list_project_roles",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleList"
                }
              }
            },
            "description": "The roles that can be given on this project."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List a project's roles",
        "tags": [
          "Roles"
        ]
      },
      "post": {
        "description": "Makes a role for this project only, from actions you hold on it.",
        "operationId": "create_project_role",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectRoleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            },
            "description": "The new role."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a project role",
        "tags": [
          "Roles"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/roles/{project_role_id}": {
      "delete": {
        "description": "Deletes one of this project's roles nobody holds. Send its version in `If-Match`.",
        "operationId": "delete_project_role",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_role_id",
            "required": true,
            "schema": {
              "title": "Project Role Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDeleted"
                }
              }
            },
            "description": "The role is deleted."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a project's role",
        "tags": [
          "Roles"
        ]
      },
      "get": {
        "description": "One of this project's own roles.",
        "operationId": "get_project_role",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_role_id",
            "required": true,
            "schema": {
              "title": "Project Role Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            },
            "description": "The role."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Read a project's role",
        "tags": [
          "Roles"
        ]
      },
      "patch": {
        "description": "Renames one of this project's roles or changes its actions, for everyone who holds it. Send its current version in `If-Match`.",
        "operationId": "change_project_role",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_role_id",
            "required": true,
            "schema": {
              "title": "Project Role Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleChange"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            },
            "description": "The role, when nothing needs doing in a location."
          },
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a project's role",
        "tags": [
          "Roles"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/routers": {
      "post": {
        "description": "Creates a router in one location. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_router",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouterCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a router",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/routers/{resource_id}": {
      "delete": {
        "description": "Deletes a router. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_router",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "remove_interfaces",
            "required": false,
            "schema": {
              "default": false,
              "title": "Remove Interfaces",
              "type": "boolean"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a router",
        "tags": [
          "Networking"
        ]
      },
      "patch": {
        "description": "Changes the router's name or description. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_router",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rename a router",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/routers/{router_id}:add-interface": {
      "post": {
        "description": "Connects an address range to the router. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "router_add_interface",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "router_id",
            "required": true,
            "schema": {
              "title": "Router Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouterInterfaceBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Attach a range to a router",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/routers/{router_id}:remove-interface": {
      "post": {
        "description": "Disconnects an address range from the router. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "router_remove_interface",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "router_id",
            "required": true,
            "schema": {
              "title": "Router Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouterInterfaceBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Detach a range from a router",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/routers/{router_id}:set-gateway": {
      "post": {
        "description": "Connects the router to the location's public network, or disconnects it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "router_set_gateway",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "router_id",
            "required": true,
            "schema": {
              "title": "Router Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouterGatewayBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set a router's public gateway",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/routers/{router_id}:set-routes": {
      "post": {
        "description": "Replaces the router's whole list of static routes; an empty list clears it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "router_set_routes",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "router_id",
            "required": true,
            "schema": {
              "title": "Router Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouterRoutesBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set a router's routes",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/schedules": {
      "get": {
        "description": "Every backup and power schedule of the project (at most 20); `target` keeps those acting on one volume or instance, `kind` one kind.",
        "operationId": "list_schedules",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "target",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Target"
            }
          },
          {
            "in": "query",
            "name": "kind",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "backup",
                    "power",
                    "resize"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Kind"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleList"
                }
              }
            },
            "description": "The project's schedules, newest first."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List schedules",
        "tags": [
          "Schedules"
        ]
      },
      "post": {
        "description": "A backup schedule snapshots volumes (or every volume of instances) hourly, daily or weekly and keeps the newest `keep` it made of each; a power schedule stops and starts instances on a weekly timetable. Its runs act as you: you need the actions they take.",
        "operationId": "create_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleView"
                }
              }
            },
            "description": "The schedule, with its next run."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a schedule",
        "tags": [
          "Schedules"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/schedules/{schedule_id}": {
      "delete": {
        "description": "Nothing runs any more. The snapshots it made stay yours. Send its current version in `If-Match`.",
        "operationId": "delete_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleDeleted"
                }
              }
            },
            "description": "The schedule is deleted."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a schedule",
        "tags": [
          "Schedules"
        ]
      },
      "get": {
        "description": "The schedule, its next run and its 20 latest runs, each with its operations.",
        "operationId": "get_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleView"
                }
              }
            },
            "description": "The schedule and its latest runs."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a schedule",
        "tags": [
          "Schedules"
        ]
      },
      "patch": {
        "description": "Renames it or changes its timetable, time zone or `keep`. Its runs then act as you. Send its current version in `If-Match`.",
        "operationId": "change_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleChangeBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleView"
                }
              }
            },
            "description": "The schedule as changed."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a schedule",
        "tags": [
          "Schedules"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/schedules/{schedule_id}:pause": {
      "post": {
        "description": "Nothing runs until it is resumed. Send its current version in `If-Match`.",
        "operationId": "pause_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleView"
                }
              }
            },
            "description": "The schedule, paused."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Pause a schedule",
        "tags": [
          "Schedules"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/schedules/{schedule_id}:resume": {
      "post": {
        "description": "It runs again from its next time after now (never the ones missed while paused), and its runs then act as you. Send its current version in `If-Match`.",
        "operationId": "resume_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleView"
                }
              }
            },
            "description": "The schedule, active again."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Resume a schedule",
        "tags": [
          "Schedules"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/security-groups": {
      "post": {
        "description": "Creates a security group, with optional rules, in one location. Its name must be unused by the organization's other security groups in every project and location, ignoring case and surrounding spaces (`409 security_group_name_taken`). Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nexus__api__routes__workloads__GroupCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a security group",
        "tags": [
          "Security groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/security-groups/{group_id}": {
      "delete": {
        "description": "Deletes the group. Refused while an instance or load balancer still uses it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "group_id",
            "required": true,
            "schema": {
              "title": "Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a security group",
        "tags": [
          "Security groups"
        ]
      },
      "patch": {
        "description": "Changes the group's name or description. A new name must be unused by the organization's other security groups, as for a create (`409 security_group_name_taken`). Accepted at once: follow the returned operation until it finishes.",
        "operationId": "rename_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "group_id",
            "required": true,
            "schema": {
              "title": "Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupRenameBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rename a security group",
        "tags": [
          "Security groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/security-groups/{group_id}:add-rule": {
      "post": {
        "description": "Adds one rule to the group. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "add_rule",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "group_id",
            "required": true,
            "schema": {
              "title": "Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Add a security group rule",
        "tags": [
          "Security groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/security-groups/{group_id}:remove-rule": {
      "post": {
        "description": "Removes one rule from the group. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "remove_rule",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "group_id",
            "required": true,
            "schema": {
              "title": "Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Remove a security group rule",
        "tags": [
          "Security groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/server-groups": {
      "post": {
        "description": "Creates a server group in one location. An instance joins a group only when it is created (`server_group_id`). Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_server_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServerGroupCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a server group",
        "tags": [
          "Server groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/server-groups/{server_group_id}": {
      "delete": {
        "description": "Deletes the group. Refused while it has instances: an instance cannot leave its group, so delete them first. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_server_group",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_group_id",
            "required": true,
            "schema": {
              "title": "Server Group Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a server group",
        "tags": [
          "Server groups"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers": {
      "post": {
        "description": "Creates an instance in one location from a size, an image and a network. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServerCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{resource_id}": {
      "patch": {
        "description": "Changes the instance's name or description. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rename an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{resource_id}/tags": {
      "put": {
        "description": "Replaces the instance's tags with the whole set given and writes them to it in its location with the `nx.` prefix, keeping every tag set there without the prefix. Send the `tags_version` you read in `If-Match`: a set changed since is `412`. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_server_tags",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set an instance's tags",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}": {
      "delete": {
        "description": "Deletes the instance and its system disk. Attached volumes, public IPs and security groups stay, except a volume the location is set to delete with it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}/forwarding": {
      "get": {
        "description": "Each network interface of the instance: the private ranges NubeStack Cloud set it to forward for, address pairs set with the cloud's own tools, and whether the location offers forwarding. From the last inventory read.",
        "operationId": "get_forwarding",
        "parameters": [
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Forwarding"
                }
              }
            },
            "description": "What the instance's interfaces forward for."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get what an instance forwards for",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:attach-interface": {
      "post": {
        "description": "Adds a network interface on another network of the same location. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "attach_interface_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InterfaceBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Attach an instance to a network",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:attach-volume": {
      "post": {
        "description": "Attaches a volume of the same location to the instance. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "attach_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Attach a volume",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:create-image": {
      "post": {
        "description": "Makes a private image of the instance's disk, to start new instances from. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "create_image",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Save an instance as an image",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:detach-interface": {
      "post": {
        "description": "Removes the instance's interface on a network. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "detach_interface_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InterfaceBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Detach an instance from a network",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:detach-volume": {
      "post": {
        "description": "Detaches a volume from the instance. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "detach_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Detach a volume",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:lock": {
      "post": {
        "description": "Stops anyone changing or deleting the instance until it is unlocked. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "lock_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Lock an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:pause": {
      "post": {
        "description": "Freezes the instance in memory; it keeps its resources. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "pause_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Pause an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:reboot": {
      "post": {
        "description": "Restarts the instance, gracefully or, with `hard`, at once. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "reboot_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RebootBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Restart an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:rebuild": {
      "post": {
        "description": "Reinstalls the instance from an image; data on its root disk is lost. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "rebuild_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RebuildBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rebuild an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:request-console": {
      "post": {
        "description": "Asks the location for a console URL (noVNC), encrypted to the public key you send. Accepted at once: follow the returned operation, then collect the result once from the console request. The URL opens the console without any other credential until it expires; NubeStack Cloud keeps no copy.",
        "operationId": "request_console",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsoleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Open an instance's console",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:request-console-output": {
      "post": {
        "description": "Asks the location for the last lines of the instance's console log (its boot output), encrypted to the public key you send. Accepted at once: follow the returned operation, then collect the result once. NubeStack Cloud does not redact the log and keeps no copy: it can contain passwords and keys the instance printed.",
        "operationId": "request_console_output",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsoleOutputBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Read an instance's console log",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:rescue": {
      "post": {
        "description": "Starts the instance from a rescue image with its own disk attached, to repair it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "rescue_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rescue an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:resize": {
      "post": {
        "description": "Moves the instance to another size from the location's catalog. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "resize_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResizeBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Resize an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:resume": {
      "post": {
        "description": "Starts a suspended instance again. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "resume_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Resume an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:set-forwarding": {
      "post": {
        "description": "Replaces the private address ranges the instance's interface on one network may send from and receive for, so it can route, NAT or tunnel traffic for them; an empty list stops it. Address pairs set with the cloud's own tools stay. Offered only in locations whose cloud filters forwarded traffic as NubeStack Cloud proved it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_server_forwarding",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForwardingBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set what an instance forwards for",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:set-metadata": {
      "post": {
        "description": "Replaces the instance's metadata key-value pairs. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_server_metadata",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set an instance's metadata",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:set-security-groups": {
      "post": {
        "description": "Replaces the security groups on the instance's network interfaces. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_server_groups",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServerGroupsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set an instance's security groups",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:shelve": {
      "post": {
        "description": "Stops the instance and frees its compute resources; its disk is kept. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "shelve_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Shelve an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:start": {
      "post": {
        "description": "Starts a stopped instance. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "start_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Start an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:stop": {
      "post": {
        "description": "Shuts the instance down. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "stop_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Stop an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:suspend": {
      "post": {
        "description": "Saves the instance's memory to disk and stops it. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "suspend_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Suspend an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:unlock": {
      "post": {
        "description": "Allows changes to a locked instance again. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "unlock_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Unlock an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:unpause": {
      "post": {
        "description": "Lets a paused instance run again. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "unpause_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Unpause an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:unrescue": {
      "post": {
        "description": "Starts the instance from its own disk again. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "unrescue_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "End a rescue",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/servers/{server_id}:unshelve": {
      "post": {
        "description": "Starts a shelved instance again. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "unshelve_server",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "server_id",
            "required": true,
            "schema": {
              "title": "Server Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Unshelve an instance",
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/subnets/{resource_id}": {
      "delete": {
        "description": "Deletes an address range that nothing uses. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_subnet",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete an address range",
        "tags": [
          "Networking"
        ]
      },
      "patch": {
        "description": "Changes the range's name, gateway, DNS servers or address handout; the range itself cannot change. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_subnet",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubnetPatchBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change an address range",
        "tags": [
          "Networking"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/usage": {
      "get": {
        "description": "The project's provisional usage quantities for a time window. Never prices.",
        "operationId": "project_usage",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "group_by",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^(project|location|resource_type)$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Group By"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Usage"
                }
              }
            },
            "description": "The project's usage in the window."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a project's usage",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volume-snapshots/{resource_id}": {
      "patch": {
        "description": "Changes the snapshot's name or description. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_volume_snapshot",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rename a snapshot",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volume-snapshots/{snapshot_id}": {
      "delete": {
        "description": "Deletes the snapshot; volumes made from it stay. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_snapshot",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "snapshot_id",
            "required": true,
            "schema": {
              "title": "Snapshot Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a snapshot",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes": {
      "post": {
        "description": "Creates a volume in one location, empty or from an image or snapshot. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "post_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VolumeCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a volume",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes/{resource_id}": {
      "patch": {
        "description": "Changes the volume's name or description. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "update_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rename a volume",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes/{resource_id}/tags": {
      "put": {
        "description": "Replaces the volume's tags with the whole set given and writes them to it in its location with the `nx.` prefix, keeping every tag set there without the prefix. Send the `tags_version` you read in `If-Match`: a set changed since is `412`. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_volume_tags",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "resource_id",
            "required": true,
            "schema": {
              "title": "Resource Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set a volume's tags",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes/{volume_id}": {
      "delete": {
        "description": "Deletes the volume. Refused while it is attached or has snapshots. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "delete_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume_id",
            "required": true,
            "schema": {
              "title": "Volume Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a volume",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes/{volume_id}:extend": {
      "post": {
        "description": "Makes the volume larger. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "extend_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume_id",
            "required": true,
            "schema": {
              "title": "Volume Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtendBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Extend a volume",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes/{volume_id}:retype": {
      "post": {
        "description": "Moves the volume to another volume type from the location's catalog. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "retype_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume_id",
            "required": true,
            "schema": {
              "title": "Volume Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RetypeBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a volume's type",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes/{volume_id}:set-bootable": {
      "post": {
        "description": "Whether instances may start from the volume. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "set_volume_bootable",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume_id",
            "required": true,
            "schema": {
              "title": "Volume Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BootableBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Set whether a volume is bootable",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes/{volume_id}:snapshot": {
      "post": {
        "description": "Makes a point-in-time copy of the volume. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "snapshot_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume_id",
            "required": true,
            "schema": {
              "title": "Volume Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnapshotBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Snapshot a volume",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/volumes/{volume_id}:transfer": {
      "post": {
        "description": "Moves the volume to another project of the organization in the same location. Needs the right to delete here and to create there. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "transfer_volume",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume_id",
            "required": true,
            "schema": {
              "title": "Volume Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nexus__api__routes__workloads__TransferBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Move a volume to another project",
        "tags": [
          "Volumes and snapshots"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/{collection}": {
      "get": {
        "description": "Instances, volumes, networks or another resource type of the project across its locations, as last read from each, a page at a time. `sources` says how fresh each location's data is.",
        "operationId": "list_collection",
        "parameters": [
          {
            "in": "path",
            "name": "collection",
            "required": true,
            "schema": {
              "title": "Collection",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "location",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Location"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "in": "query",
            "name": "display_name_prefix",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Display Name Prefix"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "description": "`key:value`, repeatable: only resources with every one of these NubeStack Cloud tags.",
            "in": "query",
            "name": "tag",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "maxItems": 10,
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "description": "`key:value`, repeatable: only resources with every one of these NubeStack Cloud tags.",
              "title": "Tag"
            }
          },
          {
            "description": "Only resources with a NubeStack Cloud tag of this key.",
            "in": "query",
            "name": "tag_key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 32,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only resources with a NubeStack Cloud tag of this key.",
              "title": "Tag Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryPage"
                }
              }
            },
            "description": "A page of the resources, and how fresh each source is."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List a project's resources",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/{collection}/{item_id}": {
      "get": {
        "description": "One resource as last read from its location, with its status, attributes, whether NubeStack Cloud made it, and when it was read.",
        "operationId": "get_item",
        "parameters": [
          {
            "in": "path",
            "name": "collection",
            "required": true,
            "schema": {
              "title": "Collection",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryItem"
                }
              }
            },
            "description": "The resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a resource",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/{collection}/{item_id}/activity": {
      "get": {
        "description": "The newest operations that created, changed or referred to the resource, with the state of each step.",
        "operationId": "get_activity",
        "parameters": [
          {
            "in": "path",
            "name": "collection",
            "required": true,
            "schema": {
              "title": "Collection",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Activity"
                }
              }
            },
            "description": "The newest operations about it."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a resource's activity",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/{collection}/{item_id}/related": {
      "get": {
        "description": "What the resource is attached to or holds, such as the instances using a security group, a volume's instance or a network's subnets.",
        "operationId": "get_related",
        "parameters": [
          {
            "in": "path",
            "name": "collection",
            "required": true,
            "schema": {
              "title": "Collection",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Related"
                }
              }
            },
            "description": "What it is attached to or holds."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a resource's attachments",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/{collection}/{item_id}:dismiss": {
      "post": {
        "description": "Removes a resource whose creation failed before anything was made in the location from the lists. Nothing is sent to the location.",
        "operationId": "dismiss_failed",
        "parameters": [
          {
            "in": "path",
            "name": "collection",
            "required": true,
            "schema": {
              "title": "Collection",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Dismissed"
                }
              }
            },
            "description": "It is gone from the lists."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Dismiss a failed create",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}/{collection}/{item_id}:refresh": {
      "post": {
        "description": "Asks the location to read this resource again. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "refresh_item",
        "parameters": [
          {
            "in": "path",
            "name": "collection",
            "required": true,
            "schema": {
              "title": "Collection",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Check a resource now",
        "tags": [
          "Resources"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}:cancel-deletion": {
      "post": {
        "description": "Stops a deletion that has not started destroying resources and keeps the project suspended until it is resumed. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "cancel_project",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Cancel a project's deletion",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}:delete-now": {
      "post": {
        "description": "Lets a deletion that is waiting out its retention period go ahead now. Needs the project's short name typed as confirmation and a recent second-factor sign-in.",
        "operationId": "delete_now",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteNowBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetentionEnded"
                }
              }
            },
            "description": "The deletion goes ahead now."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "End a deletion's retention early",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/projects/{project_id}:resume": {
      "post": {
        "description": "Makes a suspended project active again, with its access in each location. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "resume_project",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "title": "Project Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Resume a project",
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/orgs/{org_id}/quota-allocations": {
      "get": {
        "description": "For each location: the budget per resource class and every project's quota there, and whether the caller may change them.",
        "operationId": "get_quota_allocations",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaAllocations"
                }
              }
            },
            "description": "Every project's quota in each location."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get every project's quota",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/quota-default": {
      "put": {
        "description": "Sets the preset new projects start from.",
        "operationId": "put_default",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefaultBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultPreset"
                }
              }
            },
            "description": "The default after the change."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Choose the default quota preset",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/quota-presets": {
      "post": {
        "description": "Saves a named set of per-class quota values that new projects can start from.",
        "operationId": "create_preset",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PresetBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Preset"
                }
              }
            },
            "description": "The preset."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a quota preset",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/quota-presets/{name}": {
      "delete": {
        "description": "Deletes one of the organization's own presets.",
        "operationId": "delete_preset",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a quota preset",
        "tags": [
          "Quota"
        ]
      },
      "patch": {
        "description": "Changes a preset's name or values. Projects that already started from it keep their quota.",
        "operationId": "update_preset",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PresetPatch"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Preset"
                }
              }
            },
            "description": "The preset after the change."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a quota preset",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/quota-profiles": {
      "get": {
        "description": "The presets a project's quota can start from, the one new projects get, and the limits each resource class allows.",
        "operationId": "get_quota_profiles",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaProfiles"
                }
              }
            },
            "description": "The presets and the resource classes."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List quota presets",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/quota-requests": {
      "get": {
        "description": "The organization's requests to the provider for a larger budget, and what was decided.",
        "operationId": "list_quota_requests",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BudgetRequestList"
                }
              }
            },
            "description": "The requests."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List budget requests",
        "tags": [
          "Quota"
        ]
      },
      "post": {
        "description": "Asks the provider for more of one or more resource classes in a location, with a reason.",
        "operationId": "create_quota_request",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BudgetRequest"
                }
              }
            },
            "description": "The request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Ask for a larger budget",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/quota-requests/{request_id}:cancel": {
      "post": {
        "description": "Withdraws a request that has not been decided yet.",
        "operationId": "cancel_quota_request",
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "required": true,
            "schema": {
              "title": "Request Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BudgetRequest"
                }
              }
            },
            "description": "The request, cancelled."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Cancel a budget request",
        "tags": [
          "Quota"
        ]
      }
    },
    "/v1/orgs/{org_id}/rate-card": {
      "get": {
        "description": "The prices usage is rated at now, and the next published change, if any.",
        "operationId": "rate_card",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateCard"
                }
              }
            },
            "description": "The rates in force and the next scheduled change."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get the rate card in force",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/role-actions": {
      "get": {
        "description": "Every action a custom organization or project role may hold, in words, and whether you hold it: you can only put actions you hold into a role.",
        "operationId": "list_role_actions",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleActionList"
                }
              }
            },
            "description": "What custom roles may hold."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List what custom roles may hold",
        "tags": [
          "Roles"
        ]
      }
    },
    "/v1/orgs/{org_id}/roles": {
      "get": {
        "description": "The built-in organization and project roles, then the organization's custom roles: organization roles, and project roles usable on every project. A project's own roles are under the project.",
        "operationId": "list_roles",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleList"
                }
              }
            },
            "description": "The built-in roles and the organization's own."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List roles",
        "tags": [
          "Roles"
        ]
      },
      "post": {
        "description": "Makes a role from actions you hold yourself. An organization role is given to members; a project role is given on any of the organization's projects.",
        "operationId": "create_role",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            },
            "description": "The new role."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a custom role",
        "tags": [
          "Roles"
        ]
      }
    },
    "/v1/orgs/{org_id}/roles/{role_id}": {
      "delete": {
        "description": "Deletes a custom role nobody holds: give its holders another role first. Send its current version in `If-Match`.",
        "operationId": "delete_role",
        "parameters": [
          {
            "in": "path",
            "name": "role_id",
            "required": true,
            "schema": {
              "title": "Role Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDeleted"
                }
              }
            },
            "description": "The role is deleted."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a custom role",
        "tags": [
          "Roles"
        ]
      },
      "get": {
        "description": "A built-in role by its name, or one of the organization's own by its ID.",
        "operationId": "get_role",
        "parameters": [
          {
            "in": "path",
            "name": "role_id",
            "required": true,
            "schema": {
              "title": "Role Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            },
            "description": "The role."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Read a role",
        "tags": [
          "Roles"
        ]
      },
      "patch": {
        "description": "Renames a custom role or changes its actions, for everyone who holds it, from their next request. Send its current version in `If-Match`. Taking away the last action that wrote workloads also takes `member` away in each location: that is `202` with the operation.",
        "operationId": "change_role",
        "parameters": [
          {
            "in": "path",
            "name": "role_id",
            "required": true,
            "schema": {
              "title": "Role Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleChange"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            },
            "description": "The role, when nothing needs doing in a location."
          },
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change a custom role",
        "tags": [
          "Roles"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts": {
      "get": {
        "description": "The organization's service accounts.",
        "operationId": "list_service_accounts",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceAccountList"
                }
              }
            },
            "description": "A page of service accounts."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List service accounts",
        "tags": [
          "Service accounts and API keys"
        ]
      },
      "post": {
        "description": "Creates a non-person account for scripts and pipelines, with an organization role. Give it project roles to use projects.",
        "operationId": "create_service_account",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceAccount"
                }
              }
            },
            "description": "The service account."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a service account",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}": {
      "delete": {
        "description": "Deletes the account and revokes its API keys and its access in each location. Answers 202 with an operation when it still has location credentials to delete, else 200.",
        "operationId": "delete_service_account",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceAccountDeleted"
                }
              }
            },
            "description": "Deleted, with nothing left to do."
          },
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete a service account",
        "tags": [
          "Service accounts and API keys"
        ]
      },
      "get": {
        "description": "One service account with its role and status.",
        "operationId": "get_service_account",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceAccountDetail"
                }
              }
            },
            "description": "The service account."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a service account",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}/api-keys": {
      "get": {
        "description": "The service account's keys, with their expiry and last use. Never the key itself.",
        "operationId": "list_api_keys",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyList"
                }
              }
            },
            "description": "The keys."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List API keys",
        "tags": [
          "Service accounts and API keys"
        ]
      },
      "post": {
        "description": "Issues a bearer key for the service account. The key is in this response only.",
        "operationId": "create_api_key",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nexus__api__routes__service_accounts__KeyBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedApiKey"
                }
              }
            },
            "description": "The key, with the key itself."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create an API key",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}/api-keys/{key_id}": {
      "delete": {
        "description": "Stops the key working at once.",
        "operationId": "revoke_api_key",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKey"
                }
              }
            },
            "description": "The key, revoked."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Revoke an API key",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}/api-keys/{key_id}:attest": {
      "post": {
        "description": "Keeps a key whose accountable owner lost the right to manage it, before its `attest_by`; you become its accountable owner. Needs a recent second-factor sign-in.",
        "operationId": "attest_api_key",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attested"
                }
              }
            },
            "description": "Kept: you answer for it now."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Keep an API key",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}/api-keys/{key_id}:rotate": {
      "post": {
        "description": "Issues a replacement key, returned in this response only; the old one keeps working for the overlap you choose, then stops.",
        "operationId": "rotate_api_key",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RotateBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotatedApiKey"
                }
              }
            },
            "description": "The replacement key, with the key itself."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Rotate an API key",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}/native-credentials": {
      "get": {
        "description": "The service account's OpenStack credentials and their state. Never the secret.",
        "operationId": "list_native_credentials",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NativeCredentialList"
                }
              }
            },
            "description": "The credentials."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List location credentials",
        "tags": [
          "Service accounts and API keys"
        ]
      },
      "post": {
        "description": "Creates an OpenStack application credential for the service account in one location, encrypted to the public key you send. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "mint_native_credential",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create a location credential",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}/native-credentials/{credential_id}": {
      "delete": {
        "description": "Deletes the credential in its location. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "revoke_native_credential",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "credential_id",
            "required": true,
            "schema": {
              "title": "Credential Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NativeCredentialRevoked"
                }
              }
            },
            "description": "Revoked, with nothing to delete in the location."
          },
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Revoke a location credential",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}/native-credentials/{credential_id}:attest": {
      "post": {
        "description": "Keeps a credential whose accountable owner lost the right to manage it, before its `attest_by`; you become its accountable owner. Needs a recent second-factor sign-in.",
        "operationId": "attest_native_credential",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "credential_id",
            "required": true,
            "schema": {
              "title": "Credential Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attested"
                }
              }
            },
            "description": "Kept: you answer for it now."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Keep a location credential",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/service-accounts/{service_account_id}/native-credentials/{credential_id}:secret": {
      "post": {
        "description": "The encrypted secret, once, to whoever created the credential and from the same session or API key.",
        "operationId": "retrieve_native_credential_secret",
        "parameters": [
          {
            "in": "path",
            "name": "service_account_id",
            "required": true,
            "schema": {
              "title": "Service Account Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "credential_id",
            "required": true,
            "schema": {
              "title": "Credential Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NativeCredentialSecret"
                }
              }
            },
            "description": "The encrypted secret, once."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Collect a location credential's secret",
        "tags": [
          "Service accounts and API keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/settings": {
      "get": {
        "description": "The organization's settings, such as whether members may create projects and the second-factor rule, with their version for `If-Match`.",
        "operationId": "get_settings",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationSettingsView"
                }
              }
            },
            "description": "The settings."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get the organization's settings",
        "tags": [
          "Organizations"
        ]
      },
      "patch": {
        "description": "Changes the settings sent and leaves the rest. Send the current version in `If-Match`; the security settings are the owners' alone.",
        "operationId": "patch_settings",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "if-match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SettingsBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationSettings"
                }
              }
            },
            "description": "The settings after the change."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Change the organization's settings",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}/ssh-keys": {
      "get": {
        "description": "The SSH keys the caller can use or manage.",
        "operationId": "list_keys",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "project_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Project Id"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SshKeyList"
                }
              }
            },
            "description": "A page of keys."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List SSH keys",
        "tags": [
          "SSH keys"
        ]
      },
      "post": {
        "description": "Adds a public SSH key, personal or shared with a project, to choose when creating instances.",
        "operationId": "post_key",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nexus__api__routes__ssh_keys__KeyBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SshKey"
                }
              }
            },
            "description": "The key."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Add an SSH key",
        "tags": [
          "SSH keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/ssh-keys/{key_id}": {
      "delete": {
        "description": "Removes the key from NubeStack Cloud. Instances that already have it keep it.",
        "operationId": "delete_key",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SshKeyDeleted"
                }
              }
            },
            "description": "The key is deleted."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Delete an SSH key",
        "tags": [
          "SSH keys"
        ]
      }
    },
    "/v1/orgs/{org_id}/statements": {
      "get": {
        "description": "One statement per calendar month (UTC): open while it runs, then closed.",
        "operationId": "list_statements",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatementList"
                }
              }
            },
            "description": "A page of statements, newest month first."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List the organization's statements",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/statements/{statement_id}": {
      "get": {
        "description": "A month's cost by metric, location and rate, with adjustments for corrections of closed months.",
        "operationId": "get_statement",
        "parameters": [
          {
            "in": "path",
            "name": "statement_id",
            "required": true,
            "schema": {
              "title": "Statement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Statement"
                }
              }
            },
            "description": "The statement and its lines."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get a statement",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/statements/{statement_id}/lines/{line_id}/usage": {
      "get": {
        "description": "The hourly usage observations a line counts; for an adjustment, the corrections and the values they replace.",
        "operationId": "line_usage",
        "parameters": [
          {
            "in": "path",
            "name": "statement_id",
            "required": true,
            "schema": {
              "title": "Statement Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "line_id",
            "required": true,
            "schema": {
              "title": "Line Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LineUsage"
                }
              }
            },
            "description": "The usage rows behind the line."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Trace a statement line to its usage",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/usage": {
      "get": {
        "description": "Provisional usage quantities, such as instance hours and storage, for a time window, optionally grouped by project, location or resource type. Never prices.",
        "operationId": "organization_usage",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "group_by",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^(project|location|resource_type)$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Group By"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Usage"
                }
              }
            },
            "description": "The usage in the window."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get the organization's usage",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/usage/exports": {
      "get": {
        "description": "Every export asked for, newest first, with its month, its cutoff and whether it is ready to download.",
        "operationId": "list_usage_exports",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageExportList"
                }
              }
            },
            "description": "A page of exports, newest first."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List the organization's usage exports",
        "tags": [
          "Usage and costs"
        ]
      },
      "post": {
        "description": "Asks for an export of a calendar month's hourly usage, every resource and metric, as it stands now. Accepted at once: follow the returned operation, then download the export from its `href`.",
        "operationId": "request_usage_export",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Accepted"
                }
              }
            },
            "description": "Accepted; the change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Export a month's usage",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/usage/exports/{export_id}": {
      "get": {
        "description": "Once ready, the month's hourly usage as JSON lines: a header, one line per resource, metric and hour, and an end line with the totals. Every download of an export gives the same lines. Provisional until the shadow period ends.",
        "operationId": "download_usage_export",
        "parameters": [
          {
            "in": "path",
            "name": "export_id",
            "required": true,
            "schema": {
              "title": "Export Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The month's hourly usage, one JSON object per line."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Download a usage export",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/usage/gaps": {
      "get": {
        "description": "The hours in a time window whose usage is not known, per project and location, with their width. Usage never counts them as zero.",
        "operationId": "organization_usage_gaps",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageGaps"
                }
              }
            },
            "description": "The gaps in the window."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "List the organization's usage gaps",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}/usage/months": {
      "get": {
        "description": "Provisional usage quantities per calendar month and metric, newest month first, including months older than the 13 months of hourly usage, which keep their totals. `from` and `to` are months (`YYYY-MM`), both included; by default the months of hourly usage up to this one. Never prices.",
        "operationId": "organization_usage_months",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageMonths"
                }
              }
            },
            "description": "A page of monthly usage, newest month first."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Get the organization's usage by month",
        "tags": [
          "Usage and costs"
        ]
      }
    },
    "/v1/orgs/{org_id}:cancel-closure": {
      "post": {
        "description": "Stops a closure that has not started destroying resources. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "cancel_org_closure",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClosureAccepted"
                }
              }
            },
            "description": "Accepted; each project's change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Cancel the organization's closure",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v1/orgs/{org_id}:close": {
      "post": {
        "description": "Starts closing the organization: every project is suspended and deleted after the retention period, unless the closure is cancelled. Owners only, with a recent second-factor sign-in. Accepted at once: follow the returned operation until it finishes.",
        "operationId": "close_org",
        "parameters": [
          {
            "in": "path",
            "name": "org_id",
            "required": true,
            "schema": {
              "title": "Org Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "idempotency-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloseBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClosureAccepted"
                }
              }
            },
            "description": "Accepted; each project's change runs as an operation."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Close the organization",
        "tags": [
          "Organizations"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://api.nubestack.cloud",
      "description": "Placeholder: use the API address NubeStack gives you"
    }
  ],
  "tags": [
    {
      "name": "Invitations",
      "description": "Look up, accept or decline an invitation you were sent."
    },
    {
      "name": "Organizations",
      "description": "Who you are, your organization, its settings, locations and catalog, and closing it."
    },
    {
      "name": "Instances",
      "description": "Create, change, act on and delete instances; consoles and console logs."
    },
    {
      "name": "Launch templates",
      "description": "Saved instance settings, and launching several instances at once."
    },
    {
      "name": "Instance groups",
      "description": "A number of instances from a template, kept running."
    },
    {
      "name": "Server groups",
      "description": "Keep instances on different hosts, or together."
    },
    {
      "name": "Images",
      "description": "The project's own images."
    },
    {
      "name": "Volumes and snapshots",
      "description": "Block storage volumes and their snapshots."
    },
    {
      "name": "Schedules",
      "description": "Backup, power and size schedules."
    },
    {
      "name": "Load balancers",
      "description": "Load balancers, listeners, pools, members and health checks."
    },
    {
      "name": "Certificates",
      "description": "TLS certificates for HTTPS listeners."
    },
    {
      "name": "Security groups",
      "description": "Firewall rules for instances and load balancers."
    },
    {
      "name": "Public IPs",
      "description": "Addresses reachable from the Internet."
    },
    {
      "name": "Networking",
      "description": "Networks, address ranges, routing, Internet gateways and the network topology."
    },
    {
      "name": "SSH keys",
      "description": "Public keys copied into new instances."
    },
    {
      "name": "Service accounts and API keys",
      "description": "Identities for automation, their API keys and cloud credentials."
    },
    {
      "name": "Roles",
      "description": "Built-in and custom roles, and the actions a role may hold."
    },
    {
      "name": "Members and invitations",
      "description": "The organization's members, their roles, and invitations."
    },
    {
      "name": "Project access",
      "description": "Who holds which role on a project."
    },
    {
      "name": "Quota",
      "description": "Budgets, project quota, presets and requests for more."
    },
    {
      "name": "Usage and costs",
      "description": "Measured usage, statements, the rate card and the cost explorer. Provisional."
    },
    {
      "name": "Audit log",
      "description": "Every change, refusal and security event in the organization."
    },
    {
      "name": "Operations",
      "description": "Follow and cancel the work a change started."
    },
    {
      "name": "Native access",
      "description": "Connection details, clouds.yaml and console links for each location."
    },
    {
      "name": "Projects",
      "description": "Projects, their locations, and deleting or resuming them."
    },
    {
      "name": "Resources",
      "description": "Lists, reads, attachments and activity of any resource type."
    }
  ]
}
