{
  "openapi": "3.0.1",
  "info": {
    "title": "Osie Admin API",
    "description": "This is the Admin API that ships with your Osie installation. It exposes endpoints useful to manage Osie from the Admin point of view. \n\nFor API support and inquiries please reach out to api@osie.io",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "http://localhost:8080",
      "description": "Osie API"
    }
  ],
  "tags": [
    {
      "name": "Resource Metrics",
      "description": "Resource metrics, queried with PromQL through a Prometheus-compatible API: queries, series discovery and metric metadata"
    }
  ],
  "paths": {
    "/admin_api/v1/metrics/api/v1/series": {
      "get": {
        "tags": [
          "Resource Metrics"
        ],
        "description": "The label sets matching the `match[]` selectors inside [start, end] (default the last hour).\n\nAlso accepts `POST`, with the same parameters in an `application/x-www-form-urlencoded` body, for requests too long for a URL.",
        "operationId": "List Metric Series",
        "parameters": [
          {
            "name": "match[]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MetricsApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/metrics/api/v1/query_range": {
      "get": {
        "tags": [
          "Resource Metrics"
        ],
        "description": "Evaluates a PromQL expression at every `step` from `start` to `end`, as `GET /api/v1/query_range` does: `start`/`end` in RFC 3339 or unix seconds, `step` in seconds or a duration (`5m`, `1h`, `1d`). Answers come from the hourly and daily rollups, never from raw samples. A window of whole hours (or days) whose evaluation times fall on the hour (or day) is exact: `increase(x[1h])` at hourly steps is the stored hour, `increase(x[1d])` at daily steps the stored day. Any other window or step spreads each hour it cuts evenly over that hour, which is an estimate. `rate` is the increase over the range; `avg_over_time` is time-weighted. At most 11000 points per series.\n\nAlso accepts `POST`, with the same parameters in an `application/x-www-form-urlencoded` body, for requests too long for a URL.",
        "operationId": "Query Metrics Over Time",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "step",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MetricsApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/metrics/api/v1/query": {
      "get": {
        "tags": [
          "Resource Metrics"
        ],
        "description": "Evaluates a PromQL expression at one instant (`time`, RFC 3339 or unix seconds, default now), as `GET /api/v1/query` on a Prometheus server does (this API is Prometheus-compatible). Supported PromQL: selectors with `= != =~ !~` and `offset`; `rate increase delta resets avg_over_time sum_over_time count_over_time min_over_time max_over_time last_over_time present_over_time`; `abs ceil floor round sqrt exp ln log2 log10 clamp clamp_min clamp_max scalar vector time sort sort_desc absent label_replace label_join`; `sum avg min max count stddev stdvar group topk bottomk` with `by`/`without`; arithmetic, comparison (`bool`) and `and or unless` with `on`/`ignoring`, `group_left`/`group_right`. Regular expressions are RE2, as in Prometheus. Scope with `{project_id=\"…\"}`, `{organization_id=\"…\"}` or `{resource_id=\"…\"}`, or a list of ids as `{resource_id=~\"id1|id2|id3\"}`; a selection over the series limit (1000) is refused with a hint. To cover more, page the resource ids from `/usage` and select each page by `resource_id=~`.\n\nAlso accepts `POST`, with the same parameters in an `application/x-www-form-urlencoded` body, for requests too long for a URL.",
        "operationId": "Query Metrics",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "time",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MetricsApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/metrics/api/v1/labels": {
      "get": {
        "tags": [
          "Resource Metrics"
        ],
        "description": "The label names a query may use; with `match[]`, those present on the matching series.\n\nAlso accepts `POST`, with the same parameters in an `application/x-www-form-urlencoded` body, for requests too long for a URL.",
        "operationId": "List Metric Label Names",
        "parameters": [
          {
            "name": "match[]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MetricsApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints/{id}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "description": "Retrieves a single webhook endpoint. The signing secret is never included.",
        "operationId": "Get Webhook Endpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Webhooks"
        ],
        "description": "Updates the url, subscriptions, headers or metadata. Omitted fields are unchanged.",
        "operationId": "Update Webhook Endpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "description": "Removes the endpoint. Queued deliveries to it are abandoned.",
        "operationId": "Delete Webhook Endpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/admin_api/v1/users/{id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "operationId": "Get User",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseUser"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Users"
        ],
        "description": "Updates a user's properties. A property left out of the request keeps its current value.",
        "operationId": "Update User",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseUser"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "operationId": "Delete User",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/admin_api/v1/realms/{realm}": {
      "get": {
        "tags": [
          "Realms"
        ],
        "description": "Retrieves a single realm by id or slug, including its identity providers and clients.",
        "operationId": "Get Realm",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealm"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Realms"
        ],
        "description": "Partial update, all the way down: an omitted field is left alone, whether it is a property of the realm or a field inside one of the settings blocks.",
        "operationId": "Update Realm",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RealmUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealm"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Realms"
        ],
        "description": "Deletes a realm. Refused for the default realm, and while the realm still holds users, organizations or OpenStack domain mappings.",
        "operationId": "Delete Realm",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/admin_api/v1/realms/{realm}/identity_providers/{provider_id}": {
      "get": {
        "tags": [
          "Realms"
        ],
        "description": "Retrieves a single identity provider on the realm.",
        "operationId": "Get Realm Identity Provider",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealmIdentityProvider"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Realms"
        ],
        "description": "Partial update: an omitted field keeps its stored value, down to the entries of the `oidc` block. `type` cannot change — delete and recreate instead.",
        "operationId": "Update Realm Identity Provider",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RealmIdentityProviderUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealmIdentityProvider"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Realms"
        ],
        "description": "Removes an identity provider from the realm.",
        "operationId": "Delete Realm Identity Provider",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/admin_api/v1/realms/{realm}/clients/{client_id}": {
      "get": {
        "tags": [
          "Realms"
        ],
        "description": "Retrieves a single OAuth2 client, including its secret when it has one.",
        "operationId": "Get Realm Client",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client_id",
            "in": "path",
            "description": "The client's record id, not its `client_id`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealmClient"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Realms"
        ],
        "description": "Partial update: an omitted field keeps its stored value, down to the entries of the `oidc` block. `client_id` cannot change — relying parties authenticate by it.",
        "operationId": "Update Realm Client",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client_id",
            "in": "path",
            "description": "The client's record id, not its `client_id`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RealmClientUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealmClient"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Realms"
        ],
        "description": "Removes an OAuth2 client from the realm. Deleting a first-party client takes this realm's dashboard or admin login offline until it is restored.",
        "operationId": "Delete Realm Client",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client_id",
            "in": "path",
            "description": "The client's record id, not its `client_id`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/admin_api/v1/projects/{id}": {
      "get": {
        "tags": [
          "Projects"
        ],
        "operationId": "Get Project",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseProject"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Projects"
        ],
        "operationId": "Update Project",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseProject"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Projects"
        ],
        "description": "Schedules the project for deletion. OSIE tears down what it owns on every cloud the project lives on, then removes the project; the cloud projects themselves are handed over, not deleted. By default the deletion runs after the grace period and is rejected with 400 while the project still holds cloud resources; `cascade=true` removes those resources as part of the deletion, and `now=true` starts the deletion immediately (it always cascades). Returns the project with its new status: SCHEDULED_FOR_DELETION or DELETE_IN_PROGRESS.",
        "operationId": "Delete Project",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cascade",
            "in": "query",
            "description": "Also remove the cloud resources the project still holds",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "now",
            "in": "query",
            "description": "Start the deletion now instead of after the grace period",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseProject"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/price_plans/{id}": {
      "get": {
        "tags": [
          "Price Plans"
        ],
        "description": "Retrieves a single price plan by its ID.",
        "operationId": "Get Price Plan",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponsePricePlan"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Price Plans"
        ],
        "description": "Updates an existing price plan's name, enabled state, access mode and service providers.",
        "operationId": "Update Price Plan",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PricePlanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponsePricePlan"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Price Plans"
        ],
        "description": "Deletes a price plan. Rejected with 400 if the plan is still in use by an external service or project.",
        "operationId": "Delete Price Plan",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          }
        }
      }
    },
    "/admin_api/v1/organizations/{id}": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "description": "Retrieves a single organization by its ID.",
        "operationId": "Get Organization",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseOrganization"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Organizations"
        ],
        "description": "Updates an existing organization's properties.",
        "operationId": "Update Organization",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganizationUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseOrganization"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/organizations/{id}/members/{sub}/role": {
      "put": {
        "tags": [
          "Organizations"
        ],
        "description": "Updates the role of an existing organization member.",
        "operationId": "Update Organization Member Role",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sub",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseMember"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/organizations/{id}/billing_profile": {
      "put": {
        "tags": [
          "Organizations"
        ],
        "description": "Attaches a billing profile to the organization, turning billing on, or switches it to another profile. The profile must be unowned or already belong to this organization — including one it detached earlier.",
        "operationId": "Enable Organization Billing",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganizationBillingProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseOrganization"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Organizations"
        ],
        "description": "Detaches the organization's billing profile, turning billing off. The profile is kept, with its bills and credit, and can be attached again later. Bills for usage before billing was turned off are still issued.",
        "operationId": "Disable Organization Billing",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseOrganization"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/openstack/domain_mappings/{id}": {
      "get": {
        "tags": [
          "Realms"
        ],
        "description": "Retrieves a single mapping by its ID.",
        "operationId": "Get OpenStack Domain Mapping",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseOpenstackDomainMapping"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Realms"
        ],
        "description": "Updates a mapping's domain or provisioning strategy. Its key — service provider, realm and identity provider — is not editable.",
        "operationId": "Update OpenStack Domain Mapping",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenstackDomainMappingUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseOpenstackDomainMapping"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Realms"
        ],
        "description": "Removes a mapping. Refused while projects are provisioned in its domain and no other mapping still covers that domain.",
        "operationId": "Delete OpenStack Domain Mapping",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/admin_api/v1/flavor_categories/{id}": {
      "get": {
        "tags": [
          "Flavors"
        ],
        "description": "Retrieves a single flavor category by its ID.",
        "operationId": "Get Flavor Category",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseFlavorCategory"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Flavors"
        ],
        "description": "Replaces the whole category — send every field you want to keep. An omitted `flavors` or `flavor_attributes` empties that list, and an omitted `bare_metal` or `kubernetes` resets it to false. Rejected with 400 if one of its flavors is already assigned to a category of the opposite kind.",
        "operationId": "Update Flavor Category",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlavorCategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseFlavorCategory"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Flavors"
        ],
        "description": "Deletes a flavor category. The flavors themselves are untouched — they simply stop being grouped.",
        "operationId": "Delete Flavor Category",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/admin_api/v1/custom_resources/{id}": {
      "get": {
        "tags": [
          "Custom Resources"
        ],
        "description": "Retrieves a single custom resource by its ID.",
        "operationId": "Get Custom Resource",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseCustomResource"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Custom Resources"
        ],
        "description": "Updates a provisioned custom resource's type, base resource, values or expiry.",
        "operationId": "Update Custom Resource",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomResourceCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseCustomResource"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Custom Resources"
        ],
        "description": "Removes a provisioned custom resource so it is no longer billed.",
        "operationId": "Delete Custom Resource",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/admin_api/v1/custom_resource_types/{id}": {
      "get": {
        "tags": [
          "Custom Resource Types"
        ],
        "description": "Retrieves a single custom resource type by its ID.",
        "operationId": "Get Custom Resource Type",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseCustomResourceType"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Custom Resource Types"
        ],
        "description": "Updates a custom resource type. Renaming or re-basing a type still referenced by price plan rules is rejected with 400.",
        "operationId": "Update Custom Resource Type",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomResourceTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseCustomResourceType"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Custom Resource Types"
        ],
        "description": "Deletes a custom resource type. Rejected with 400 if it is still used by price plan rules or has provisioned resources.",
        "operationId": "Delete Custom Resource Type",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/admin_api/v1/billing_profiles/{id}": {
      "get": {
        "tags": [
          "Billing profiles"
        ],
        "description": "Retrieves a single billing profile by its ID.",
        "operationId": "Get Billing Profile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBillingProfile"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Billing profiles"
        ],
        "description": "Updates an existing billing profile's properties.",
        "operationId": "Update Billing Profile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBillingProfile"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Billing profiles"
        ],
        "description": "Deletes a billing profile. Rejected with 400 if the profile still has associated bills, transactions, payment methods, or projects.",
        "operationId": "Delete Billing Profile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBillingProfile"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "description": "Returns the registered outbound webhook endpoints.",
        "operationId": "List Webhook Endpoints",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "Registers an endpoint and returns its signing secret. The secret is shown once and cannot be retrieved again without an audited read. It is issued even when payload signing is disabled platform-wide, so enabling signing later needs no change to the endpoint.",
        "operationId": "Create Webhook Endpoint",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints/{id}/test": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "Queues a `webhook_endpoint.test` event so connectivity and signature verification can be confirmed before relying on real events.",
        "operationId": "Send Webhook Test Event",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookDelivery"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints/{id}/rotate_secret": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "Issues a new signing secret and returns it once. The previous secret keeps signing for the configured overlap window, so consumers can roll without downtime.",
        "operationId": "Rotate Webhook Signing Secret",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints/{id}/recover": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "Requeues every failed or aborted delivery for this endpoint since the given time.",
        "operationId": "Recover Failed Webhook Deliveries",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints/{id}/enable": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "Resumes deliveries and clears the failure streak that may have disabled it.",
        "operationId": "Enable Webhook Endpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints/{id}/disable": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "Stops deliveries without deleting the endpoint or its history.",
        "operationId": "Disable Webhook Endpoint",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_deliveries/{deliveryId}/retry": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "description": "Requeues a single delivery for immediate re-send, restarting its retry window.",
        "operationId": "Retry Webhook Delivery",
        "parameters": [
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookDelivery"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "description": "Returns a paginated list of users. Filter by metadata with `metadata.<key>=<value>`, e.g. `metadata.crm_account_id=ACC-123`; several such parameters must all match.",
        "operationId": "List Users",
        "parameters": [
          {
            "name": "sub",
            "in": "query",
            "description": "Filter by identity provider `sub`.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Filter by email.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "realm_id",
            "in": "query",
            "description": "Filter by the realm the user belongs to.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseUser"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Users"
        ],
        "description": "Pre-create users before they first login to the system.",
        "operationId": "Create User",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseUser"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/savings_contracts": {
      "get": {
        "tags": [
          "Savings Contracts"
        ],
        "description": "Returns the savings contracts of a billing profile.",
        "operationId": "List Savings Contracts",
        "parameters": [
          {
            "name": "billing_profile_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseSavingsContract"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Savings Contracts"
        ],
        "description": "Applies a savings plan to a billing profile by creating a savings contract.",
        "operationId": "Create Savings Contract",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavingsContractCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseSavingsContract"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/savings_contracts/{id}/cancel": {
      "post": {
        "tags": [
          "Savings Contracts"
        ],
        "description": "Cancels an active savings contract. Upfront-paid contracts cannot be cancelled.",
        "operationId": "Cancel Savings Contract",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseSavingsContract"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/realms": {
      "get": {
        "tags": [
          "Realms"
        ],
        "description": "Returns a paginated list of identity realms. Each realm carries its identity providers and clients, which are stored on the realm itself and so cost no extra lookup.",
        "operationId": "List Realms",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "Filter by realm name.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "query",
            "description": "Filter by realm slug.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "default_realm",
            "in": "query",
            "description": "Filter by whether the realm is the platform default.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "disabled",
            "in": "query",
            "description": "Filter by whether the realm is switched off.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseRealm"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Realms"
        ],
        "description": "Creates a realm. It starts with the first-party OAuth2 clients (cloud dashboard and admin console) and no identity providers.",
        "operationId": "Create Realm",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RealmCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealm"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/realms/{realm}/identity_providers": {
      "get": {
        "tags": [
          "Realms"
        ],
        "description": "Returns all identity providers configured on the realm.",
        "operationId": "List Realm Identity Providers",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseRealmIdentityProvider"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Realms"
        ],
        "description": "Adds an identity provider to the realm. Register the returned `oidc.redirect_uri` at the external provider.",
        "operationId": "Add Realm Identity Provider",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RealmIdentityProviderCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealmIdentityProvider"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/realms/{realm}/clients": {
      "get": {
        "tags": [
          "Realms"
        ],
        "description": "Returns the OAuth2 clients registered on the realm, without their secrets.",
        "operationId": "List Realm Clients",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseRealmClient"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Realms"
        ],
        "description": "Registers an OAuth2 client on the realm. The response carries the client secret.",
        "operationId": "Add Realm Client",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RealmClientCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealmClient"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/realms/{realm}/clients/{client_id}/regenerate_secret": {
      "post": {
        "tags": [
          "Realms"
        ],
        "description": "Mints a new secret for a confidential client and returns it. The previous secret stops working immediately.",
        "operationId": "Regenerate Realm Client Secret",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client_id",
            "in": "path",
            "description": "The client's record id, not its `client_id`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealmClient"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/realms/{realm}/clients/ensure_built_in": {
      "post": {
        "tags": [
          "Realms"
        ],
        "description": "Restores any missing first-party client (cloud dashboard, admin console) on the realm and returns the full client list. Idempotent: clients already present, including customised ones, are left untouched.",
        "operationId": "Ensure Realm Built-In Clients",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseRealmClient"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/projects": {
      "get": {
        "tags": [
          "Projects"
        ],
        "operationId": "List Projects",
        "parameters": [
          {
            "name": "organization_id",
            "in": "query",
            "description": "Filter projects by the organization id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "billing_profile_id",
            "in": "query",
            "description": "Filter projects by the billing profile id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "openstack_project_id",
            "in": "query",
            "description": "Filter projects by the openstack project id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter projects by status",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ENABLED",
                "DISABLED",
                "SCHEDULED_FOR_DELETION",
                "DELETE_IN_PROGRESS"
              ]
            }
          },
          {
            "name": "member_sub",
            "in": "query",
            "description": "Filter by a member's sub.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "realm_id",
            "in": "query",
            "description": "Filter by the realm the project belongs to.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseProject"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Projects"
        ],
        "operationId": "Create Project",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseProject"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/projects/{id}/provision": {
      "post": {
        "tags": [
          "Projects"
        ],
        "operationId": "Provision Services to a Project",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectProvisionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseProject"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/price_plans": {
      "get": {
        "tags": [
          "Price Plans"
        ],
        "description": "Returns a paginated list of price plans.",
        "operationId": "List Price Plans",
        "parameters": [
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponsePricePlan"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Price Plans"
        ],
        "description": "Creates a price plan. Defaults to PUBLIC access mode when not specified.",
        "operationId": "Create Price Plan",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PricePlanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponsePricePlan"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/organizations": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "description": "Returns a paginated list of organizations. Supports filtering by name, member sub, or billing profile ID. Filter by metadata with `metadata.<key>=<value>`, e.g. `metadata.crm_account_id=ACC-123`; several such parameters must all match.",
        "operationId": "List Organizations",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "Filter by organization name.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "member_sub",
            "in": "query",
            "description": "Filter by a member's sub.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "billing_profile_id",
            "in": "query",
            "description": "Filter by the billing profile id.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "realm_id",
            "in": "query",
            "description": "Filter by the realm the organization belongs to.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseOrganization"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Organizations"
        ],
        "description": "Creates an organization. Optionally specify `owner_sub` to add an owner member, or `billing_profile_id` to link an existing billing profile.",
        "operationId": "Create Organization",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganizationCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseOrganization"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/organizations/{id}/members": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "description": "Returns all members of the specified organization.",
        "operationId": "List Organization Members",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Member"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Organizations"
        ],
        "description": "Adds a user as a member to the organization.",
        "operationId": "Add Organization Member",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddMemberRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseMember"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/openstack/domain_mappings": {
      "get": {
        "tags": [
          "Realms"
        ],
        "description": "Returns a paginated list of the mappings that wire realm identities onto OpenStack Keystone domains.",
        "operationId": "List OpenStack Domain Mappings",
        "parameters": [
          {
            "name": "realm_id",
            "in": "query",
            "description": "Filter by realm. Accepts a realm id or slug.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "service_provider_id",
            "in": "query",
            "description": "Filter by cloud service provider.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "identity_provider_id",
            "in": "query",
            "description": "Filter by the realm identity provider the mapping applies to.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseOpenstackDomainMapping"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Realms"
        ],
        "description": "Wires a realm — optionally narrowed to one of its identity providers — onto a Keystone domain on one cloud.",
        "operationId": "Create OpenStack Domain Mapping",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenstackDomainMappingCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseOpenstackDomainMapping"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/iam/resolve": {
      "post": {
        "tags": [
          "IAM"
        ],
        "description": "Returns the grants a service should render for one organization: one entry per attachment, carrying that attachment's own statements narrowed to this service.",
        "operationId": "Resolve Grants",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IamResolveApiRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseProjectAccess"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/iam/authorize": {
      "post": {
        "tags": [
          "IAM"
        ],
        "description": "Answers whether a principal may take an action on a resource, by the same rules the portal itself is bound by. `Deny` and `Allow` are decisions; `NO_DECISION` means no policy said anything and the caller applies its own default.",
        "operationId": "Authorize",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IamAuthorizeApiRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseIamDecision"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/flavor_categories": {
      "get": {
        "tags": [
          "Flavors"
        ],
        "description": "Returns a paginated list of the flavor categories defined on this platform.",
        "operationId": "List Flavor Categories",
        "parameters": [
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseFlavorCategory"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Flavors"
        ],
        "description": "Creates a flavor category. Rejected with 400 if one of its flavors is already assigned to a category of the opposite kind — a flavor belongs to bare-metal categories or to non-bare-metal ones, never to both.",
        "operationId": "Create Flavor Category",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlavorCategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseFlavorCategory"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/custom_resources": {
      "get": {
        "tags": [
          "Custom Resources"
        ],
        "description": "Returns the provisioned custom resources of a project.",
        "operationId": "List Custom Resources",
        "parameters": [
          {
            "name": "project_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseCustomResource"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Custom Resources"
        ],
        "description": "Provisions a custom resource (e.g. a per-VM licence) against a base resource, billed on the platform CUSTOM service.",
        "operationId": "Create Custom Resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomResourceCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseCustomResource"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/custom_resource_types": {
      "get": {
        "tags": [
          "Custom Resource Types"
        ],
        "description": "Returns a paginated list of the admin-defined custom resource types.",
        "operationId": "List Custom Resource Types",
        "parameters": [
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseCustomResourceType"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Custom Resource Types"
        ],
        "description": "Creates a custom resource type on a CUSTOM service provider, optionally deriving from a provider-backed type.",
        "operationId": "Create Custom Resource Type",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomResourceTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseCustomResourceType"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/billing_profiles": {
      "get": {
        "tags": [
          "Billing profiles"
        ],
        "description": "Returns a paginated list of billing profiles. Supports filtering by organization ID, email, or member sub. Filter by metadata with `metadata.<key>=<value>`, e.g. `metadata.crm_account_id=ACC-123`; several such parameters must all match.",
        "operationId": "List Billing Profiles",
        "parameters": [
          {
            "name": "organization_id",
            "in": "query",
            "description": "Filter by the organization id.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Filter by the email.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "member_sub",
            "in": "query",
            "description": "Filter by the member sub.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseBillingProfile"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Billing profiles"
        ],
        "description": "Creates a billing profile linked to the specified organization.",
        "operationId": "Create Billing Profile",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBillingProfile"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/billing_profiles/{id}/suspend": {
      "post": {
        "tags": [
          "Billing profiles"
        ],
        "description": "Suitable for Billing Profiles having status ACTIVE. It doesn't have any effect for other statuses. Suspends the Billing Profile and all the underlying projects and cloud resources. The Billing Profile stays suspended until it is resumed, whatever its balance.",
        "operationId": "Suspend a Billing Profile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBillingProfile"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/billing_profiles/{id}/resume": {
      "post": {
        "tags": [
          "Billing profiles"
        ],
        "description": "Suitable for Billing Profiles having status SUSPENDED. It doesn't have any effect for other statuses. To activate a new billing profile, please use the activate API. Resumes the Billing Profile and all the underlying projects and cloud resources.",
        "operationId": "Resume a Billing Profile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBillingProfile"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/billing_profiles/{id}/activate": {
      "post": {
        "tags": [
          "Billing profiles"
        ],
        "description": "Suitable for Billing Profiles having status NEW. It doesn't have any effect for other statuses. To resume a suspended billing profile, please use the resume API. This API transitions the Billing profile from NEW to ACTIVE, provisioning access to the cloud and adding promotional credits if configured.",
        "operationId": "Activate a new Billing Profile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBillingProfile"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/account_credits": {
      "get": {
        "tags": [
          "Account Credits"
        ],
        "operationId": "List Account Credits",
        "parameters": [
          {
            "name": "billing_profile_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseAccountCredit"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Account Credits"
        ],
        "operationId": "Create Account Credit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountCreditCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseAccountCredit"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/bills/{id}": {
      "get": {
        "tags": [
          "Bills"
        ],
        "operationId": "Get Bill",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBill"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Bills"
        ],
        "description": "Updates a bill's status. Only the SENT -> PAID transition is supported, for marking a bill paid once it has been settled in an external billing system.",
        "operationId": "Update Bill Status",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillStatusUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseBill"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_openapi": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "description": "The events this platform sends, as an OpenAPI 3.1 document using the spec's `webhooks` object. Feed it to a generator instead of hand-writing handlers.",
        "operationId": "Get Webhook OpenAPI Document",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_event_types": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "description": "The catalogue of event types that can be subscribed to.",
        "operationId": "List Webhook Event Types",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseWebhookEventTypeInfo"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints/{id}/secret": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "description": "Returns the current signing secret. This disclosure is recorded in the audit log.",
        "operationId": "Reveal Webhook Signing Secret",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseWebhookEndpoint"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/webhook_endpoints/{id}/deliveries": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "description": "Returns the outstanding and unresolved deliveries for an endpoint — those still queued or retrying, plus those that failed or were aborted — including every attempt and the consumer's own response. Successful deliveries are recorded in the audit log and removed from this queue, so query the audit log for delivery history.",
        "operationId": "List Webhook Deliveries",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "event_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseWebhookDelivery"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/usage": {
      "get": {
        "tags": [
          "Resource Usage"
        ],
        "description": "The usage of the resources in scope during [from, to): one entry per resource with the states it went through and the seconds each was in force — the first state with its full values, each later one with only the values that changed — and the seconds it existed in total. Scope is exactly one of `project_id`, `organization_id` (every project of the organization) or `resource_id`; `resource_type` narrows it. `to` is capped at now; both bounds are optional. Pages on resource id: pass `next_marker` back as `marker`.",
        "operationId": "List Resource Usage",
        "parameters": [
          {
            "name": "project_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "organization_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resource_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resource_type",
            "in": "query",
            "description": "Billing type, e.g. instance, volume, project or a custom type name.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseResourceUsage"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/service_providers": {
      "get": {
        "tags": [
          "Service providers"
        ],
        "operationId": "List Service Providers",
        "parameters": [
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseServiceProvider"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/service_providers/{id}": {
      "get": {
        "tags": [
          "Service providers"
        ],
        "operationId": "Get Service Provider",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseServiceProvider"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/savings_plans": {
      "get": {
        "tags": [
          "Savings Plans"
        ],
        "description": "Returns a paginated list of savings plans.",
        "operationId": "List Savings Plans",
        "parameters": [
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseSavingsPlan"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/savings_plans/{id}": {
      "get": {
        "tags": [
          "Savings Plans"
        ],
        "description": "Retrieves a single savings plan by its ID.",
        "operationId": "Get Savings Plan",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseSavingsPlan"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/savings_contracts/{id}": {
      "get": {
        "tags": [
          "Savings Contracts"
        ],
        "description": "Retrieves a single savings contract by its ID.",
        "operationId": "Get Savings Contract",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseSavingsContract"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/savings_contracts/eligibility": {
      "get": {
        "tags": [
          "Savings Contracts"
        ],
        "description": "Checks whether a billing profile can commit to a savings plan (i.e. has no active contract for it yet).",
        "operationId": "Check Savings Plan Eligibility",
        "parameters": [
          {
            "name": "billing_profile_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "savings_plan_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseSavingsPlanEligibility"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/promotional_credits": {
      "get": {
        "tags": [
          "Promotional Credits"
        ],
        "description": "Returns the promotional credits of a billing profile.",
        "operationId": "List Promotional Credits",
        "parameters": [
          {
            "name": "billing_profile_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponsePromotionalCredit"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/promotional_credits/{id}": {
      "get": {
        "tags": [
          "Promotional Credits"
        ],
        "description": "Retrieves a single promotional credit by its ID.",
        "operationId": "Get Promotional Credit",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponsePromotionalCredit"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/metrics/changes": {
      "get": {
        "tags": [
          "Resource Metrics"
        ],
        "description": "The change feed: every stored interval published, replaced or retracted after `cursor`, in revision order. Re-pull the named intervals, then continue from the returned `cursor`. Only settled records are served, so nothing with a lower revision appears later.",
        "operationId": "List Resource Metric Changes",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 500
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MetricChanges"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/metrics/api/v1/metadata": {
      "get": {
        "tags": [
          "Resource Metrics"
        ],
        "description": "Type, help and unit of every metric the store exposes.",
        "operationId": "List Metric Metadata",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MetricsApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/metrics/api/v1/label/{name}/values": {
      "get": {
        "tags": [
          "Resource Metrics"
        ],
        "description": "The values of one label: all metric names for `__name__`, else the values on the series `match[]` selects inside [start, end].",
        "operationId": "List Metric Label Values",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "match[]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MetricsApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/flavors/catalog": {
      "get": {
        "tags": [
          "Flavors"
        ],
        "description": "Returns every flavor the platform offers, with an estimated cost per hour and per month.\n\nThe optional parameters identify **who is being quoted**: each one resolves to a billing profile, which decides the price plans that apply (the profile's scoped plans, plus the public ones when its configuration includes them) and the currency. They do not narrow which flavors are returned. The most specific one wins: `billing_profile_id`, then `project_id`, then `openstack_project_id`, then `organization_id`. Naming a tenant that has no billing profile is an error rather than a quiet fall back to list prices; pass none of them to get list prices.\n\nResults are grouped by cloud and region: flavor names repeat across clouds, so a flavor is only identifiable together with the `(service_id, region)` it came from.",
        "operationId": "Get Flavor Catalog",
        "parameters": [
          {
            "name": "billing_profile_id",
            "in": "query",
            "description": "Quote for this billing profile directly.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "project_id",
            "in": "query",
            "description": "Quote for the profile this project bills against — its own, or its organization's when the project inherits one.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "openstack_project_id",
            "in": "query",
            "description": "Quote for the OSIE project attached to this OpenStack project. Combine with service_id when the same id exists on more than one cloud.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "organization_id",
            "in": "query",
            "description": "Quote for this organization's billing profile.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "region",
            "in": "query",
            "description": "Limit the catalog to one region.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "service_id",
            "in": "query",
            "description": "Limit the catalog to one cloud. Defaults to every enabled cloud.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseFlavorCatalog"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/cloud_resources": {
      "get": {
        "tags": [
          "Cloud Resources"
        ],
        "description": "Returns cloud resources, optionally filtered by project, organization, external service and type. With no filter it lists every cloud resource (paginated). The `data` payload of each resource is type-specific — see the CloudResource schema for the per-type shape.",
        "operationId": "List Cloud Resources",
        "parameters": [
          {
            "name": "project_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "organization_id",
            "in": "query",
            "description": "Filter by organization: returns the resources of every project linked to this organization. Takes precedence over project_id.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "service_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "external_id",
            "in": "query",
            "description": "Filter by the provider-side external id. External ids are unique only within a service, so combine with service_id for an exact lookup.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Filter by resource type, e.g. SERVER, VOLUME, NETWORK.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_fields",
            "in": "query",
            "description": "Filter by fields inside the type-specific `data` payload. A comma-separated list of `path=value` pairs, each path relative to `data`, all ANDed together (e.g. `server.name=web-1,server.image_id=abc123` matches data.server.name AND data.server.image_id). Numeric and boolean values are matched as such; a value cannot contain a comma.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseCloudResource"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/cloud_resources/{id}": {
      "get": {
        "tags": [
          "Cloud Resources"
        ],
        "description": "Retrieves a single cloud resource by its ID. The `data` payload is type-specific — its shape is determined by the resource's `type`.",
        "operationId": "Get Cloud Resource",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseCloudResource"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/bills": {
      "get": {
        "tags": [
          "Bills"
        ],
        "operationId": "List Bills",
        "parameters": [
          {
            "name": "billing_profile_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "OPEN",
                "SENT",
                "PAID"
              ]
            }
          },
          {
            "name": "include_items",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "marker",
            "in": "query",
            "description": "Id of the next pagination marker.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The size of the page.",
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiListResponseBill"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/account_credits/{id}": {
      "get": {
        "tags": [
          "Account Credits"
        ],
        "operationId": "Get Account Credit",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseAccountCredit"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Account Credits"
        ],
        "operationId": "Delete Account Credit",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          }
        }
      }
    },
    "/admin_api/v1/realms/{realm}/self_service": {
      "delete": {
        "tags": [
          "Realms"
        ],
        "description": "Drops the self-service quota, returning the realm to unlimited. Use the realm update to change individual limits.",
        "operationId": "Clear Realm Self-Service Quota",
        "parameters": [
          {
            "name": "realm",
            "in": "path",
            "description": "Realm id or slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResponseRealm"
                }
              }
            }
          }
        }
      }
    },
    "/admin_api/v1/organizations/{id}/members/{sub}": {
      "delete": {
        "tags": [
          "Organizations"
        ],
        "description": "Removes a member from the organization by their sub.",
        "operationId": "Remove Organization Member",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sub",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "MetricsApiResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "`success` or `error`"
          },
          "data": {
            "type": "object",
            "description": "On success: for query and query_range `{resultType, result}`; for series a list of label sets; for labels and label values a list of strings; for metadata a map by metric name"
          },
          "errorType": {
            "type": "string",
            "description": "On error: bad_data (400), execution (422), internal (500), as Prometheus names them"
          },
          "error": {
            "type": "string"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "WebhookEndpointSettings": {
        "type": "object",
        "properties": {
          "signingEnabled": {
            "type": "boolean"
          },
          "retryBackoff": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "seconds": {
                  "type": "integer",
                  "format": "int64"
                },
                "zero": {
                  "type": "boolean"
                },
                "nano": {
                  "type": "integer",
                  "format": "int32"
                },
                "negative": {
                  "type": "boolean"
                },
                "positive": {
                  "type": "boolean"
                },
                "units": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "durationEstimated": {
                        "type": "boolean"
                      },
                      "timeBased": {
                        "type": "boolean"
                      },
                      "dateBased": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              }
            }
          },
          "jitterPercent": {
            "type": "integer",
            "format": "int32"
          },
          "maxAttempts": {
            "type": "integer",
            "format": "int32"
          },
          "disableAfter": {
            "type": "object",
            "properties": {
              "seconds": {
                "type": "integer",
                "format": "int64"
              },
              "zero": {
                "type": "boolean"
              },
              "nano": {
                "type": "integer",
                "format": "int32"
              },
              "negative": {
                "type": "boolean"
              },
              "positive": {
                "type": "boolean"
              },
              "units": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "durationEstimated": {
                      "type": "boolean"
                    },
                    "timeBased": {
                      "type": "boolean"
                    },
                    "dateBased": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "disableMinConsecutiveFailures": {
            "type": "integer",
            "format": "int32"
          },
          "secretRotationOverlap": {
            "type": "object",
            "properties": {
              "seconds": {
                "type": "integer",
                "format": "int64"
              },
              "zero": {
                "type": "boolean"
              },
              "nano": {
                "type": "integer",
                "format": "int32"
              },
              "negative": {
                "type": "boolean"
              },
              "positive": {
                "type": "boolean"
              },
              "units": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "durationEstimated": {
                      "type": "boolean"
                    },
                    "timeBased": {
                      "type": "boolean"
                    },
                    "dateBased": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Per-endpoint overrides of the platform settings: signing, retry schedule and auto-disable thresholds. Any unset field follows the platform. The egress guard (allowed schemes and address ranges) is platform policy and cannot be overridden here."
      },
      "WebhookEndpointUpdateRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The HTTPS url events are POSTed to."
          },
          "enabled_events": {
            "type": "array",
            "description": "Replaces the subscription list outright.",
            "items": {
              "type": "string",
              "description": "Replaces the subscription list outright."
            }
          },
          "description": {
            "type": "string"
          },
          "custom_headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Replaces the header map outright. Values are encrypted at rest."
            },
            "description": "Replaces the header map outright. Values are encrypted at rest."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "settings": {
            "$ref": "#/components/schemas/WebhookEndpointSettings"
          }
        }
      },
      "ApiEntityResponseWebhookEndpoint": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebhookEndpoint"
          }
        }
      },
      "WebhookEndpoint": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "The HTTPS url events are POSTed to."
          },
          "description": {
            "type": "string",
            "description": "Free-text label shown in the console and the audit trail."
          },
          "enabled_events": {
            "type": "array",
            "description": "Event types this endpoint receives, or [\"*\"] for all of them.",
            "items": {
              "type": "string",
              "description": "Event types this endpoint receives, or [\"*\"] for all of them."
            }
          },
          "status": {
            "type": "string",
            "description": "ENABLED, DISABLED_BY_USER or DISABLED_BY_SYSTEM."
          },
          "organization_id": {
            "type": "string",
            "description": "Restricts the endpoint to one organization's events. Null means platform-wide."
          },
          "disabled_reason": {
            "type": "string",
            "description": "Why the platform disabled this endpoint. Null unless status is DISABLED_BY_SYSTEM."
          },
          "consecutive_failures": {
            "type": "integer",
            "description": "Consecutive deliveries that exhausted their retries. Reset by any success.",
            "format": "int32"
          },
          "last_success_at": {
            "type": "string",
            "format": "date-time"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Customer-defined key/value pairs, stored and echoed back untouched."
            },
            "description": "Customer-defined key/value pairs, stored and echoed back untouched."
          },
          "settings": {
            "$ref": "#/components/schemas/WebhookEndpointSettings"
          },
          "secret": {
            "type": "string",
            "description": "The signing secret. Returned only by create and rotate_secret — never on a read. Used to verify the webhook-signature header, which is sent unless payload signing has been disabled in the platform configuration."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UserUpdateRequest": {
        "type": "object",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
              "example": "{\"crm_contact_id\":\"C-8812\"}"
            },
            "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
            "example": {
              "crm_contact_id": "C-8812"
            }
          }
        }
      },
      "ApiEntityResponseUser": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/User"
          }
        }
      },
      "OpenIDIdentityProvider": {
        "type": "object",
        "properties": {
          "sub": {
            "type": "string"
          },
          "issuer": {
            "type": "string"
          }
        },
        "description": "List of identities this user has against different OpenID providers."
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "sub": {
            "type": "string",
            "description": "The primary OpenID `sub` claim obtained from the first login of the user in the system."
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "realm_id": {
            "type": "string",
            "description": "The realm this user belongs to."
          },
          "identities": {
            "type": "array",
            "description": "List of identities this user has against different OpenID providers.",
            "items": {
              "$ref": "#/components/schemas/OpenIDIdentityProvider"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer.",
              "example": "{\"crm_contact_id\":\"C-8812\"}"
            },
            "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer.",
            "example": {
              "crm_contact_id": "C-8812"
            }
          }
        }
      },
      "RealmLocalUsers": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether the realm accepts local credentials at all. When false the login page offers only identity providers."
          },
          "signup_enabled": {
            "type": "boolean",
            "description": "Whether people may self-register into this realm."
          },
          "default_role": {
            "type": "string",
            "description": "Realm role granted to a newly registered user."
          },
          "allow_passkeys": {
            "type": "boolean",
            "description": "Allow passkey (WebAuthn) enrolment."
          },
          "social_providers": {
            "$ref": "#/components/schemas/RealmSocialProviders"
          },
          "password_policy": {
            "$ref": "#/components/schemas/RealmPasswordPolicy"
          },
          "enforce_2fa": {
            "type": "boolean",
            "description": "Require two-factor authentication."
          }
        }
      },
      "RealmLoginPage": {
        "type": "object",
        "properties": {
          "disabled": {
            "type": "boolean",
            "description": "Render no interactive login page at all — only direct authorization requests work. Used by broker realms that are only ever reached through another realm's federation."
          },
          "enforced_identity_provider_id": {
            "type": "string",
            "description": "Id of the identity provider the page auto-redirects to, skipping the page entirely. Either one of the realm's enabled identity providers, or a social provider that is configured under local_users.social_providers — the latter only while local_users.enabled is true, since a realm that takes no local users offers no social buttons either. Send an empty string to clear it."
          }
        }
      },
      "RealmPasswordPolicy": {
        "type": "object",
        "properties": {
          "min_length": {
            "type": "integer",
            "description": "Minimum number of characters, between 1 and 72.",
            "format": "int32"
          },
          "min_uppercase": {
            "type": "integer",
            "description": "Minimum number of uppercase letters.",
            "format": "int32"
          },
          "min_lowercase": {
            "type": "integer",
            "description": "Minimum number of lowercase letters.",
            "format": "int32"
          },
          "min_digits": {
            "type": "integer",
            "description": "Minimum number of digits.",
            "format": "int32"
          },
          "min_special": {
            "type": "integer",
            "description": "Minimum number of characters that are neither letters, digits nor whitespace.",
            "format": "int32"
          },
          "history_size": {
            "type": "integer",
            "description": "How many of the most recent passwords, the current one included, may not be reused. Between 0 and 24.",
            "format": "int32"
          },
          "reject_personal_info": {
            "type": "boolean",
            "description": "Reject passwords containing the user's email address, its local part or their name."
          }
        },
        "description": "Rules local passwords must satisfy."
      },
      "RealmSelfService": {
        "type": "object",
        "properties": {
          "allow_organization_creation": {
            "type": "boolean",
            "description": "Whether realm members may create organizations."
          },
          "max_organizations": {
            "minimum": 0,
            "type": "integer",
            "description": "Max organizations this realm may hold in total. 0 = unlimited.",
            "format": "int32"
          },
          "allow_project_creation": {
            "type": "boolean",
            "description": "Whether realm members may create projects."
          },
          "max_projects": {
            "minimum": 0,
            "type": "integer",
            "description": "Max projects this realm may hold in total. 0 = unlimited.",
            "format": "int32"
          },
          "max_projects_per_organization": {
            "minimum": 0,
            "type": "integer",
            "description": "Max projects any single organization in this realm may hold. 0 = unlimited.",
            "format": "int32"
          }
        },
        "description": "Send null explicitly to drop the quota and return the realm to unlimited."
      },
      "RealmSessionPolicy": {
        "type": "object",
        "properties": {
          "idle_timeout_minutes": {
            "type": "integer",
            "description": "Minutes without activity after which the user is signed out, at most max_lifetime_minutes. 0 turns the idle limit off.",
            "format": "int32"
          },
          "max_lifetime_minutes": {
            "type": "integer",
            "description": "Minutes after signing in when the session ends, however active the user is. Between 1 and 720.",
            "format": "int32"
          }
        },
        "description": "Idle and absolute limits on a sign-in. Applies from the signed-in user's next request."
      },
      "RealmSocialProvider": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Offer this provider on the realm's login page. Omitted leaves it unchanged."
          },
          "client_id": {
            "type": "string",
            "description": "The client id OSIE presents to the provider. Omitted leaves it unchanged."
          },
          "client_secret": {
            "type": "string",
            "description": "The client secret. Omitted keeps the stored one. Never returned.",
            "writeOnly": true
          }
        },
        "description": "Sign in with Okta."
      },
      "RealmSocialProviders": {
        "type": "object",
        "properties": {
          "google": {
            "$ref": "#/components/schemas/RealmSocialProvider"
          },
          "facebook": {
            "$ref": "#/components/schemas/RealmSocialProvider"
          },
          "github": {
            "$ref": "#/components/schemas/RealmSocialProvider"
          },
          "okta": {
            "$ref": "#/components/schemas/RealmSocialProvider"
          }
        },
        "description": "Consumer sign-in providers offered alongside local credentials."
      },
      "RealmUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "pattern": "^[a-z0-9][a-z0-9-]{0,61}$",
            "type": "string",
            "description": "Changing the slug changes this realm's OIDC issuer and every realm-scoped URL, so every relying party registered against the old issuer must be updated."
          },
          "default_realm": {
            "type": "boolean"
          },
          "disabled": {
            "type": "boolean",
            "description": "Kill-switch. Refused for a realm whose local login is how admins reach the console."
          },
          "local_users": {
            "$ref": "#/components/schemas/RealmLocalUsers"
          },
          "login_page": {
            "$ref": "#/components/schemas/RealmLoginPage"
          },
          "session_policy": {
            "$ref": "#/components/schemas/RealmSessionPolicy"
          },
          "admission_policy": {
            "type": "string",
            "description": "Whether a login for someone this realm has never seen may create an account. Covers the realm's identity providers and its social sign-in providers; local self-registration is governed by local_users.signup_enabled. Omit to leave unchanged.",
            "enum": [
              "OPEN",
              "CLAIM_MAPPED",
              "MANUAL"
            ]
          },
          "self_service": {
            "$ref": "#/components/schemas/RealmSelfService"
          }
        }
      },
      "ApiEntityResponseRealm": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Realm"
          }
        }
      },
      "Realm": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string",
            "description": "URL-safe identifier. Appears in every realm-scoped URL, including the OIDC issuer."
          },
          "default_realm": {
            "type": "boolean",
            "description": "Whether this is the platform's default realm — where untagged tokens and legacy users land."
          },
          "disabled": {
            "type": "boolean",
            "description": "Kill-switch: nobody can sign in and existing sessions for this realm are rejected."
          },
          "local_users": {
            "$ref": "#/components/schemas/RealmLocalUsers"
          },
          "login_page": {
            "$ref": "#/components/schemas/RealmLoginPage"
          },
          "session_policy": {
            "$ref": "#/components/schemas/RealmSessionPolicy"
          },
          "admission_policy": {
            "type": "string",
            "description": "Whether a login for someone this realm has never seen may create an account. Applies to every identity that is not a local credential — the realm's identity providers and its social sign-in providers alike. Local self-registration is governed by local_users.signup_enabled. Users created through this API sign in under every policy.",
            "enum": [
              "OPEN",
              "CLAIM_MAPPED",
              "MANUAL"
            ]
          },
          "self_service": {
            "$ref": "#/components/schemas/RealmSelfService"
          },
          "identity_providers": {
            "type": "array",
            "description": "Identity providers this realm delegates authentication to. Both collections are stored on the realm itself, so listing realms returns them too at no extra cost.",
            "items": {
              "$ref": "#/components/schemas/RealmIdentityProvider"
            }
          },
          "clients": {
            "type": "array",
            "description": "OAuth2 clients registered on this realm. Never carries client secrets — read a single client to get one.",
            "items": {
              "$ref": "#/components/schemas/RealmClient"
            }
          },
          "oidc_issuer_uri": {
            "type": "string",
            "description": "The issuer this realm advertises when OSIE acts as the OIDC provider for its clients."
          },
          "oidc_discovery_uri": {
            "type": "string",
            "description": "Discovery document for `oidc_issuer_uri`."
          },
          "oidc_redirect_uri": {
            "type": "string",
            "description": "The realm-scoped OAuth callback URL every OIDC identity provider in this realm shares. Derived from the slug, so it can be registered at an external provider before the provider exists here."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "RealmClaimMapping": {
        "type": "object",
        "properties": {
          "claim_name": {
            "type": "string",
            "description": "Claim to copy from the external IdP's token."
          },
          "target_claim": {
            "type": "string",
            "description": "Name to write on the OSIE token. Defaults to `claim_name` when omitted."
          },
          "token_type": {
            "type": "string",
            "description": "Which issued token(s) this mapping decorates. Omitted means both.",
            "enum": [
              "BOTH",
              "ID_TOKEN",
              "ACCESS_TOKEN"
            ]
          }
        },
        "description": "Claims copied from this provider's tokens onto the OSIE-issued token."
      },
      "RealmClient": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Server-assigned record id. Use this in the client endpoints' path, not `client_id`."
          },
          "client_id": {
            "type": "string",
            "description": "The identifier the relying party presents when it authenticates."
          },
          "client_name": {
            "type": "string"
          },
          "protocol": {
            "type": "string",
            "description": "Which protocol this client federates with. Determines the configuration block below.",
            "enum": [
              "OPENID_CONNECT"
            ]
          },
          "root_url": {
            "type": "string",
            "description": "Anchor for the relative URL entries in the protocol block."
          },
          "require_consent": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "oidc": {
            "$ref": "#/components/schemas/RealmClientOidcConfig"
          }
        },
        "description": "OAuth2 clients registered on this realm. Never carries client secrets — read a single client to get one."
      },
      "RealmClientOidcConfig": {
        "type": "object",
        "properties": {
          "auth_method": {
            "type": "string",
            "description": "How the client authenticates at the token endpoint.",
            "enum": [
              "NONE",
              "CLIENT_SECRET",
              "PRIVATE_KEY_JWT"
            ]
          },
          "confidential": {
            "type": "boolean",
            "description": "Whether the client authenticates at all — any `auth_method` other than NONE."
          },
          "require_proof_key": {
            "type": "boolean",
            "description": "Whether PKCE (S256) is required. Independent of `auth_method`."
          },
          "redirect_uris": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "post_logout_redirect_uris": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "web_origins": {
            "type": "array",
            "description": "CORS allow-list. Entries may be origins, relative forms, `+` (derive from the redirect URIs) or `*`.",
            "items": {
              "type": "string",
              "description": "CORS allow-list. Entries may be origins, relative forms, `+` (derive from the redirect URIs) or `*`."
            }
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "grant_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "jwk_set_url": {
            "type": "string",
            "description": "PRIVATE_KEY_JWT only. Where to fetch the client's JWKS to verify its assertion."
          },
          "linked_realm_id": {
            "type": "string",
            "description": "Realm peer only: the broker realm this client lets in."
          },
          "client_secret": {
            "type": "string",
            "description": "The secret, in plaintext. Returned only by the single-client endpoints, and only for a CLIENT_SECRET client — never for public clients or realm peers."
          }
        },
        "description": "Present when `protocol` is OPENID_CONNECT."
      },
      "RealmIdentityProvider": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Server-assigned id. Also the value of the `idp` claim on tokens minted through this provider."
          },
          "display_name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "description": "Which kind of provider this is. Determines the configuration block below.",
            "enum": [
              "OIDC",
              "KEYSTONE_CREDENTIALS",
              "REALM"
            ]
          },
          "hide_on_login_page": {
            "type": "boolean",
            "description": "Hide this provider on the realm's login page. It stays usable via a direct authorization request."
          },
          "transient_users": {
            "type": "boolean",
            "description": "Federate without persisting a local user — the identity lives only in the issued token."
          },
          "oidc": {
            "$ref": "#/components/schemas/RealmIdentityProviderOidcConfig"
          },
          "keystone_credentials": {
            "$ref": "#/components/schemas/RealmIdentityProviderKeystoneCredentialsConfig"
          },
          "realm_link": {
            "$ref": "#/components/schemas/RealmIdentityProviderRealmLinkConfig"
          }
        },
        "description": "Identity providers this realm delegates authentication to. Both collections are stored on the realm itself, so listing realms returns them too at no extra cost."
      },
      "RealmIdentityProviderKeystoneCredentialsConfig": {
        "type": "object",
        "properties": {
          "service_provider_id": {
            "type": "string",
            "description": "The cloud service provider whose keystone authenticates the credentials."
          }
        },
        "description": "Present when `type` is KEYSTONE_CREDENTIALS."
      },
      "RealmIdentityProviderOidcConfig": {
        "type": "object",
        "properties": {
          "issuer_uri": {
            "type": "string",
            "description": "The `iss` claim expected on this provider's tokens."
          },
          "discovery_uri": {
            "type": "string",
            "description": "Where the discovery document is fetched from, when it diverges from the issuer."
          },
          "client_id": {
            "type": "string",
            "description": "The client id OSIE presents to this provider."
          },
          "public_client": {
            "type": "boolean",
            "description": "Connect as a public client: no secret, PKCE always enforced."
          },
          "pkce": {
            "type": "boolean",
            "description": "Send a PKCE (S256) challenge to this provider."
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "additional_authorization_parameters": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Fixed extra query parameters added to every authorization request."
            },
            "description": "Fixed extra query parameters added to every authorization request."
          },
          "redirect_uri": {
            "type": "string",
            "description": "OAuth callback URL to register at the external provider. Shared by every OIDC provider in the realm, so it is known before this provider exists."
          },
          "initiation_uri": {
            "type": "string",
            "description": "URL that starts this provider's login flow."
          },
          "realm_role_mappings": {
            "type": "array",
            "description": "Realm roles granted from claims on this provider's tokens.",
            "items": {
              "$ref": "#/components/schemas/RealmRoleMapping"
            }
          },
          "claim_mappings": {
            "type": "array",
            "description": "Claims copied from this provider's tokens onto the OSIE-issued token.",
            "items": {
              "$ref": "#/components/schemas/RealmClaimMapping"
            }
          }
        },
        "description": "Present when `type` is OIDC."
      },
      "RealmIdentityProviderRealmLinkConfig": {
        "type": "object",
        "properties": {
          "linked_realm_id": {
            "type": "string",
            "description": "The customer realm this provider federates to."
          }
        },
        "description": "Present when `type` is REALM."
      },
      "RealmRoleMapping": {
        "type": "object",
        "properties": {
          "claim_name": {
            "type": "string",
            "description": "Claim to inspect on the incoming token."
          },
          "claim_value": {
            "type": "string",
            "description": "Value that must be present in that claim. The claim may be a string or an array."
          },
          "realm_role": {
            "type": "string",
            "description": "Realm role granted on a match."
          }
        },
        "description": "Realm roles granted from claims on this provider's tokens."
      },
      "RealmIdentityProviderOidcRequest": {
        "type": "object",
        "properties": {
          "issuer_uri": {
            "type": "string",
            "description": "The `iss` claim expected on this provider's tokens; also the discovery base unless `discovery_uri` overrides it."
          },
          "discovery_uri": {
            "type": "string",
            "description": "Use when the provider's discovery URL diverges from its issuer (e.g. Microsoft Entra ID)."
          },
          "client_id": {
            "type": "string"
          },
          "client_secret": {
            "type": "string",
            "description": "Required when registering a confidential provider; omit on update to keep the stored secret. Never returned."
          },
          "public_client": {
            "type": "boolean",
            "description": "Connect as a public client: no secret, PKCE always enforced."
          },
          "pkce": {
            "type": "boolean",
            "description": "Send a PKCE (S256) challenge to this provider."
          },
          "scopes": {
            "type": "array",
            "description": "Defaults to [openid, profile, email] when omitted.",
            "items": {
              "type": "string",
              "description": "Defaults to [openid, profile, email] when omitted."
            }
          },
          "additional_authorization_parameters": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Fixed extra query parameters added to every authorization request (e.g. `audience`). Must not collide with the standard parameters."
            },
            "description": "Fixed extra query parameters added to every authorization request (e.g. `audience`). Must not collide with the standard parameters."
          },
          "realm_role_mappings": {
            "type": "array",
            "description": "Realm roles granted from claims on this provider's tokens.",
            "items": {
              "$ref": "#/components/schemas/RealmRoleMapping"
            }
          },
          "claim_mappings": {
            "type": "array",
            "description": "Claims copied from this provider's tokens onto the OSIE-issued token.",
            "items": {
              "$ref": "#/components/schemas/RealmClaimMapping"
            }
          }
        },
        "description": "Applies when the provider is OIDC. Omitted fields inside it keep their stored values."
      },
      "RealmIdentityProviderUpdateRequest": {
        "type": "object",
        "properties": {
          "display_name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean",
            "description": "Omitted keeps the provider's current state, so a routine edit can't silently re-enable one that was turned off."
          },
          "hide_on_login_page": {
            "type": "boolean"
          },
          "transient_users": {
            "type": "boolean",
            "description": "Federate without persisting a local user."
          },
          "realm_role_mappings": {
            "type": "array",
            "description": "Realm roles granted from claims on this provider's tokens. Omitted keeps the stored mappings; send an empty array to remove them all.",
            "items": {
              "$ref": "#/components/schemas/RealmRoleMapping"
            }
          },
          "claim_mappings": {
            "type": "array",
            "description": "Claims copied onto the OSIE-issued token. Omitted keeps the stored mappings; send an empty array to remove them all.",
            "items": {
              "$ref": "#/components/schemas/RealmClaimMapping"
            }
          },
          "oidc": {
            "$ref": "#/components/schemas/RealmIdentityProviderOidcRequest"
          },
          "keystone_credentials": {
            "$ref": "#/components/schemas/RealmIdentityProviderKeystoneCredentialsConfig"
          },
          "realm_link": {
            "$ref": "#/components/schemas/RealmIdentityProviderRealmLinkConfig"
          }
        }
      },
      "ApiEntityResponseRealmIdentityProvider": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RealmIdentityProvider"
          }
        }
      },
      "RealmClientOidcRequest": {
        "type": "object",
        "properties": {
          "auth_method": {
            "type": "string",
            "description": "How the client authenticates at the token endpoint. Omitted on create means NONE unless a secret is supplied; omitted on update keeps the current method.",
            "enum": [
              "NONE",
              "CLIENT_SECRET",
              "PRIVATE_KEY_JWT"
            ]
          },
          "client_secret": {
            "type": "string",
            "description": "Omit to have OSIE generate one for a CLIENT_SECRET client, or to keep the existing secret on update."
          },
          "require_proof_key": {
            "type": "boolean",
            "description": "Require PKCE, independent of `auth_method`. Omitted defaults to on for public clients."
          },
          "redirect_uris": {
            "type": "array",
            "description": "Required for the authorization_code grant. A wildcard is only allowed over the path of a fully-pinned scheme://host, e.g. `https://app.example/*`.",
            "items": {
              "type": "string",
              "description": "Required for the authorization_code grant. A wildcard is only allowed over the path of a fully-pinned scheme://host, e.g. `https://app.example/*`."
            }
          },
          "post_logout_redirect_uris": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "web_origins": {
            "type": "array",
            "description": "CORS allow-list. Entries may be origins, relative forms, `+` (derive from the redirect URIs) or `*`.",
            "items": {
              "type": "string",
              "description": "CORS allow-list. Entries may be origins, relative forms, `+` (derive from the redirect URIs) or `*`."
            }
          },
          "scopes": {
            "type": "array",
            "description": "Defaults to [openid, profile, email] on create.",
            "items": {
              "type": "string",
              "description": "Defaults to [openid, profile, email] on create."
            }
          },
          "grant_types": {
            "type": "array",
            "description": "Defaults to [authorization_code, refresh_token] on create.",
            "items": {
              "type": "string",
              "description": "Defaults to [authorization_code, refresh_token] on create."
            }
          },
          "jwk_set_url": {
            "type": "string",
            "description": "PRIVATE_KEY_JWT only. Where to fetch the client's JWKS to verify its assertion."
          },
          "linked_realm_id": {
            "type": "string",
            "description": "Register this client as a peer of another (broker) realm: PRIVATE_KEY_JWT verified against that realm's keys, and OSIE provisions the matching identity provider there."
          }
        },
        "description": "OpenID Connect settings. Omitted fields inside it keep their stored values, including the client secret."
      },
      "RealmClientUpdateRequest": {
        "type": "object",
        "properties": {
          "client_name": {
            "type": "string"
          },
          "root_url": {
            "type": "string",
            "description": "Anchor for the relative URL entries in the protocol block."
          },
          "require_consent": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean",
            "description": "Omitted keeps the client's current state, so a routine edit can't silently re-enable one that was turned off."
          },
          "oidc": {
            "$ref": "#/components/schemas/RealmClientOidcRequest"
          }
        }
      },
      "ApiEntityResponseRealmClient": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RealmClient"
          }
        }
      },
      "ProjectUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "ApiEntityResponseProject": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Project"
          }
        }
      },
      "Member": {
        "type": "object",
        "properties": {
          "sub": {
            "type": "string"
          }
        }
      },
      "OpenStackProjectProvisioningDetails": {
        "type": "object",
        "properties": {
          "openstack_project_id": {
            "type": "string"
          },
          "openstack_domain_id": {
            "type": "string"
          }
        }
      },
      "Project": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ENABLED",
              "DISABLED",
              "SCHEDULED_FOR_DELETION",
              "DELETE_IN_PROGRESS"
            ]
          },
          "organization_id": {
            "type": "string"
          },
          "realm_id": {
            "type": "string"
          },
          "billing_profile_id": {
            "type": "string"
          },
          "provisioned_services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProvisionedService"
            }
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Member"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "ProvisionedService": {
        "type": "object",
        "properties": {
          "service_id": {
            "type": "string"
          },
          "openstack": {
            "$ref": "#/components/schemas/OpenStackProjectProvisioningDetails"
          }
        }
      },
      "PricePlanRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "access_mode": {
            "type": "string",
            "description": "PUBLIC (applied to all profiles) or SCOPED (assigned explicitly). Defaults to PUBLIC.",
            "enum": [
              "PUBLIC",
              "SCOPED"
            ]
          },
          "service_providers": {
            "type": "array",
            "description": "The cloud service providers this plan is scoped to. Omit for all providers.",
            "items": {
              "$ref": "#/components/schemas/ServiceProvider"
            }
          }
        }
      },
      "ServiceProvider": {
        "type": "object",
        "properties": {
          "service_id": {
            "type": "string",
            "description": "ID of the service provider (external service)."
          },
          "region": {
            "type": "string"
          }
        },
        "description": "The cloud service providers this plan is scoped to. Omit for all providers."
      },
      "ApiEntityResponsePricePlan": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PricePlan"
          }
        }
      },
      "PricePlan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "access_mode": {
            "type": "string",
            "description": "Whether the plan is PUBLIC (applied to all profiles) or SCOPED (assigned explicitly).",
            "enum": [
              "PUBLIC",
              "SCOPED"
            ]
          },
          "service_providers": {
            "type": "array",
            "description": "The cloud service providers this plan is scoped to. Empty/absent means all providers.",
            "items": {
              "$ref": "#/components/schemas/ServiceProvider"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "OrganizationUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "billing_profile_id": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
              "example": "{\"crm_account_id\":\"ACC-123\"}"
            },
            "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
            "example": {
              "crm_account_id": "ACC-123"
            }
          }
        }
      },
      "ApiEntityResponseOrganization": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Organization"
          }
        }
      },
      "Organization": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "realm_id": {
            "type": "string",
            "description": "The realm this organization belongs to."
          },
          "billing_profile_id": {
            "type": "string",
            "description": "The billing profile associated with this organization."
          },
          "billing_enabled": {
            "type": "boolean",
            "description": "Whether billing runs for this organization. It does while a billing profile is attached; without one, its members see no prices, bills or credits."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer.",
              "example": "{\"crm_account_id\":\"ACC-123\"}"
            },
            "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer.",
            "example": {
              "crm_account_id": "ACC-123"
            }
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Member"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UpdateMemberRoleRequest": {
        "required": [
          "role"
        ],
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "description": "The new role for the member: a built-in role, or the name of a custom role defined on the organization. Case-insensitive."
          }
        }
      },
      "ApiEntityResponseMember": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Member"
          }
        }
      },
      "OrganizationBillingProfileRequest": {
        "required": [
          "billing_profile_id"
        ],
        "type": "object",
        "properties": {
          "billing_profile_id": {
            "type": "string",
            "description": "The billing profile to bill the organization to. It must be unowned or already belong to this organization."
          }
        }
      },
      "OpenstackDomainMappingUpdateRequest": {
        "type": "object",
        "properties": {
          "domain": {
            "$ref": "#/components/schemas/OpenstackDomainRef"
          },
          "identity_strategy": {
            "type": "string",
            "enum": [
              "AUTO_PROVISION",
              "KEYSTONE_FEDERATION",
              "KEYSTONE_CREDENTIALS"
            ]
          },
          "keystone_federation": {
            "$ref": "#/components/schemas/OpenstackKeystoneFederation"
          }
        }
      },
      "OpenstackDomainRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Keystone domain id, as it exists on that cloud."
          },
          "name": {
            "type": "string",
            "description": "Keystone domain name, read from the cloud when the mapping is written. Absent when that keystone could not be reached at the time.",
            "readOnly": true
          }
        },
        "description": "Moving the mapping to a different domain is refused while projects are provisioned in the current one and no other mapping covers it."
      },
      "OpenstackKeystoneFederation": {
        "required": [
          "identity_provider_id",
          "protocol_id"
        ],
        "type": "object",
        "properties": {
          "identity_provider_id": {
            "type": "string",
            "description": "Id of the Keystone OS-FEDERATION identity provider the WebSSO bounce targets — the `identity_providers/<id>` segment of the WebSSO URL."
          },
          "protocol_id": {
            "type": "string",
            "description": "The Keystone protocol id. Operator-defined — not necessarily `openid`."
          }
        },
        "description": "Replaces the federation target when present."
      },
      "ApiEntityResponseOpenstackDomainMapping": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OpenstackDomainMapping"
          }
        }
      },
      "OpenstackDomainMapping": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "service_provider_id": {
            "type": "string",
            "description": "The cloud service provider this mapping applies to."
          },
          "realm_id": {
            "type": "string"
          },
          "identity_provider_id": {
            "type": "string",
            "description": "Identity provider on that realm. Absent = the realm's match-all default."
          },
          "domain": {
            "$ref": "#/components/schemas/OpenstackDomainRef"
          },
          "identity_strategy": {
            "type": "string",
            "description": "How an authenticated user becomes an OpenStack identity in this domain.",
            "enum": [
              "AUTO_PROVISION",
              "KEYSTONE_FEDERATION",
              "KEYSTONE_CREDENTIALS"
            ]
          },
          "keystone_federation": {
            "$ref": "#/components/schemas/OpenstackKeystoneFederation"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CategoryFlavorRequest": {
        "required": [
          "flavor_name"
        ],
        "type": "object",
        "properties": {
          "flavor_name": {
            "type": "string",
            "description": "The provider-side flavor name, e.g. y1.small."
          },
          "order_number": {
            "type": "integer",
            "format": "int32"
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlavorValueRequest"
            }
          }
        },
        "description": "The flavors in this category, by provider-side flavor name."
      },
      "FlavorAttributeRequest": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "display_name": {
            "type": "string"
          },
          "order_number": {
            "type": "integer",
            "format": "int32"
          },
          "predefined": {
            "type": "boolean",
            "description": "Whether the attribute is one of the built-in ones. Defaults to false."
          }
        },
        "description": "The attributes displayed for the flavors in this category."
      },
      "FlavorCategoryRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Customer-facing name of the category."
          },
          "description": {
            "type": "string",
            "description": "Free-text description."
          },
          "order_number": {
            "type": "integer",
            "description": "Sort position relative to the other categories. Defaults to 0.",
            "format": "int32"
          },
          "bare_metal": {
            "type": "boolean",
            "description": "Whether this category holds bare-metal flavors. Defaults to false."
          },
          "kubernetes": {
            "type": "boolean",
            "description": "Whether the flavors are offered for Kubernetes node pools. Defaults to false."
          },
          "flavors": {
            "type": "array",
            "description": "The flavors in this category, by provider-side flavor name.",
            "items": {
              "$ref": "#/components/schemas/CategoryFlavorRequest"
            }
          },
          "flavor_attributes": {
            "type": "array",
            "description": "The attributes displayed for the flavors in this category.",
            "items": {
              "$ref": "#/components/schemas/FlavorAttributeRequest"
            }
          }
        }
      },
      "FlavorValueRequest": {
        "required": [
          "attribute_key"
        ],
        "type": "object",
        "properties": {
          "attribute_key": {
            "type": "string"
          },
          "value": {
            "type": "object"
          }
        }
      },
      "ApiEntityResponseFlavorCategory": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FlavorCategory"
          }
        }
      },
      "CategoryFlavor": {
        "type": "object",
        "properties": {
          "flavor_name": {
            "type": "string",
            "description": "The provider-side flavor name, e.g. y1.small."
          },
          "order_number": {
            "type": "integer",
            "format": "int32"
          },
          "values": {
            "type": "array",
            "description": "Values for this category's declared attributes.",
            "items": {
              "$ref": "#/components/schemas/FlavorValue"
            }
          }
        },
        "description": "The flavors in this category, by provider-side flavor name."
      },
      "FlavorAttribute": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "display_name": {
            "type": "string"
          },
          "order_number": {
            "type": "integer",
            "format": "int32"
          },
          "predefined": {
            "type": "boolean",
            "description": "Whether the attribute is one of the built-in ones rather than admin-defined."
          }
        },
        "description": "The attributes displayed for the flavors in this category."
      },
      "FlavorCategory": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "order_number": {
            "type": "integer",
            "description": "Sort position of this category relative to the others.",
            "format": "int32"
          },
          "bare_metal": {
            "type": "boolean",
            "description": "Whether this category holds bare-metal flavors. A flavor name belongs to bare-metal categories or to non-bare-metal ones, never to both."
          },
          "kubernetes": {
            "type": "boolean",
            "description": "Whether the flavors in this category are offered for Kubernetes node pools."
          },
          "flavors": {
            "type": "array",
            "description": "The flavors in this category, by provider-side flavor name.",
            "items": {
              "$ref": "#/components/schemas/CategoryFlavor"
            }
          },
          "flavor_attributes": {
            "type": "array",
            "description": "The attributes displayed for the flavors in this category.",
            "items": {
              "$ref": "#/components/schemas/FlavorAttribute"
            }
          }
        }
      },
      "FlavorValue": {
        "type": "object",
        "properties": {
          "attribute_key": {
            "type": "string",
            "description": "Key of the attribute this value belongs to."
          },
          "value": {
            "type": "object"
          }
        },
        "description": "Values for this category's declared attributes."
      },
      "CustomResourceCreateRequest": {
        "required": [
          "custom_resource_type",
          "project_id"
        ],
        "type": "object",
        "properties": {
          "custom_resource_type": {
            "type": "string",
            "description": "The id of the custom resource type to instantiate."
          },
          "project_id": {
            "type": "string",
            "description": "The project to bill the resource against."
          },
          "service_id": {
            "type": "string",
            "description": "The external service the resource is billed under. Defaults to the derived-from service when omitted."
          },
          "derived_from": {
            "$ref": "#/components/schemas/DerivedFrom"
          },
          "display_name": {
            "type": "string",
            "description": "Customer-facing name for the bill line."
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "description": "Optional attribute snapshot of the base resource, for rules that filter or tier on it."
            },
            "description": "Optional attribute snapshot of the base resource, for rules that filter or tier on it."
          },
          "expires_at": {
            "type": "string",
            "description": "When the resource stops being billed. Omit for a resource that never expires.",
            "format": "date-time"
          }
        }
      },
      "DerivedFrom": {
        "type": "object",
        "properties": {
          "service_id": {
            "type": "string",
            "description": "The real (provider-backed) external service the base resource lives on."
          },
          "resource_external_id": {
            "type": "string",
            "description": "The base resource's provider-side id."
          }
        },
        "description": "Optional base resource this custom resource derives from; omit for a standalone resource."
      },
      "ApiEntityResponseCustomResource": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CustomResource"
          }
        }
      },
      "CustomResource": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "custom_resource_type": {
            "type": "string",
            "description": "The id of the custom resource type this is an instance of."
          },
          "project_id": {
            "type": "string",
            "description": "The project this resource is billed against."
          },
          "service_id": {
            "type": "string",
            "description": "The platform-managed CUSTOM external service the resource belongs to."
          },
          "derived_from": {
            "$ref": "#/components/schemas/DerivedFrom"
          },
          "display_name": {
            "type": "string",
            "description": "Customer-facing name for the bill line."
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "description": "Optional attribute snapshot of the base resource, for rules that filter or tier on it."
            },
            "description": "Optional attribute snapshot of the base resource, for rules that filter or tier on it."
          },
          "expires_at": {
            "type": "string",
            "description": "When the resource stops being billed. Null means it never expires.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CustomResourceAttribute": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The attribute key rules filter and price on, e.g. license_version."
          },
          "display_name": {
            "type": "string",
            "description": "Human-readable label for the attribute."
          },
          "type": {
            "type": "string",
            "description": "The value type: string, number or boolean.",
            "example": "string"
          },
          "is_usage": {
            "type": "boolean",
            "description": "Whether the attribute is a usage metric."
          },
          "values": {
            "type": "array",
            "description": "Optional allowed values, for an attribute that must be one of a fixed set.",
            "items": {
              "$ref": "#/components/schemas/Value"
            }
          }
        },
        "description": "The type's own attributes, offered for rule authoring."
      },
      "CustomResourceTypeRequest": {
        "required": [
          "display_name",
          "resource_type",
          "service_id"
        ],
        "type": "object",
        "properties": {
          "resource_type": {
            "pattern": "^[a-z][a-z0-9_]*$",
            "type": "string",
            "description": "The type's own resource type / billing key, e.g. windows_license. Immutable once in use."
          },
          "display_name": {
            "type": "string",
            "description": "Customer-facing name shown in pricing and on the bill."
          },
          "service_id": {
            "type": "string",
            "description": "The platform-managed CUSTOM external service this type belongs to."
          },
          "derived_resource_type": {
            "type": "string",
            "description": "The provider-backed resource type this derives from. Omit for a standalone type."
          },
          "attributes": {
            "type": "array",
            "description": "The type's own attributes, offered for rule authoring.",
            "items": {
              "$ref": "#/components/schemas/CustomResourceAttribute"
            }
          },
          "description": {
            "type": "string",
            "description": "Free-text description."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the type is billed. Defaults to true."
          }
        }
      },
      "Value": {
        "required": [
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "The stored value."
          },
          "display_name": {
            "type": "string",
            "description": "Human-readable label for the value."
          }
        },
        "description": "Optional allowed values, for an attribute that must be one of a fixed set."
      },
      "ApiEntityResponseCustomResourceType": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CustomResourceType"
          }
        }
      },
      "CustomResourceType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "resource_type": {
            "type": "string",
            "description": "The type's own resource type / billing key, e.g. windows_license."
          },
          "display_name": {
            "type": "string",
            "description": "Customer-facing name shown in pricing and on the bill."
          },
          "service_id": {
            "type": "string",
            "description": "The platform-managed CUSTOM external service this type belongs to."
          },
          "derived_resource_type": {
            "type": "string",
            "description": "The provider-backed resource type this derives from. Null for a standalone type."
          },
          "attributes": {
            "type": "array",
            "description": "The type's own attributes, offered for rule authoring.",
            "items": {
              "$ref": "#/components/schemas/CustomResourceAttribute"
            }
          },
          "description": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the type is billed. A disabled type's instances are not charged."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BillingProfileRequest": {
        "required": [
          "address",
          "city",
          "country",
          "currency",
          "email",
          "first_name",
          "last_name",
          "members"
        ],
        "type": "object",
        "properties": {
          "organization_id": {
            "type": "string",
            "description": "The ID of the organization to link this billing profile to. If not provided, an organization will be auto-created."
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Member"
            }
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "company": {
            "type": "boolean",
            "description": "Whether or not this Billing Profile is a Company.",
            "default": false
          },
          "company_name": {
            "type": "string"
          },
          "tax_number": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "zip_code": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "price_plan_configuration": {
            "$ref": "#/components/schemas/PricePlanConfig"
          },
          "tax_configuration": {
            "$ref": "#/components/schemas/TaxConfiguration"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Your own key/value references, e.g. the order the customer bills under. Visible to platform administrators only, unless you print a key on the customer's invoices or statements with {{metadata.<key>}} in their PDF templates. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
              "example": "{\"order_reference\":\"PO-2026-118\"}"
            },
            "description": "Your own key/value references, e.g. the order the customer bills under. Visible to platform administrators only, unless you print a key on the customer's invoices or statements with {{metadata.<key>}} in their PDF templates. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
            "example": {
              "order_reference": "PO-2026-118"
            }
          }
        }
      },
      "PricePlanConfig": {
        "type": "object",
        "properties": {
          "price_plan_ids": {
            "type": "array",
            "description": "IDs of the SCOPED price plans assigned to this billing profile. Leave empty to bill the profile using only the public price plans.",
            "items": {
              "type": "string",
              "description": "IDs of the SCOPED price plans assigned to this billing profile. Leave empty to bill the profile using only the public price plans."
            }
          },
          "include_public_price_plans": {
            "type": "boolean",
            "description": "Whether the public price plans are applied in addition to the assigned scoped plans. Defaults to true when omitted.",
            "default": true
          }
        },
        "description": "Optional price plan configuration. When omitted on create, the profile is billed using the public price plans. When omitted on update, the existing configuration is preserved."
      },
      "TaxConfiguration": {
        "type": "object",
        "properties": {
          "disable_automatic_tax_calculation": {
            "type": "boolean",
            "description": "When true, automatic tax calculation is disabled for this profile."
          },
          "tax_rule_id": {
            "type": "string",
            "description": "ID of the tax rule applied to this profile, when set."
          }
        },
        "description": "Optional tax configuration. When omitted on update, the existing configuration is preserved."
      },
      "ApiEntityResponseBillingProfile": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BillingProfile"
          }
        }
      },
      "BillingProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "organization_id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "NEW",
              "ACTIVE",
              "SUSPENDED",
              "SKIP",
              "DELETED"
            ]
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Member"
            }
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "company": {
            "type": "boolean",
            "description": "Whether or not this Billing Profile is a Company.",
            "default": false
          },
          "company_name": {
            "type": "string"
          },
          "tax_number": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "zip_code": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "price_plan_configuration": {
            "$ref": "#/components/schemas/PricePlanConfig"
          },
          "price_plans": {
            "type": "array",
            "description": "The price plans effectively applied to this billing profile, resolved from the assigned scoped plans and (when enabled) the public plans.",
            "items": {
              "$ref": "#/components/schemas/PricePlanRef"
            }
          },
          "tax_configuration": {
            "$ref": "#/components/schemas/TaxConfiguration"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Your own key/value references, e.g. the order the customer bills under. Visible to platform administrators only, unless you print a key on the customer's invoices or statements with {{metadata.<key>}} in their PDF templates.",
              "example": "{\"order_reference\":\"PO-2026-118\"}"
            },
            "description": "Your own key/value references, e.g. the order the customer bills under. Visible to platform administrators only, unless you print a key on the customer's invoices or statements with {{metadata.<key>}} in their PDF templates.",
            "example": {
              "order_reference": "PO-2026-118"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PricePlanRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "access_mode": {
            "type": "string",
            "description": "Whether the plan is PUBLIC (applied to all profiles) or SCOPED (assigned explicitly).",
            "enum": [
              "PUBLIC",
              "SCOPED"
            ]
          }
        },
        "description": "The price plans effectively applied to this billing profile, resolved from the assigned scoped plans and (when enabled) the public plans."
      },
      "WebhookEndpointCreateRequest": {
        "required": [
          "enabled_events",
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The HTTPS url events are POSTed to. Must resolve to a publicly routable address."
          },
          "enabled_events": {
            "type": "array",
            "description": "Event types to subscribe to. Use [\"*\"] for all of them. See GET /webhook_event_types for the catalogue.",
            "items": {
              "type": "string",
              "description": "Event types to subscribe to. Use [\"*\"] for all of them. See GET /webhook_event_types for the catalogue."
            }
          },
          "description": {
            "type": "string",
            "description": "Free-text label shown in the console and the audit trail."
          },
          "organization_id": {
            "type": "string",
            "description": "Restricts the endpoint to one organization's events. Omit for platform-wide."
          },
          "custom_headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Extra headers sent with every delivery (e.g. an Authorization bearer). Values are encrypted at rest and never returned."
            },
            "description": "Extra headers sent with every delivery (e.g. an Authorization bearer). Values are encrypted at rest and never returned."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Customer-defined key/value pairs, stored and echoed back untouched."
            },
            "description": "Customer-defined key/value pairs, stored and echoed back untouched."
          },
          "settings": {
            "$ref": "#/components/schemas/WebhookEndpointSettings"
          }
        }
      },
      "ApiEntityResponseWebhookDelivery": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebhookDelivery"
          }
        }
      },
      "Attempt": {
        "type": "object",
        "properties": {
          "attempt": {
            "type": "integer",
            "format": "int32"
          },
          "at": {
            "type": "string",
            "format": "date-time"
          },
          "duration_ms": {
            "type": "integer",
            "format": "int64"
          },
          "response_status": {
            "type": "integer",
            "description": "Null when the request failed before a response (timeout, DNS, TLS).",
            "format": "int32"
          },
          "response_body": {
            "type": "string",
            "description": "The consumer's response body, truncated."
          },
          "error_class": {
            "type": "string"
          },
          "error_message": {
            "type": "string"
          }
        }
      },
      "WebhookDelivery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "endpoint_id": {
            "type": "string",
            "description": "The id also sent as the webhook-id header, and the consumer's idempotency key."
          },
          "event_id": {
            "type": "string",
            "description": "The originating platform event id, carried in the payload as `id`."
          },
          "event_type": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "description": "PENDING, IN_FLIGHT, DELIVERED, FAILED or ABORTED."
          },
          "attempt": {
            "type": "integer",
            "description": "Attempts started so far.",
            "format": "int32"
          },
          "next_attempt_at": {
            "type": "string",
            "description": "When the next attempt becomes due. Null once the delivery is terminal.",
            "format": "date-time"
          },
          "trace_id": {
            "type": "string",
            "description": "W3C trace id, also sent as the traceparent header."
          },
          "payload": {
            "type": "string",
            "description": "The exact JSON body that was signed and sent."
          },
          "attempts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attempt"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "delivered_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UserCreateRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "User's email address. Upon the first SSO login to the system, the user will be automatically associated by the email address."
          },
          "sub": {
            "type": "string",
            "description": "The `sub` (subject) id of the user. If not set, a random value will be generated and used as a primary sub for the user. It is recommended to set this value to the existing sub from your IdP."
          },
          "realm_id": {
            "type": "string",
            "description": "The realm this user belongs to. Omitting it will fall back to the platform default realm."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
              "example": "{\"crm_contact_id\":\"C-8812\"}"
            },
            "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
            "example": {
              "crm_contact_id": "C-8812"
            }
          }
        }
      },
      "SavingsContractCreateRequest": {
        "required": [
          "billing_profile_id",
          "monthly_committed_amount",
          "savings_plan_id"
        ],
        "type": "object",
        "properties": {
          "billing_profile_id": {
            "type": "string",
            "description": "The billing profile the savings plan is applied to."
          },
          "savings_plan_id": {
            "type": "string",
            "description": "The savings plan to commit to. Must be an available plan."
          },
          "duration_months": {
            "minimum": 1,
            "type": "integer",
            "description": "Commitment length in months. Must match one of the plan's schedules.",
            "format": "int32"
          },
          "monthly_committed_amount": {
            "minimum": 0,
            "type": "number",
            "description": "The minimum monthly spend committed under this contract."
          },
          "paid_upfront": {
            "type": "boolean",
            "description": "Whether the commitment is paid upfront."
          },
          "start_date": {
            "type": "string",
            "description": "When the contract starts billing. Defaults to CURRENT_MONTH.",
            "enum": [
              "CURRENT_MONTH",
              "NEXT_MONTH"
            ]
          }
        }
      },
      "ApiEntityResponseSavingsContract": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SavingsContract"
          }
        }
      },
      "SavingsContract": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "billing_profile_id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "description": "ACTIVE, UNPAID, CANCELLED or EXPIRED.",
            "enum": [
              "ACTIVE",
              "UNPAID",
              "CANCELLED",
              "EXPIRED"
            ]
          },
          "savings_plan_id": {
            "type": "string"
          },
          "savings_plan_name": {
            "type": "string"
          },
          "duration_months": {
            "type": "integer",
            "description": "Commitment length in months.",
            "format": "int32"
          },
          "start_date": {
            "type": "string",
            "format": "date-time"
          },
          "end_date": {
            "type": "string",
            "format": "date-time"
          },
          "discount_rate": {
            "type": "number",
            "description": "The discount percentage applied by this contract."
          },
          "monthly_committed_amount": {
            "type": "number",
            "description": "The minimum monthly spend committed under this contract."
          },
          "paid_upfront": {
            "type": "boolean",
            "description": "Whether the commitment was paid upfront."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "RealmCreateRequest": {
        "required": [
          "name",
          "slug"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "pattern": "^[a-z0-9][a-z0-9-]{0,61}$",
            "type": "string",
            "description": "URL-safe identifier, immutable in practice — it appears in this realm's OIDC issuer."
          },
          "default_realm": {
            "type": "boolean",
            "description": "Make this the platform's default realm."
          },
          "disabled": {
            "type": "boolean",
            "description": "Create the realm already switched off, to be enabled once it is fully wired up."
          },
          "local_users": {
            "$ref": "#/components/schemas/RealmLocalUsers"
          },
          "login_page": {
            "$ref": "#/components/schemas/RealmLoginPage"
          },
          "session_policy": {
            "$ref": "#/components/schemas/RealmSessionPolicy"
          },
          "admission_policy": {
            "type": "string",
            "description": "Whether a login for someone this realm has never seen may create an account. Covers the realm's identity providers and its social sign-in providers; local self-registration is governed by local_users.signup_enabled. Defaults to OPEN.",
            "enum": [
              "OPEN",
              "CLAIM_MAPPED",
              "MANUAL"
            ]
          },
          "self_service": {
            "$ref": "#/components/schemas/RealmSelfService"
          }
        }
      },
      "RealmIdentityProviderCreateRequest": {
        "required": [
          "display_name"
        ],
        "type": "object",
        "properties": {
          "display_name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean",
            "description": "Omitted means enabled on create, and leaves the current value alone on update — so a routine edit cannot silently re-enable a provider that was turned off."
          },
          "type": {
            "type": "string",
            "description": "Defaults to OIDC when omitted.",
            "enum": [
              "OIDC",
              "KEYSTONE_CREDENTIALS",
              "REALM"
            ]
          },
          "hide_on_login_page": {
            "type": "boolean"
          },
          "transient_users": {
            "type": "boolean",
            "description": "Federate without persisting a local user."
          },
          "oidc": {
            "$ref": "#/components/schemas/RealmIdentityProviderOidcRequest"
          },
          "keystone_credentials": {
            "$ref": "#/components/schemas/RealmIdentityProviderKeystoneCredentialsConfig"
          },
          "realm_link": {
            "$ref": "#/components/schemas/RealmIdentityProviderRealmLinkConfig"
          }
        }
      },
      "RealmClientCreateRequest": {
        "required": [
          "client_id"
        ],
        "type": "object",
        "properties": {
          "client_id": {
            "type": "string"
          },
          "client_name": {
            "type": "string"
          },
          "protocol": {
            "type": "string",
            "description": "Defaults to OPENID_CONNECT when omitted.",
            "enum": [
              "OPENID_CONNECT"
            ]
          },
          "root_url": {
            "type": "string",
            "description": "Anchor for the relative URL entries in the protocol block. A literal URL, or one of the `${authBaseUrl}` / `${authAdminUrl}` placeholders."
          },
          "require_consent": {
            "type": "boolean",
            "description": "Omitted on create means false; omitted on update leaves it unchanged."
          },
          "enabled": {
            "type": "boolean",
            "description": "Omitted on create means true; omitted on update leaves it unchanged, so it can't silently re-enable a disabled client."
          },
          "oidc": {
            "$ref": "#/components/schemas/RealmClientOidcRequest"
          }
        }
      },
      "ApiListResponseRealmClient": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RealmClient"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "Openstack": {
        "required": [
          "openstack_project_id"
        ],
        "type": "object",
        "properties": {
          "openstack_project_id": {
            "type": "string"
          },
          "openstack_domain_id": {
            "type": "string"
          }
        },
        "description": "(Optional) Specify an existing OpenStack project to be adopted by Osie. Otherwise, a new OpenStack project will be created on the specified Service Provider."
      },
      "ProjectCreateRequest": {
        "required": [
          "name",
          "organization_id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "organization_id": {
            "type": "string"
          },
          "billing_profile_id": {
            "type": "string"
          },
          "provision": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectProvisionSpec"
            }
          }
        }
      },
      "ProjectProvisionSpec": {
        "required": [
          "service"
        ],
        "type": "object",
        "properties": {
          "service": {
            "$ref": "#/components/schemas/ProvisionService"
          },
          "users": {
            "type": "array",
            "description": "(Optional) Users to grant access to this project's cloud. Each listed user is given a dedicated managed OpenStack account and assigned the project roles immediately. Omit or leave empty to skip — a user then gains OpenStack access automatically the first time they sign in to the dashboard, with roles attached to the identity they sign in with.",
            "items": {
              "$ref": "#/components/schemas/UserProvision"
            }
          }
        }
      },
      "ProvisionService": {
        "required": [
          "service_provider_id"
        ],
        "type": "object",
        "properties": {
          "service_provider_id": {
            "type": "string"
          },
          "openstack": {
            "$ref": "#/components/schemas/Openstack"
          }
        }
      },
      "UserProvision": {
        "required": [
          "sub"
        ],
        "type": "object",
        "properties": {
          "sub": {
            "type": "string",
            "description": "Subject (sub) of the user to provision. A dedicated managed OpenStack user is created for this sub on the project's cloud and granted the project roles. Omit the enclosing users[] to skip and let the user gain access on their first dashboard sign-in instead."
          }
        },
        "description": "(Optional) Users to grant access to this project's cloud. Each listed user is given a dedicated managed OpenStack account and assigned the project roles immediately. Omit or leave empty to skip — a user then gains OpenStack access automatically the first time they sign in to the dashboard, with roles attached to the identity they sign in with."
      },
      "ProjectProvisionRequest": {
        "required": [
          "provision"
        ],
        "type": "object",
        "properties": {
          "provision": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectProvisionSpec"
            }
          }
        }
      },
      "OrganizationCreateRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "realm_id": {
            "type": "string",
            "description": "The realm this organization belongs to. Omitting it will fall back to the platform default realm."
          },
          "owner_sub": {
            "type": "string",
            "description": "The `sub` of the user to assign as the owner."
          },
          "billing_profile_id": {
            "type": "string",
            "description": "Link an existing billing profile to this organization."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
              "example": "{\"crm_account_id\":\"ACC-123\"}"
            },
            "description": "Your own key/value references, e.g. the matching id in your CRM. Visible to platform administrators only, never to the customer. Up to 20 entries; keys up to 64 characters of letters, digits, '_' and '-'; values up to 256 characters. Replaces the stored metadata as a whole: omit it to keep what is stored, send {} to clear it.",
            "example": {
              "crm_account_id": "ACC-123"
            }
          }
        }
      },
      "AddMemberRequest": {
        "required": [
          "role",
          "sub"
        ],
        "type": "object",
        "properties": {
          "sub": {
            "type": "string",
            "description": "The `sub` of the user to add as a member."
          },
          "role": {
            "type": "string",
            "description": "The role to assign to the member: a built-in role, or the name of a custom role defined on the organization. Case-insensitive."
          }
        }
      },
      "OpenstackDomainMappingCreateRequest": {
        "required": [
          "domain",
          "realm_id",
          "service_provider_id"
        ],
        "type": "object",
        "properties": {
          "service_provider_id": {
            "type": "string",
            "description": "The cloud service provider hosting the domain."
          },
          "realm_id": {
            "type": "string"
          },
          "identity_provider_id": {
            "type": "string",
            "description": "Identity provider on that realm. Omit to make this the realm's match-all default on this cloud."
          },
          "domain": {
            "$ref": "#/components/schemas/OpenstackDomainRef"
          },
          "identity_strategy": {
            "type": "string",
            "description": "Defaults to AUTO_PROVISION when omitted.",
            "enum": [
              "AUTO_PROVISION",
              "KEYSTONE_FEDERATION",
              "KEYSTONE_CREDENTIALS"
            ]
          },
          "keystone_federation": {
            "$ref": "#/components/schemas/OpenstackKeystoneFederation"
          }
        }
      },
      "IamResolveApiRequest": {
        "required": [
          "ResourcePattern",
          "Service"
        ],
        "type": "object",
        "properties": {
          "Service": {
            "type": "string",
            "description": "The registered service asking, for example `kubernetes`."
          },
          "ResourcePattern": {
            "type": "string",
            "description": "`*`, or a resource name whose segments may carry `*` and `?`."
          },
          "OrganizationId": {
            "type": "string",
            "description": "The organization to resolve. Taken from the resource pattern when omitted."
          }
        }
      },
      "ApiEntityResponseProjectAccess": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectAccess"
          }
        }
      },
      "Grant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "principalGroup": {
            "type": "string"
          },
          "policy": {
            "type": "string"
          },
          "statements": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          }
        }
      },
      "ProjectAccess": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "format": "int64"
          },
          "grants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Grant"
            }
          }
        }
      },
      "IamAuthorizeApiRequest": {
        "required": [
          "Action",
          "Principal",
          "Resource"
        ],
        "type": "object",
        "properties": {
          "Principal": {
            "type": "string",
            "description": "The subject the question is about — a user's `sub`."
          },
          "Action": {
            "type": "string",
            "description": "`<service>:<Action>`, for example `servicehub:GetKubeconfig`."
          },
          "Resource": {
            "type": "string",
            "description": "`urn:<service>:<scope>:<organization>:<type>/<path>`."
          },
          "Context": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "description": "Extra condition keys for this request. Global `iam:` keys are supplied by the platform and cannot be overridden.",
              "items": {
                "type": "string",
                "description": "Extra condition keys for this request. Global `iam:` keys are supplied by the platform and cannot be overridden."
              }
            },
            "description": "Extra condition keys for this request. Global `iam:` keys are supplied by the platform and cannot be overridden."
          }
        }
      },
      "ApiEntityResponseIamDecision": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/IamDecision"
          }
        }
      },
      "IamDecision": {
        "type": "object",
        "properties": {
          "Decision": {
            "type": "string",
            "enum": [
              "ALLOW",
              "DENY",
              "NO_DECISION"
            ]
          },
          "MatchedPolicy": {
            "type": "string"
          },
          "MatchedSid": {
            "type": "string"
          },
          "allow": {
            "type": "boolean"
          },
          "noDecision": {
            "type": "boolean"
          },
          "deny": {
            "type": "boolean"
          }
        }
      },
      "AccountCreditCreateRequest": {
        "required": [
          "amount",
          "billing_profile_id"
        ],
        "type": "object",
        "properties": {
          "billing_profile_id": {
            "type": "string"
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The initial amount of the account credit."
          }
        }
      },
      "AccountCredit": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "billing_profile_id": {
            "type": "string"
          },
          "initial_amount": {
            "type": "number",
            "description": "The initial amount that was deposited with this account credit."
          },
          "amount": {
            "type": "number",
            "description": "The remaining amount that can be consumed from this account credit."
          },
          "currency": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ApiEntityResponseAccountCredit": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AccountCredit"
          }
        }
      },
      "BillStatusUpdateRequest": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "The new status of the bill. Currently only PAID is accepted, and only for a bill that is in SENT status.",
            "enum": [
              "OPEN",
              "SENT",
              "PAID",
              "PAID"
            ]
          }
        }
      },
      "ApiEntityResponseBill": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Bill"
          }
        }
      },
      "Bill": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "SENT",
              "PAID"
            ]
          },
          "currency": {
            "type": "string"
          },
          "billing_profile_id": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillItem"
            }
          },
          "item_categories": {
            "type": "array",
            "description": "Net totals grouped by resource category (Compute, Networking, Block Storage, Object Storage, Backup, DBaaS, Other). Present when the bill has items.",
            "items": {
              "$ref": "#/components/schemas/ItemCategory"
            }
          },
          "start_date": {
            "type": "string",
            "description": "Start of the billing cycle.",
            "format": "date-time"
          },
          "end_date": {
            "type": "string",
            "description": "End of the billing cycle.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BillItem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "resource_id": {
            "type": "string",
            "description": "ID of the actual resource being billed."
          },
          "correlation_id": {
            "type": "string",
            "description": "ID of the source resource shared by all items split from it (e.g. a datastore). Use it to group related items on the bill statement. Null when the resource is not split."
          },
          "project_id": {
            "type": "string",
            "description": "The project ID of the resource."
          },
          "resource_type": {
            "type": "string",
            "description": "The type of the resource"
          },
          "category": {
            "type": "string",
            "description": "The resource category this item belongs to (Compute, Networking, Block Storage, Object Storage, Backup, DBaaS, Other).",
            "enum": [
              "COMPUTE",
              "NETWORKING",
              "BLOCK_STORAGE",
              "OBJECT_STORAGE",
              "BACKUP",
              "DBAAS",
              "OTHER"
            ]
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "description": "Attributes of the resource"
            },
            "description": "Attributes of the resource"
          },
          "currency": {
            "type": "string"
          },
          "amount": {
            "type": "number",
            "description": "The amount  this item was billed, represented in the item currency. If the Bill is still OPEN, this is the amount from the Bill startDate till the current moment."
          },
          "applied_price_plan_rules": {
            "type": "array",
            "description": "Per-attribute price breakdown of this item — how each priced attribute contributed to the amount. Empty when the item has no displayable breakdown (e.g. it is billed solely by existence).",
            "items": {
              "$ref": "#/components/schemas/BillItemAppliedPricePlanRule"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "Updates every time there is a new change on this item, such as amount or attributes.",
            "format": "date-time"
          }
        }
      },
      "BillItemAppliedPricePlanRule": {
        "type": "object",
        "properties": {
          "price_plan_rule_id": {
            "type": "string",
            "description": "Id of the price plan rule that produced this charge, for correlation via the pricing APIs."
          },
          "attribute_name": {
            "type": "string",
            "description": "Machine-readable key of the priced attribute."
          },
          "last_attribute_value": {
            "type": "object",
            "description": "Resource units of this attribute that were priced — its last known value (e.g. the number of vcpus or GB of ram)."
          },
          "amount": {
            "type": "number",
            "description": "The amount this attribute contributed to the item total, in the item currency."
          }
        },
        "description": "Per-attribute price breakdown of this item — how each priced attribute contributed to the amount. Empty when the item has no displayable breakdown (e.g. it is billed solely by existence)."
      },
      "ItemCategory": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "The resource category.",
            "enum": [
              "COMPUTE",
              "NETWORKING",
              "BLOCK_STORAGE",
              "OBJECT_STORAGE",
              "BACKUP",
              "DBAAS",
              "OTHER"
            ]
          },
          "amount": {
            "type": "number",
            "description": "Net amount billed for this category, in the bill currency."
          },
          "currency": {
            "type": "string"
          }
        },
        "description": "Net totals grouped by resource category (Compute, Networking, Block Storage, Object Storage, Backup, DBaaS, Other). Present when the bill has items."
      },
      "ApiListResponseWebhookEventTypeInfo": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventTypeInfo"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "Attribute": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The key as it appears in the payload."
          },
          "type": {
            "type": "string",
            "description": "STRING, NUMBER, BOOLEAN or TIMESTAMP."
          },
          "required": {
            "type": "boolean",
            "description": "False when the field is omitted rather than sent as null."
          },
          "description": {
            "type": "string"
          }
        },
        "description": "The fields carried in the payload's `data.attributes` for this event."
      },
      "WebhookEventTypeInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The event type, e.g. `project.created`. Also the id."
          },
          "resource_type": {
            "type": "string",
            "description": "The kind of resource the event concerns."
          },
          "attributes": {
            "type": "array",
            "description": "The fields carried in the payload's `data.attributes` for this event.",
            "items": {
              "$ref": "#/components/schemas/Attribute"
            }
          }
        }
      },
      "ApiListResponseWebhookEndpoint": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEndpoint"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseWebhookDelivery": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookDelivery"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseUser": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/User"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseResourceUsage": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceUsage"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "Location": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string"
          },
          "service_id": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "external_id": {
            "type": "string"
          }
        }
      },
      "ResourceUsage": {
        "type": "object",
        "properties": {
          "resource_id": {
            "type": "string"
          },
          "resource_type": {
            "type": "string"
          },
          "location": {
            "$ref": "#/components/schemas/Location"
          },
          "from": {
            "type": "string",
            "description": "When counting started: the resource's first state in the window, clipped to the window's start.",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "description": "When counting stopped: `deleted_at` when the resource was deleted inside the window (and not seen again), else the end of the window, the requested `to` capped at now.",
            "format": "date-time"
          },
          "existed_seconds": {
            "type": "integer",
            "description": "Seconds the resource existed inside the window, all states summed.",
            "format": "int64"
          },
          "deleted_at": {
            "type": "string",
            "description": "When the resource stopped existing, if that happened inside the window.",
            "format": "date-time"
          },
          "deleted_at_estimated": {
            "type": "boolean",
            "description": "True when `deleted_at` is when Osie found the resource gone rather than when it was deleted, so `to`, the last state's `to` and `existed_seconds` may run past the deletion by up to the reconciliation interval (an hour by default). Absent when the deletion time is exact or there is no deletion."
          },
          "states": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceUsageState"
            }
          }
        }
      },
      "ResourceUsageState": {
        "type": "object",
        "properties": {
          "seq": {
            "type": "integer",
            "format": "int32"
          },
          "from": {
            "type": "string",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "format": "date-time"
          },
          "seconds": {
            "type": "integer",
            "format": "int64"
          },
          "estimated": {
            "type": "boolean",
            "description": "True when `from` is a detection time rather than the commit time."
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "description": "On the resource's first state, every billing attribute in force — what a price plan rates. On every later state, only the attributes that changed against the previous state, at their new value; a removed attribute is null."
            },
            "description": "On the resource's first state, every billing attribute in force — what a price plan rates. On every later state, only the attributes that changed against the previous state, at their new value; a removed attribute is null."
          }
        }
      },
      "ApiListResponseServiceProvider": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceProvider"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiEntityResponseServiceProvider": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ServiceProvider"
          }
        }
      },
      "ApiListResponseSavingsPlan": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SavingsPlan"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "Filter": {
        "type": "object",
        "properties": {
          "attribute_name": {
            "type": "string"
          },
          "operator": {
            "type": "string"
          },
          "value": {
            "type": "object"
          },
          "values": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "SavingsPlan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "available": {
            "type": "boolean",
            "description": "Whether the savings plan is currently available for new commitments."
          },
          "description": {
            "type": "string"
          },
          "access_mode": {
            "type": "string",
            "description": "Whether the plan is PUBLIC (offered to all profiles) or SCOPED (assigned explicitly).",
            "enum": [
              "PUBLIC",
              "SCOPED"
            ]
          },
          "targets": {
            "type": "array",
            "description": "The resource types this plan applies to, with optional attribute filters.",
            "items": {
              "$ref": "#/components/schemas/Target"
            }
          },
          "saving_schedule": {
            "type": "array",
            "description": "The commitment durations offered, each with its discount tiers.",
            "items": {
              "$ref": "#/components/schemas/Schedule"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Schedule": {
        "type": "object",
        "properties": {
          "duration_months": {
            "type": "integer",
            "description": "Commitment length in months (e.g. 12, 24, 36).",
            "format": "int32"
          },
          "max_amount": {
            "type": "number",
            "description": "Maximum monthly committed amount allowed for this duration."
          },
          "no_upfront_tiers": {
            "type": "array",
            "description": "Discount tiers when paying as you go.",
            "items": {
              "$ref": "#/components/schemas/Tier"
            }
          },
          "upfront_tiers": {
            "type": "array",
            "description": "Discount tiers when paying upfront.",
            "items": {
              "$ref": "#/components/schemas/Tier"
            }
          }
        },
        "description": "The commitment durations offered, each with its discount tiers."
      },
      "Target": {
        "type": "object",
        "properties": {
          "resource_type": {
            "type": "string"
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Filter"
            }
          }
        },
        "description": "The resource types this plan applies to, with optional attribute filters."
      },
      "Tier": {
        "type": "object",
        "properties": {
          "start_amount": {
            "type": "number",
            "description": "Minimum monthly committed amount for this tier to apply."
          },
          "discount": {
            "type": "number",
            "description": "Discount percentage applied at this tier."
          }
        },
        "description": "Discount tiers when paying upfront."
      },
      "ApiEntityResponseSavingsPlan": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SavingsPlan"
          }
        }
      },
      "ApiListResponseSavingsContract": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SavingsContract"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiEntityResponseSavingsPlanEligibility": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SavingsPlanEligibility"
          }
        }
      },
      "SavingsPlanEligibility": {
        "type": "object",
        "properties": {
          "billing_profile_id": {
            "type": "string"
          },
          "savings_plan_id": {
            "type": "string"
          },
          "eligible": {
            "type": "boolean",
            "description": "True when the billing profile can commit to the savings plan (no active contract exists for it yet)."
          }
        }
      },
      "ApiListResponseRealm": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Realm"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseRealmIdentityProvider": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RealmIdentityProvider"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponsePromotionalCredit": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PromotionalCredit"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "PromotionalCredit": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "billing_profile_id": {
            "type": "string"
          },
          "code": {
            "type": "string",
            "description": "The promo code that granted this credit."
          },
          "initial_amount": {
            "type": "number",
            "description": "The initial amount granted with this promotional credit."
          },
          "remaining_amount": {
            "type": "number",
            "description": "The remaining amount that can still be consumed."
          },
          "expiration_date": {
            "type": "string",
            "description": "When this promotional credit expires.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ApiEntityResponsePromotionalCredit": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PromotionalCredit"
          }
        }
      },
      "ApiListResponseProject": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Project"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponsePricePlan": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PricePlan"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseOrganization": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Organization"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseOpenstackDomainMapping": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpenstackDomainMapping"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "MetricChange": {
        "type": "object",
        "properties": {
          "rev": {
            "type": "integer",
            "description": "Monotonic revision; pass the last one of a fully consumed page back as `cursor`.",
            "format": "int64"
          },
          "metric": {
            "type": "string",
            "description": "The metric whose interval changed, as the query API names it (e.g. instance_cpu_seconds_total): re-query it."
          },
          "resource_id": {
            "type": "string",
            "description": "The Osie resource behind the series at `ts`, as the query API's `resource_id` label has it; absent when Osie knew no resource at that backend then."
          },
          "resource_type": {
            "type": "string"
          },
          "service_id": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "external_id": {
            "type": "string"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "The series' device labels (port, disk, …), as the query API returns them."
            },
            "description": "The series' device labels (port, disk, …), as the query API returns them."
          },
          "resolution": {
            "type": "string"
          },
          "ts": {
            "type": "string",
            "format": "date-time"
          },
          "span": {
            "type": "integer",
            "format": "int32"
          },
          "kind": {
            "type": "string",
            "description": "upsert or retract"
          }
        }
      },
      "MetricChanges": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetricChange"
            }
          },
          "cursor": {
            "type": "integer",
            "description": "The last revision of this page; equals the request's cursor when nothing settled changed.",
            "format": "int64"
          }
        }
      },
      "ApiEntityResponseFlavorCatalog": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FlavorCatalog"
          }
        }
      },
      "CatalogFlavor": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The provider-side flavor id. Unique only within its (service, region)."
          },
          "name": {
            "type": "string"
          },
          "vcpus": {
            "type": "integer",
            "format": "int32"
          },
          "ram_mb": {
            "type": "integer",
            "format": "int32"
          },
          "disk_gb": {
            "type": "integer",
            "format": "int32"
          },
          "ephemeral_gb": {
            "type": "integer",
            "format": "int32"
          },
          "swap_mb": {
            "type": "integer",
            "format": "int32"
          },
          "category_id": {
            "type": "string",
            "description": "The flavor category this flavor is assigned to, if any."
          },
          "category_name": {
            "type": "string"
          },
          "bare_metal": {
            "type": "boolean"
          },
          "price": {
            "$ref": "#/components/schemas/FlavorPrice"
          },
          "price_status": {
            "type": "string",
            "enum": [
              "PRICED",
              "UNPRICED",
              "BILLING_DISABLED"
            ]
          }
        }
      },
      "CatalogGroup": {
        "type": "object",
        "properties": {
          "service_id": {
            "type": "string",
            "description": "The cloud (external service) these flavors live on."
          },
          "service_name": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "price_plan_ids": {
            "type": "array",
            "description": "The price plans that produced the prices in this group — the customer's scoped plans plus the public ones, as their billing profile is configured. Empty when nothing priced this group.",
            "items": {
              "type": "string",
              "description": "The price plans that produced the prices in this group — the customer's scoped plans plus the public ones, as their billing profile is configured. Empty when nothing priced this group."
            }
          },
          "flavors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogFlavor"
            }
          }
        },
        "description": "One entry per (cloud, region) the catalog covers."
      },
      "FlavorCatalog": {
        "type": "object",
        "properties": {
          "catalog": {
            "type": "array",
            "description": "One entry per (cloud, region) the catalog covers.",
            "items": {
              "$ref": "#/components/schemas/CatalogGroup"
            }
          }
        }
      },
      "FlavorPrice": {
        "type": "object",
        "properties": {
          "hourly": {
            "$ref": "#/components/schemas/Money"
          },
          "monthly": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "description": "The estimate for this flavor. Absent unless price_status is PRICED."
      },
      "Money": {
        "type": "object",
        "properties": {
          "currency": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          }
        },
        "description": "Estimated cost of running this flavor for one month."
      },
      "ApiListResponseFlavorCategory": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlavorCategory"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseCustomResource": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomResource"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseCustomResourceType": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomResourceType"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "Address": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "addr": {
            "type": "string"
          },
          "macAddr": {
            "type": "string"
          }
        }
      },
      "Addresses": {
        "type": "object",
        "properties": {
          "addresses": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Address"
              }
            }
          }
        }
      },
      "AllowedAddressPair": {
        "type": "object",
        "properties": {
          "ipAddress": {
            "type": "string"
          },
          "macAddress": {
            "type": "string"
          }
        }
      },
      "ApiListResponseCloudResource": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CloudResource"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "BackupDatastore": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "version_id": {
            "type": "string"
          }
        }
      },
      "BackupLocation": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string"
          },
          "backup": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "backupDestination": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "backupDestinationType": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "status": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "statusInfo": {
            "type": "string"
          },
          "snapshotTime": {
            "type": "integer",
            "format": "int64"
          },
          "type": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "retentionHint": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "roleType": {
            "$ref": "#/components/schemas/VprotectRef"
          }
        }
      },
      "BarbicanContainer": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "created": {
            "type": "string"
          },
          "updated": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "container_ref": {
            "type": "string"
          },
          "secret_refs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecretRef"
            }
          },
          "creator_id": {
            "type": "string"
          }
        }
      },
      "BarbicanSecret": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "algorithm": {
            "type": "string"
          },
          "bit_length": {
            "type": "integer",
            "format": "int32"
          },
          "content_types": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "updated": {
            "type": "string",
            "format": "date-time"
          },
          "creator_id": {
            "type": "string"
          },
          "expiration": {
            "type": "string",
            "format": "date-time"
          },
          "mode": {
            "type": "string"
          },
          "secret_ref": {
            "type": "string"
          },
          "secret_type": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "payload": {
            "type": "string"
          },
          "payload_content_type": {
            "type": "string"
          },
          "payload_content_encoding": {
            "type": "string"
          }
        }
      },
      "CloudResource": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "project_id": {
            "type": "string",
            "description": "The project this resource belongs to. Null for user-scoped resources (see `userId`), which are attached to a user rather than a project."
          },
          "service_id": {
            "type": "string",
            "description": "The external service (cloud) this resource lives on."
          },
          "user_id": {
            "type": "string",
            "description": "The user this resource belongs to. Set for user-scoped resources — ones attached to a user rather than a project, such as application credentials, EC2 credentials and keypairs — where `projectId` is typically absent."
          },
          "external_id": {
            "type": "string",
            "description": "The provider-side id of the resource on the external cloud."
          },
          "type": {
            "type": "string",
            "description": "The kind of resource. Determines the shape of `data`.",
            "enum": [
              "SERVER",
              "BAREMETAL_SERVER",
              "VOLUME",
              "VOLUME_BACKUP",
              "VOLUME_SNAPSHOT",
              "IMAGE",
              "KEYPAIR",
              "DNS_ZONE",
              "KUBERNETES_CLUSTER",
              "LOAD_BALANCER",
              "FLOATING_IP",
              "NETWORK",
              "ROUTER",
              "BUCKET",
              "PORT",
              "SECURITY_GROUP",
              "SERVER_GROUP",
              "SUBNET",
              "APPLICATION_CREDENTIAL",
              "USER",
              "CREDENTIAL",
              "STACK",
              "SHARE",
              "SHARE_SNAPSHOT",
              "SHARE_NETWORK",
              "SHARE_GROUP",
              "SHARE_SNAPSHOT_GROUP",
              "SHARE_SECURITY_SERVICE",
              "VHI_CREDENTIALS",
              "VPN_SERVICE",
              "VPN_ENDPOINT_GROUP",
              "IKE_POLICY",
              "IPSEC_POLICY",
              "IPSEC_SITE_CONNECTION",
              "FIREWALL_GROUP",
              "FIREWALL_POLICY",
              "FIREWALL_RULE",
              "TRILIO_BACKUP_TARGET",
              "TRILIO_WORKLOAD",
              "TRILIO_SNAPSHOT",
              "TRILIO_RESTORE",
              "VPROTECT_INSTANCE",
              "VPROTECT_BACKUP",
              "BARBICAN_SECRET",
              "BARBICAN_CONTAINER",
              "DATABASE_INSTANCE",
              "DATABASE_CONFIGURATION",
              "DATABASE_BACKUP",
              "DATABASE_BACKUP_STRATEGY"
            ]
          },
          "region": {
            "type": "string",
            "description": "The cloud region the resource lives in."
          },
          "availability_zone": {
            "type": "string",
            "description": "The availability zone the resource lives in."
          },
          "data": {
            "type": "object",
            "description": "Type-specific payload. Its concrete shape is determined by `type` (e.g. SERVER -> DataServer, VOLUME -> DataVolume).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/DataServer"
              },
              {
                "$ref": "#/components/schemas/DataVolume"
              },
              {
                "$ref": "#/components/schemas/DataVolumeBackup"
              },
              {
                "$ref": "#/components/schemas/DataVolumeSnapshot"
              },
              {
                "$ref": "#/components/schemas/DataImage"
              },
              {
                "$ref": "#/components/schemas/DataKeypair"
              },
              {
                "$ref": "#/components/schemas/DataDns"
              },
              {
                "$ref": "#/components/schemas/DataCluster"
              },
              {
                "$ref": "#/components/schemas/DataLoadBalancer"
              },
              {
                "$ref": "#/components/schemas/DataFloatingIp"
              },
              {
                "$ref": "#/components/schemas/DataNetwork"
              },
              {
                "$ref": "#/components/schemas/DataRouter"
              },
              {
                "$ref": "#/components/schemas/DataBucket"
              },
              {
                "$ref": "#/components/schemas/DataPort"
              },
              {
                "$ref": "#/components/schemas/DataSecurityGroup"
              },
              {
                "$ref": "#/components/schemas/DataServerGroup"
              },
              {
                "$ref": "#/components/schemas/DataSubnet"
              },
              {
                "$ref": "#/components/schemas/DataApplicationCredential"
              },
              {
                "$ref": "#/components/schemas/DataUser"
              },
              {
                "$ref": "#/components/schemas/DataCredential"
              },
              {
                "$ref": "#/components/schemas/DataStack"
              },
              {
                "$ref": "#/components/schemas/DataShare"
              },
              {
                "$ref": "#/components/schemas/DataShareSnapshot"
              },
              {
                "$ref": "#/components/schemas/DataShareNetwork"
              },
              {
                "$ref": "#/components/schemas/DataShareGroup"
              },
              {
                "$ref": "#/components/schemas/DataShareSnapshotGroup"
              },
              {
                "$ref": "#/components/schemas/DataShareSecurityService"
              },
              {
                "$ref": "#/components/schemas/DataVhiCredentials"
              },
              {
                "$ref": "#/components/schemas/DataVPNService"
              },
              {
                "$ref": "#/components/schemas/DataVPNEndpointGroup"
              },
              {
                "$ref": "#/components/schemas/DataIKEPolicy"
              },
              {
                "$ref": "#/components/schemas/DataIPSecPolicy"
              },
              {
                "$ref": "#/components/schemas/DataIPSecSiteConnection"
              },
              {
                "$ref": "#/components/schemas/DataFirewallGroup"
              },
              {
                "$ref": "#/components/schemas/DataFirewallPolicy"
              },
              {
                "$ref": "#/components/schemas/DataFirewallRule"
              },
              {
                "$ref": "#/components/schemas/DataTrilioBackupTarget"
              },
              {
                "$ref": "#/components/schemas/DataTrilioWorkload"
              },
              {
                "$ref": "#/components/schemas/DataTrilioSnapshot"
              },
              {
                "$ref": "#/components/schemas/DataTrilioRestore"
              },
              {
                "$ref": "#/components/schemas/DataVprotectInstance"
              },
              {
                "$ref": "#/components/schemas/DataVprotectBackup"
              },
              {
                "$ref": "#/components/schemas/DataBarbicanSecret"
              },
              {
                "$ref": "#/components/schemas/DataBarbicanContainer"
              },
              {
                "$ref": "#/components/schemas/DataTrove"
              },
              {
                "$ref": "#/components/schemas/DataTroveConfiguration"
              },
              {
                "$ref": "#/components/schemas/DataTroveBackup"
              },
              {
                "$ref": "#/components/schemas/DataTroveBackupStrategy"
              }
            ]
          },
          "info": {
            "$ref": "#/components/schemas/CloudResourceInfo"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CloudResourceInfo": {
        "type": "object",
        "properties": {
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "Sync bookkeeping timestamps for the resource."
      },
      "ClusterInfo": {
        "type": "object",
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "MASTER",
              "WORKER"
            ]
          }
        }
      },
      "ConfigurationDatastore": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "version_id": {
            "type": "string"
          }
        }
      },
      "ConfigurationRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DPD": {
        "type": "object",
        "properties": {
          "timeout": {
            "type": "integer",
            "format": "int32"
          },
          "action": {
            "type": "string"
          },
          "interval": {
            "type": "string"
          }
        }
      },
      "DailySchedule": {
        "type": "object",
        "properties": {
          "retention": {
            "type": "integer",
            "format": "int32"
          },
          "backup_time": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "snapshot_type": {
            "type": "string"
          }
        }
      },
      "DataApplicationCredential": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "unrestricted": {
            "type": "boolean"
          }
        }
      },
      "DataBarbicanContainer": {
        "type": "object",
        "properties": {
          "container": {
            "$ref": "#/components/schemas/BarbicanContainer"
          }
        }
      },
      "DataBarbicanSecret": {
        "type": "object",
        "properties": {
          "secret": {
            "$ref": "#/components/schemas/BarbicanSecret"
          }
        }
      },
      "DataBucket": {
        "type": "object",
        "properties": {
          "bucketName": {
            "type": "string"
          },
          "sizeInGb": {
            "type": "number"
          },
          "sizeInBytes": {
            "type": "integer",
            "format": "int64"
          },
          "objectCount": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "DataCluster": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ACTIVE",
              "SUSPENDED",
              "DELETED",
              "ERROR"
            ]
          },
          "provider": {
            "type": "string",
            "enum": [
              "OPENSTACK_MAGNUM"
            ]
          },
          "cluster": {
            "$ref": "#/components/schemas/MagnumCluster"
          },
          "nodeGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MagnumNodeGroup"
            }
          }
        }
      },
      "DataCredential": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "secret": {
            "type": "string"
          },
          "access": {
            "type": "string"
          }
        }
      },
      "DataDns": {
        "type": "object",
        "properties": {
          "zone": {
            "$ref": "#/components/schemas/DesignateZone"
          },
          "externalId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "associatedTo": {
            "type": "string"
          },
          "edgeFrontendId": {
            "type": "string"
          }
        }
      },
      "DataFirewallGroup": {
        "type": "object",
        "properties": {
          "firewallGroup": {
            "$ref": "#/components/schemas/firewall_group"
          }
        }
      },
      "DataFirewallPolicy": {
        "type": "object",
        "properties": {
          "firewallPolicy": {
            "$ref": "#/components/schemas/firewall_policy"
          }
        }
      },
      "DataFirewallRule": {
        "type": "object",
        "properties": {
          "firewallRule": {
            "$ref": "#/components/schemas/firewall_rule"
          }
        }
      },
      "DataFloatingIp": {
        "type": "object",
        "properties": {
          "clusterInfo": {
            "$ref": "#/components/schemas/ClusterInfo"
          },
          "floatingIp": {
            "$ref": "#/components/schemas/floatingip"
          }
        }
      },
      "DataIKEPolicy": {
        "type": "object",
        "properties": {
          "ikePolicy": {
            "$ref": "#/components/schemas/ikepolicy"
          }
        }
      },
      "DataIPSecPolicy": {
        "type": "object",
        "properties": {
          "ipSecPolicy": {
            "$ref": "#/components/schemas/ipsecpolicy"
          }
        }
      },
      "DataIPSecSiteConnection": {
        "type": "object",
        "properties": {
          "ipSecSiteConnection": {
            "$ref": "#/components/schemas/ipsec_site_connection"
          }
        }
      },
      "DataImage": {
        "type": "object",
        "properties": {
          "image": {
            "$ref": "#/components/schemas/GlanceImage"
          }
        }
      },
      "DataKeypair": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "associatedTo": {
            "type": "string"
          },
          "publicKey": {
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          },
          "keypairName": {
            "type": "string"
          }
        }
      },
      "DataLoadBalancer": {
        "type": "object",
        "properties": {
          "loadBalancer": {
            "$ref": "#/components/schemas/loadbalancer"
          },
          "listeners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/listener"
            }
          },
          "pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/pool"
            }
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/member"
            }
          },
          "healthMonitors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/healthmonitor"
            }
          },
          "clusterInfo": {
            "$ref": "#/components/schemas/ClusterInfo"
          },
          "status": {
            "type": "string",
            "enum": [
              "DELETING"
            ]
          }
        }
      },
      "DataNetwork": {
        "type": "object",
        "properties": {
          "network": {
            "$ref": "#/components/schemas/network"
          },
          "clusterInfo": {
            "$ref": "#/components/schemas/ClusterInfo"
          },
          "networkName": {
            "type": "string"
          }
        }
      },
      "DataPort": {
        "type": "object",
        "properties": {
          "port": {
            "$ref": "#/components/schemas/port"
          }
        }
      },
      "DataRouter": {
        "type": "object",
        "properties": {
          "router": {
            "$ref": "#/components/schemas/router"
          },
          "interfaces": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/port"
            }
          }
        }
      },
      "DataSecurityGroup": {
        "type": "object",
        "properties": {
          "securityGroup": {
            "$ref": "#/components/schemas/security_group"
          }
        }
      },
      "DataServer": {
        "type": "object",
        "properties": {
          "server": {
            "$ref": "#/components/schemas/server"
          },
          "image": {
            "$ref": "#/components/schemas/GlanceImage"
          },
          "automatedBackup": {
            "type": "boolean"
          },
          "clusterInfo": {
            "$ref": "#/components/schemas/ClusterInfo"
          },
          "instanceMetadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "imageMetadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "imageMetadataVersion": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "DataServerGroup": {
        "type": "object",
        "properties": {
          "serverGroup": {
            "$ref": "#/components/schemas/server_group"
          },
          "name": {
            "type": "string"
          },
          "policy": {
            "type": "string"
          },
          "members": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "DataShare": {
        "type": "object",
        "properties": {
          "share": {
            "$ref": "#/components/schemas/share"
          }
        }
      },
      "DataShareGroup": {
        "type": "object",
        "properties": {
          "shareGroup": {
            "$ref": "#/components/schemas/share_group"
          }
        }
      },
      "DataShareNetwork": {
        "type": "object",
        "properties": {
          "shareNetwork": {
            "$ref": "#/components/schemas/share_network"
          }
        }
      },
      "DataShareSecurityService": {
        "type": "object",
        "properties": {
          "securityService": {
            "$ref": "#/components/schemas/security_service"
          }
        }
      },
      "DataShareSnapshot": {
        "type": "object",
        "properties": {
          "shareSnapshot": {
            "$ref": "#/components/schemas/snapshot"
          }
        }
      },
      "DataShareSnapshotGroup": {
        "type": "object",
        "properties": {
          "shareGroupSnapshot": {
            "$ref": "#/components/schemas/share_group_snapshot"
          }
        }
      },
      "DataStack": {
        "type": "object",
        "properties": {
          "stack": {
            "$ref": "#/components/schemas/stack"
          }
        }
      },
      "DataSubnet": {
        "type": "object",
        "properties": {
          "subnet": {
            "$ref": "#/components/schemas/subnet"
          }
        }
      },
      "DataTrilioBackupTarget": {
        "type": "object",
        "properties": {
          "backupTarget": {
            "$ref": "#/components/schemas/TrilioBackupTarget"
          }
        }
      },
      "DataTrilioRestore": {
        "type": "object",
        "properties": {
          "restore": {
            "$ref": "#/components/schemas/TrilioRestore"
          }
        }
      },
      "DataTrilioSnapshot": {
        "type": "object",
        "properties": {
          "snapshot": {
            "$ref": "#/components/schemas/TrilioSnapshot"
          }
        }
      },
      "DataTrilioWorkload": {
        "type": "object",
        "properties": {
          "workload": {
            "$ref": "#/components/schemas/TrilioWorkload"
          }
        }
      },
      "DataTrove": {
        "type": "object",
        "properties": {
          "instance": {
            "$ref": "#/components/schemas/instance"
          }
        }
      },
      "DataTroveBackup": {
        "type": "object",
        "properties": {
          "backup": {
            "$ref": "#/components/schemas/backup"
          }
        }
      },
      "DataTroveBackupStrategy": {
        "type": "object",
        "properties": {
          "strategy": {
            "$ref": "#/components/schemas/backup_strategy"
          }
        }
      },
      "DataTroveConfiguration": {
        "type": "object",
        "properties": {
          "configuration": {
            "$ref": "#/components/schemas/configuration"
          }
        }
      },
      "DataUser": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "DataVPNEndpointGroup": {
        "type": "object",
        "properties": {
          "vpnEndpointGroup": {
            "$ref": "#/components/schemas/endpoint_group"
          }
        }
      },
      "DataVPNService": {
        "type": "object",
        "properties": {
          "vpnService": {
            "$ref": "#/components/schemas/vpnservice"
          }
        }
      },
      "DataVhiCredentials": {
        "type": "object",
        "properties": {
          "access": {
            "type": "string"
          },
          "secret": {
            "type": "string"
          }
        }
      },
      "DataVolume": {
        "type": "object",
        "properties": {
          "volume": {
            "$ref": "#/components/schemas/volume"
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeAttachmentData"
            }
          }
        }
      },
      "DataVolumeBackup": {
        "type": "object",
        "properties": {
          "volumeBackup": {
            "$ref": "#/components/schemas/backup"
          }
        }
      },
      "DataVolumeSnapshot": {
        "type": "object",
        "properties": {
          "volumeSnapshot": {
            "$ref": "#/components/schemas/snapshot"
          }
        }
      },
      "DataVprotectBackup": {
        "type": "object",
        "properties": {
          "backup": {
            "$ref": "#/components/schemas/VprotectBackup"
          },
          "vprotectServiceId": {
            "type": "string"
          },
          "virtualProvider": {
            "$ref": "#/components/schemas/VirtualProviderRef"
          }
        }
      },
      "DataVprotectInstance": {
        "type": "object",
        "properties": {
          "instance": {
            "$ref": "#/components/schemas/VprotectVirtualMachine"
          },
          "vprotectServiceId": {
            "type": "string"
          },
          "virtualProvider": {
            "$ref": "#/components/schemas/VirtualProviderRef"
          }
        }
      },
      "DesignateZone": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "ttl": {
            "type": "integer",
            "format": "int32"
          },
          "serial": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ERROR",
              "PENDING",
              "ACTIVE"
            ]
          },
          "action": {
            "type": "string",
            "enum": [
              "NONE",
              "CREATE",
              "DELETE",
              "UPDATE"
            ]
          },
          "description": {
            "type": "string"
          },
          "masters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "type": {
            "type": "string",
            "enum": [
              "PRIMARY",
              "SECONDARY"
            ]
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "links": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "transferedAt": {
            "type": "string"
          },
          "pool_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "tranferred_at": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ExternalGateway": {
        "type": "object",
        "properties": {
          "networkId": {
            "type": "string"
          },
          "enableSnat": {
            "type": "boolean"
          },
          "externalFixedIps": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          }
        }
      },
      "Fault": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "details": {
            "type": "string"
          }
        }
      },
      "Flavor": {
        "type": "object",
        "properties": {
          "strId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "ram": {
            "type": "integer",
            "format": "int32"
          },
          "vcpus": {
            "type": "integer",
            "format": "int32"
          },
          "disk": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "GenericLink": {
        "type": "object",
        "properties": {
          "rel": {
            "type": "string"
          },
          "href": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "GlanceImage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "unrecognized",
              "queued",
              "saving",
              "active",
              "deactivated",
              "killed",
              "deleted",
              "pending_delete"
            ]
          },
          "checksum": {
            "type": "string"
          },
          "owner": {
            "type": "string"
          },
          "visibility": {
            "type": "string",
            "enum": [
              "public",
              "private",
              "community",
              "shared",
              "unknown"
            ]
          },
          "size": {
            "type": "integer",
            "format": "int64"
          },
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Location"
            }
          },
          "self": {
            "type": "string"
          },
          "file": {
            "type": "string"
          },
          "schema": {
            "type": "string"
          },
          "architecture": {
            "type": "string"
          },
          "container_format": {
            "type": "string",
            "enum": [
              "bare",
              "ovf",
              "aki",
              "ari",
              "ami",
              "ova",
              "docker",
              "unrecognized"
            ]
          },
          "disk_format": {
            "type": "string",
            "enum": [
              "raw",
              "vhd",
              "vmdk",
              "vhdx",
              "vdi",
              "iso",
              "qcow2",
              "aki",
              "ari",
              "ami",
              "unrecognized"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "min_disk": {
            "type": "integer",
            "format": "int64"
          },
          "min_ram": {
            "type": "integer",
            "format": "int64"
          },
          "protected": {
            "type": "boolean"
          },
          "direct_url": {
            "type": "string"
          },
          "instance_uuid": {
            "type": "string"
          },
          "kernel_id": {
            "type": "string"
          },
          "os_version": {
            "type": "string"
          },
          "os_distro": {
            "type": "string"
          },
          "ramdisk_id": {
            "type": "string"
          },
          "virtual_size": {
            "type": "integer",
            "format": "int64"
          },
          "image_type": {
            "type": "string"
          },
          "hw_qemu_guest_agent": {
            "type": "string"
          },
          "os_admin_user": {
            "type": "string"
          },
          "customProperties": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "HealthMonitorV2": {
        "type": "object",
        "properties": {
          "timeout": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "PING",
              "TCP",
              "HTTP",
              "HTTPS"
            ]
          },
          "projectId": {
            "type": "string"
          },
          "adminStateUp": {
            "type": "boolean"
          },
          "pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItem"
            }
          },
          "delay": {
            "type": "integer",
            "format": "int32"
          },
          "maxRetries": {
            "type": "integer",
            "format": "int32"
          },
          "maxRetriesDown": {
            "type": "integer",
            "format": "int32"
          },
          "urlPath": {
            "type": "string"
          },
          "httpMethod": {
            "type": "string"
          },
          "expectedCodes": {
            "type": "string"
          }
        }
      },
      "HostRoute": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string"
          },
          "nexthop": {
            "type": "string"
          }
        }
      },
      "HourlySchedule": {
        "type": "object",
        "properties": {
          "interval": {
            "type": "integer",
            "format": "int32"
          },
          "retention": {
            "type": "integer",
            "format": "int32"
          },
          "snapshot_type": {
            "type": "string"
          }
        }
      },
      "IP": {
        "type": "object",
        "properties": {
          "ipAddress": {
            "type": "string"
          },
          "subnetId": {
            "type": "string"
          }
        }
      },
      "IdResourceEntity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "Image": {
        "type": "object",
        "properties": {
          "metaData": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "UNRECOGNIZED",
              "UNKNOWN",
              "ACTIVE",
              "SAVING",
              "ERROR",
              "DELETED"
            ]
          },
          "snapshot": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int64"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            }
          },
          "updated": {
            "type": "string",
            "format": "date-time"
          },
          "minDisk": {
            "type": "integer",
            "format": "int32"
          },
          "minRam": {
            "type": "integer",
            "format": "int32"
          },
          "progress": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "InstanceDatastore": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        }
      },
      "JobSchedule": {
        "type": "object",
        "properties": {
          "timezone": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "nextrun": {
            "type": "number",
            "format": "double"
          },
          "hourly": {
            "$ref": "#/components/schemas/HourlySchedule"
          },
          "daily": {
            "$ref": "#/components/schemas/DailySchedule"
          },
          "weekly": {
            "$ref": "#/components/schemas/WeeklySchedule"
          },
          "monthly": {
            "$ref": "#/components/schemas/MonthlySchedule"
          },
          "yearly": {
            "$ref": "#/components/schemas/YearlySchedule"
          },
          "manual": {
            "$ref": "#/components/schemas/ManualSchedule"
          },
          "retentionmanual": {
            "$ref": "#/components/schemas/RetentionManual"
          },
          "start_date": {
            "type": "string"
          },
          "end_date": {
            "type": "string"
          },
          "start_time": {
            "type": "string"
          },
          "global_jobscheduler": {
            "type": "boolean"
          }
        }
      },
      "LbPoolV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "protocol": {
            "type": "string",
            "enum": [
              "HTTP",
              "HTTPS",
              "PROXY",
              "PROXYV2",
              "SCTP",
              "TCP",
              "UDP"
            ]
          },
          "listeners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItem"
            }
          },
          "description": {
            "type": "string"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MemberV2"
            }
          },
          "projectId": {
            "type": "string"
          },
          "provisioningStatus": {
            "type": "string"
          },
          "adminStateUp": {
            "type": "boolean"
          },
          "operatingStatus": {
            "type": "string"
          },
          "tlsEnabled": {
            "type": "boolean"
          },
          "sessionPersistence": {
            "$ref": "#/components/schemas/SessionPersistence"
          },
          "loadBalancers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItem"
            }
          },
          "lbMethod": {
            "type": "string",
            "enum": [
              "ROUND_ROBIN",
              "LEAST_CONNECTIONS",
              "SOURCE_IP",
              "SOURCE_IP_PORT"
            ]
          },
          "healthMonitorId": {
            "type": "string"
          },
          "healthMonitor": {
            "$ref": "#/components/schemas/HealthMonitorV2"
          }
        }
      },
      "Lifetime": {
        "type": "object",
        "properties": {
          "value": {
            "type": "integer",
            "format": "int32"
          },
          "units": {
            "type": "string"
          }
        }
      },
      "Link": {
        "type": "object",
        "properties": {
          "rel": {
            "type": "string"
          },
          "href": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "ListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "ListenerV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "protocol": {
            "type": "string",
            "enum": [
              "HTTP",
              "HTTPS",
              "PROMETHEUS",
              "SCTP",
              "TERMINATED_HTTPS",
              "TCP",
              "UDP"
            ]
          },
          "description": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "provisioningStatus": {
            "type": "string"
          },
          "adminStateUp": {
            "type": "boolean"
          },
          "operatingStatus": {
            "type": "string"
          },
          "sniContainerRefs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "connectionLimit": {
            "type": "integer",
            "format": "int32"
          },
          "timeoutClientData": {
            "type": "integer",
            "format": "int32"
          },
          "timeoutMemberConnect": {
            "type": "integer",
            "format": "int32"
          },
          "timeoutMemberData": {
            "type": "integer",
            "format": "int32"
          },
          "timeoutTcpInspect": {
            "type": "integer",
            "format": "int32"
          },
          "insertHeaders": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "allowedCidrs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "loadBalancers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItem"
            }
          },
          "defaultPoolId": {
            "type": "string"
          },
          "defaultTlsContainerRef": {
            "type": "string"
          },
          "defaultPool": {
            "$ref": "#/components/schemas/LbPoolV2"
          },
          "protocolPort": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MagnumCluster": {
        "type": "object",
        "properties": {
          "mastersAddresses": {
            "type": "object"
          },
          "status": {
            "type": "string"
          },
          "cluster_template_id": {
            "type": "string"
          },
          "uuid": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GenericLink"
            }
          },
          "stack_id": {
            "type": "string"
          },
          "master_count": {
            "type": "integer",
            "format": "int32"
          },
          "create_timeout": {
            "type": "integer",
            "format": "int32"
          },
          "node_count": {
            "type": "integer",
            "format": "int32"
          },
          "discovery_url": {
            "type": "string"
          },
          "keypair": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "master_flavor_id": {
            "type": "string"
          },
          "flavor_id": {
            "type": "string"
          },
          "floating_ip_enabled": {
            "type": "boolean"
          },
          "master_lb_enabled": {
            "type": "boolean"
          },
          "project_id": {
            "type": "string"
          },
          "api_address": {
            "type": "string"
          },
          "coe_version": {
            "type": "string"
          },
          "master_addresses": {
            "type": "object"
          },
          "node_addresses": {
            "type": "object"
          },
          "health_status": {
            "type": "string"
          },
          "status_reason": {
            "type": "object"
          },
          "health_status_reason": {
            "type": "object"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "merge_labels": {
            "type": "boolean"
          },
          "fixed_network": {
            "type": "string"
          },
          "fixed_subnet": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "MagnumNodeGroup": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "cluster_uuid": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "docker_volume_size": {
            "type": "string"
          },
          "labels": {
            "type": "object"
          },
          "flavor_id": {
            "type": "string"
          },
          "image_id": {
            "type": "string"
          },
          "node_addresses": {
            "type": "object"
          },
          "node_count": {
            "type": "integer",
            "format": "int32"
          },
          "role": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "stack_id": {
            "type": "string"
          }
        }
      },
      "ManilaShareNetworkSubnet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "cidr": {
            "type": "string"
          },
          "mtu": {
            "type": "integer",
            "format": "int32"
          },
          "gateway": {
            "type": "string"
          },
          "availability_zone": {
            "type": "string"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "segmentation_id": {
            "type": "string"
          },
          "neutron_net_id": {
            "type": "string"
          },
          "neutron_subnet_id": {
            "type": "string"
          },
          "ip_version": {
            "type": "integer",
            "format": "int32"
          },
          "network_type": {
            "type": "string"
          }
        }
      },
      "ManualSchedule": {
        "type": "object",
        "properties": {
          "retention": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MemberV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "provisioningStatus": {
            "type": "string"
          },
          "subnetId": {
            "type": "string"
          },
          "adminStateUp": {
            "type": "boolean"
          },
          "operatingStatus": {
            "type": "string"
          },
          "weight": {
            "type": "integer",
            "format": "int32"
          },
          "monitorAddress": {
            "type": "string"
          },
          "monitorPort": {
            "type": "integer",
            "format": "int32"
          },
          "backup": {
            "type": "boolean"
          },
          "protocolPort": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MonthlySchedule": {
        "type": "object",
        "properties": {
          "retention": {
            "type": "integer",
            "format": "int32"
          },
          "month_backup_day": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "snapshot_type": {
            "type": "string"
          }
        }
      },
      "NeutronExternalGateway": {
        "type": "object",
        "properties": {
          "network_id": {
            "type": "string"
          },
          "enable_snat": {
            "type": "boolean"
          },
          "external_fixed_ips": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          }
        }
      },
      "NeutronExtraDhcpOptCreate": {
        "type": "object",
        "properties": {
          "optValue": {
            "type": "string"
          },
          "optName": {
            "type": "string"
          },
          "opt_value": {
            "type": "string"
          },
          "opt_name": {
            "type": "string"
          }
        }
      },
      "NeutronPool": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string"
          },
          "end": {
            "type": "string"
          }
        }
      },
      "ReplicaRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "RetentionManual": {
        "type": "object",
        "properties": {
          "retentionmanual": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SecretRef": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "secret_ref": {
            "type": "string"
          }
        }
      },
      "SecurityGroupRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "protocol": {
            "type": "object"
          },
          "description": {
            "type": "string"
          },
          "direction": {
            "type": "string"
          },
          "etherType": {
            "type": "string"
          },
          "portRangeMin": {
            "type": "integer",
            "format": "int32"
          },
          "portRangeMax": {
            "type": "integer",
            "format": "int32"
          },
          "remoteGroupId": {
            "type": "string"
          },
          "remoteIpPrefix": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          },
          "securityGroupId": {
            "type": "string"
          }
        }
      },
      "SessionPersistence": {
        "type": "object",
        "properties": {
          "cookieName": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "APP_COOKIE",
              "HTTP_COOKIE",
              "SOURCE_IP"
            ]
          },
          "persistenceTimeout": {
            "type": "integer",
            "format": "int32"
          },
          "persistenceGranularity": {
            "type": "string"
          }
        }
      },
      "TrilioBackupTarget": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "capacity": {
            "type": "string"
          },
          "used": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "immutable": {
            "type": "boolean"
          },
          "is_default": {
            "type": "boolean"
          },
          "s3_endpoint_url": {
            "type": "string"
          },
          "s3_bucket": {
            "type": "string"
          },
          "filesystem_export": {
            "type": "string"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "backup_target_types": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          },
          "backup_target_metadata": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "TrilioRestore": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int64"
          },
          "instances": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          },
          "snapshot_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "uploaded_size": {
            "type": "integer",
            "format": "int64"
          },
          "progress_percent": {
            "type": "integer",
            "format": "int32"
          },
          "progress_msg": {
            "type": "string"
          },
          "error_msg": {
            "type": "string"
          },
          "time_taken": {
            "type": "integer",
            "format": "int64"
          },
          "created_at": {
            "type": "string"
          },
          "finished_at": {
            "type": "string"
          },
          "restore_options": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "snapshot_details": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "TrilioSnapshot": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int64"
          },
          "pinned": {
            "type": "boolean"
          },
          "host": {
            "type": "string"
          },
          "instances": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          },
          "metadata": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          },
          "snapshot_type": {
            "type": "string"
          },
          "workload_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "user_id": {
            "type": "string"
          },
          "restore_size": {
            "type": "integer",
            "format": "int64"
          },
          "uploaded_size": {
            "type": "integer",
            "format": "int64"
          },
          "progress_percent": {
            "type": "integer",
            "format": "int32"
          },
          "progress_msg": {
            "type": "string"
          },
          "warning_msg": {
            "type": "string"
          },
          "error_msg": {
            "type": "string"
          },
          "time_taken": {
            "type": "integer",
            "format": "int64"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "finished_at": {
            "type": "string"
          },
          "restores_info": {
            "type": "object"
          }
        }
      },
      "TrilioWorkload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "interval": {
            "type": "string"
          },
          "instances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkloadInstance"
            }
          },
          "jobschedule": {
            "$ref": "#/components/schemas/JobSchedule"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "encryption": {
            "type": "boolean"
          },
          "project_id": {
            "type": "string"
          },
          "user_id": {
            "type": "string"
          },
          "workload_type_id": {
            "type": "string"
          },
          "source_platform": {
            "type": "string"
          },
          "availability_zone": {
            "type": "string"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "error_msg": {
            "type": "string"
          },
          "storage_usage": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "backup_target_types": {
            "type": "string"
          },
          "secret_uuid": {
            "type": "string"
          },
          "policy_id": {
            "type": "string"
          },
          "scheduler_trust": {
            "type": "string"
          }
        }
      },
      "VirtualProviderRef": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "Volume": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "VolumeAttachment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "device": {
            "type": "string"
          },
          "volumeId": {
            "type": "string"
          },
          "serverId": {
            "type": "string"
          },
          "attachmentId": {
            "type": "string"
          }
        }
      },
      "VolumeAttachmentData": {
        "type": "object",
        "properties": {
          "attachmentId": {
            "type": "string"
          },
          "volumeId": {
            "type": "string"
          },
          "serverId": {
            "type": "string"
          },
          "deviceId": {
            "type": "string"
          },
          "attachedResourceId": {
            "type": "string"
          },
          "attachedResourceName": {
            "type": "string"
          }
        }
      },
      "VprotectBackup": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "status": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "statusInfo": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int64"
          },
          "backupTime": {
            "type": "integer",
            "format": "int64"
          },
          "snapshotTime": {
            "type": "integer",
            "format": "int64"
          },
          "duration": {
            "type": "integer",
            "format": "int64"
          },
          "taskDurationTime": {
            "type": "integer",
            "format": "int64"
          },
          "totalTime": {
            "type": "integer",
            "format": "int64"
          },
          "attemptsCount": {
            "type": "integer",
            "format": "int32"
          },
          "groupId": {
            "type": "string"
          },
          "hidden": {
            "type": "boolean"
          },
          "warningsPresent": {
            "type": "boolean"
          },
          "protectedEntity": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "sourceProject": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "backupRule": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "vmExportImportMode": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "sourceNameAndGuid": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "originEntity": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "backupLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BackupLocation"
            }
          }
        }
      },
      "VprotectPolicy": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "rules": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "VprotectRef": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string"
          },
          "uuid": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "VprotectVirtualMachine": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string"
          },
          "uuid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "originalName": {
            "type": "string"
          },
          "restoreStatus": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "present": {
            "type": "boolean"
          },
          "backupUpToDate": {
            "type": "boolean"
          },
          "restorable": {
            "type": "boolean"
          },
          "warningsPresent": {
            "type": "boolean"
          },
          "supportsQuiesceSnapshot": {
            "type": "boolean"
          },
          "lastChainMarkedForDeletion": {
            "type": "boolean"
          },
          "averageProgress": {
            "type": "number",
            "format": "double"
          },
          "lastBackup": {
            "type": "integer",
            "format": "int64"
          },
          "lastSuccessfulBackupSize": {
            "type": "integer",
            "format": "int64"
          },
          "lastSuccessfulFullBackup": {
            "type": "string"
          },
          "lastSuccessfulFullBackupSize": {
            "type": "integer",
            "format": "int64"
          },
          "vmBackupPolicy": {
            "$ref": "#/components/schemas/VprotectPolicy"
          },
          "vmFlavor": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "project": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "hvManager": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "hvCluster": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "hypervisor": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "hvType": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "hvmType": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "type": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "virtualProvider": {
            "$ref": "#/components/schemas/VprotectRef"
          },
          "networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VprotectRef"
            }
          }
        }
      },
      "WeeklySchedule": {
        "type": "object",
        "properties": {
          "retention": {
            "type": "integer",
            "format": "int32"
          },
          "backup_day": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "snapshot_type": {
            "type": "string"
          }
        }
      },
      "WorkloadInstance": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "instance-id": {
            "type": "string"
          }
        }
      },
      "YearlySchedule": {
        "type": "object",
        "properties": {
          "retention": {
            "type": "integer",
            "format": "int32"
          },
          "backup_month": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "snapshot_type": {
            "type": "string"
          }
        }
      },
      "backup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "size": {
            "type": "number",
            "format": "double"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "updated": {
            "type": "string",
            "format": "date-time"
          },
          "datastoreType": {
            "type": "string"
          },
          "datastoreVersion": {
            "type": "string"
          },
          "instance_id": {
            "type": "string"
          },
          "locationRef": {
            "type": "string"
          },
          "parent_id": {
            "type": "string"
          },
          "datastore": {
            "$ref": "#/components/schemas/BackupDatastore"
          }
        }
      },
      "backup_strategy": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string"
          },
          "instance_id": {
            "type": "string"
          },
          "swift_container": {
            "type": "string"
          }
        }
      },
      "configuration": {
        "type": "object",
        "properties": {
          "datastoreType": {
            "type": "string"
          },
          "datastoreVersion": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "datastore": {
            "$ref": "#/components/schemas/ConfigurationDatastore"
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "updated": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "endpoint_group": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          }
        }
      },
      "firewall_group": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "ports": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string"
          },
          "shared": {
            "type": "boolean"
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "ingress_firewall_policy_id": {
            "type": "string"
          },
          "egress_firewall_policy_id": {
            "type": "string"
          },
          "admin_state_up": {
            "type": "boolean"
          }
        }
      },
      "firewall_policy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "audited": {
            "type": "boolean"
          },
          "shared": {
            "type": "boolean"
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "firewall_rules": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "firewall_rule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "protocol": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "shared": {
            "type": "boolean"
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "ip_version": {
            "type": "integer",
            "format": "int32"
          },
          "source_ip_address": {
            "type": "string"
          },
          "destination_ip_address": {
            "type": "string"
          },
          "source_port": {
            "type": "string"
          },
          "destination_port": {
            "type": "string"
          },
          "firewall_policy_id": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "floatingip": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "id": {
            "type": "string"
          },
          "router_id": {
            "type": "string"
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "floating_network_id": {
            "type": "string"
          },
          "floating_ip_address": {
            "type": "string"
          },
          "fixed_ip_address": {
            "type": "string"
          },
          "port_id": {
            "type": "string"
          },
          "qos_policy_id": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "revision_number": {
            "type": "integer",
            "format": "int32"
          },
          "port_details": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "healthmonitor": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "PING",
              "TCP",
              "HTTP",
              "HTTPS"
            ]
          },
          "delay": {
            "type": "integer",
            "format": "int32"
          },
          "timeout": {
            "type": "integer",
            "format": "int32"
          },
          "pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItem"
            }
          },
          "project_id": {
            "type": "string"
          },
          "max_retries": {
            "type": "integer",
            "format": "int32"
          },
          "max_retries_down": {
            "type": "integer",
            "format": "int32"
          },
          "http_method": {
            "type": "string"
          },
          "url_path": {
            "type": "string"
          },
          "expected_codes": {
            "type": "string"
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "pool_id": {
            "type": "string"
          }
        }
      },
      "ikepolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "pfs": {
            "type": "string"
          },
          "value": {
            "type": "integer",
            "format": "int32"
          },
          "units": {
            "type": "string"
          },
          "lifetime": {
            "$ref": "#/components/schemas/Lifetime"
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "auth_algorithm": {
            "type": "string"
          },
          "encryption_algorithm": {
            "type": "string"
          },
          "phase1_negotiation_mode": {
            "type": "string"
          },
          "ike_version": {
            "type": "string"
          }
        }
      },
      "instance": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "flavor": {
            "$ref": "#/components/schemas/Flavor"
          },
          "hostname": {
            "type": "string"
          },
          "ip": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "updated": {
            "type": "string",
            "format": "date-time"
          },
          "volume": {
            "$ref": "#/components/schemas/Volume"
          },
          "datastore": {
            "$ref": "#/components/schemas/InstanceDatastore"
          },
          "fault": {
            "$ref": "#/components/schemas/Fault"
          },
          "replicas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReplicaRef"
            }
          },
          "configuration": {
            "$ref": "#/components/schemas/ConfigurationRef"
          },
          "datastoreType": {
            "type": "string"
          },
          "datastoreVersion": {
            "type": "string"
          },
          "volumeSize": {
            "type": "integer",
            "format": "int32"
          },
          "volumeType": {
            "type": "string"
          },
          "operating_status": {
            "type": "string"
          },
          "replica_of": {
            "$ref": "#/components/schemas/ReplicaRef"
          }
        }
      },
      "ipsec_site_connection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DOWN",
              "BUILD",
              "ERROR",
              "PENDING_CREATE",
              "PENDING_UPDATE",
              "PENDING_DELETE"
            ]
          },
          "psk": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "initiator": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "interval": {
            "type": "integer",
            "format": "int32"
          },
          "mtu": {
            "type": "integer",
            "format": "int32"
          },
          "dpd": {
            "$ref": "#/components/schemas/DPD"
          },
          "ikepolicy_id": {
            "type": "string"
          },
          "vpnservice_id": {
            "type": "string"
          },
          "local_ep_group_id": {
            "type": "string"
          },
          "peer_address": {
            "type": "string"
          },
          "route_mode": {
            "type": "string"
          },
          "ipsecpolicy_id": {
            "type": "string"
          },
          "peer_id": {
            "type": "string"
          },
          "peer_cidrs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "peer_ep_group_id": {
            "type": "string"
          },
          "local_id": {
            "type": "string"
          }
        }
      },
      "ipsecpolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "pfs": {
            "type": "string"
          },
          "value": {
            "type": "integer",
            "format": "int32"
          },
          "units": {
            "type": "string"
          },
          "lifetime": {
            "$ref": "#/components/schemas/Lifetime"
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "auth_algorithm": {
            "type": "string"
          },
          "encapsulation_mode": {
            "type": "string"
          },
          "encryption_algorithm": {
            "type": "string"
          },
          "transform_protocol": {
            "type": "string"
          }
        }
      },
      "listener": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "protocol": {
            "type": "string",
            "enum": [
              "HTTP",
              "HTTPS",
              "PROMETHEUS",
              "SCTP",
              "TERMINATED_HTTPS",
              "TCP",
              "UDP"
            ]
          },
          "loadBalancers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItem"
            }
          },
          "project_id": {
            "type": "string"
          },
          "protocol_port": {
            "type": "integer",
            "format": "int32"
          },
          "connection_limit": {
            "type": "integer",
            "format": "int32"
          },
          "default_pool_id": {
            "type": "string"
          },
          "loadbalancer_id": {
            "type": "string"
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "default_tls_container_ref": {
            "type": "string"
          },
          "sni_container_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "operating_status": {
            "type": "string"
          },
          "provisioning_status": {
            "type": "string"
          },
          "default_pool": {
            "$ref": "#/components/schemas/LbPoolV2"
          },
          "timeout_client_data": {
            "type": "integer",
            "format": "int32"
          },
          "timeout_member_connect": {
            "type": "integer",
            "format": "int32"
          },
          "timeout_member_data": {
            "type": "integer",
            "format": "int32"
          },
          "timeout_tcp_inspect": {
            "type": "integer",
            "format": "int32"
          },
          "insert_headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "allowed_cidrs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "loadbalancer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "listeners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListenerV2"
            }
          },
          "provider": {
            "type": "string"
          },
          "pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LbPoolV2"
            }
          },
          "project_id": {
            "type": "string"
          },
          "vip_network_id": {
            "type": "string"
          },
          "vip_subnet_id": {
            "type": "string"
          },
          "vip_address": {
            "type": "string"
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "provisioning_status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DELETED",
              "PENDING_CREATE",
              "PENDING_UPDATE",
              "PENDING_DELETE",
              "ERROR"
            ]
          },
          "operating_status": {
            "type": "string",
            "enum": [
              "ONLINE",
              "DRAINING",
              "DEGRADED",
              "ERROR",
              "NO_MONITOR",
              "OFFLINE"
            ]
          },
          "vip_port_id": {
            "type": "string"
          },
          "flavor_id": {
            "type": "string"
          },
          "availability_zone": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "member": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "weight": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "protocol_port": {
            "type": "integer",
            "format": "int32"
          },
          "subnet_id": {
            "type": "string"
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "operating_status": {
            "type": "string"
          },
          "provisioning_status": {
            "type": "string"
          },
          "monitor_address": {
            "type": "string"
          },
          "monitor_port": {
            "type": "integer",
            "format": "int32"
          },
          "backup": {
            "type": "boolean"
          }
        }
      },
      "network": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DOWN",
              "BUILD",
              "ERROR",
              "PENDING_CREATE",
              "PENDING_UPDATE",
              "PENDING_DELETE",
              "UNRECOGNIZED"
            ]
          },
          "subnets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "shared": {
            "type": "boolean"
          },
          "extraDhcpOpts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NeutronExtraDhcpOptCreate"
            }
          },
          "provider:physical_network": {
            "type": "string"
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "tenant_id": {
            "type": "string"
          },
          "provider:network_type": {
            "type": "string",
            "enum": [
              "local",
              "flat",
              "vlan",
              "vxlan",
              "gre",
              "geneve"
            ]
          },
          "router:external": {
            "type": "boolean"
          },
          "provider:segmentation_id": {
            "type": "string"
          },
          "binding:host_id": {
            "type": "string"
          },
          "binding:profile": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "binding:vif_details": {
            "type": "object"
          },
          "binding:vif_type": {
            "type": "string"
          },
          "binding:vnic_type": {
            "type": "string"
          },
          "dns_domain": {
            "type": "string"
          },
          "dns_name": {
            "type": "string"
          },
          "resource_request": {
            "type": "object"
          },
          "availability_zone_hints": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "extra_dhcp_opts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NeutronExtraDhcpOptCreate"
            }
          },
          "availability_zones": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "mtu": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "pool": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "protocol": {
            "type": "string",
            "enum": [
              "HTTP",
              "HTTPS",
              "PROXY",
              "PROXYV2",
              "SCTP",
              "TCP",
              "UDP"
            ]
          },
          "listeners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItem"
            }
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MemberV2"
            }
          },
          "loadBalancers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItem"
            }
          },
          "healthMonitor": {
            "$ref": "#/components/schemas/HealthMonitorV2"
          },
          "project_id": {
            "type": "string"
          },
          "lb_algorithm": {
            "type": "string",
            "enum": [
              "ROUND_ROBIN",
              "LEAST_CONNECTIONS",
              "SOURCE_IP",
              "SOURCE_IP_PORT"
            ]
          },
          "session_persistence": {
            "$ref": "#/components/schemas/SessionPersistence"
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "listener_id": {
            "type": "string"
          },
          "loadbalancer_id": {
            "type": "string"
          },
          "tls_enabled": {
            "type": "boolean"
          },
          "healthmonitor_id": {
            "type": "string"
          },
          "operating_status": {
            "type": "string"
          },
          "provisioning_status": {
            "type": "string"
          }
        }
      },
      "port": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "device_id": {
            "type": "string"
          },
          "device_owner": {
            "type": "string"
          },
          "fixed_ips": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IP"
            }
          },
          "allowed_address_pairs": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowedAddressPair"
            }
          },
          "mac_address": {
            "type": "string"
          },
          "network_id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DOWN",
              "BUILD",
              "ERROR",
              "PENDING_CREATE",
              "PENDING_UPDATE",
              "PENDING_DELETE",
              "UNRECOGNIZED"
            ]
          },
          "tenant_id": {
            "type": "string"
          },
          "trunkport:type": {
            "type": "string"
          },
          "trunkport:parent_id": {
            "type": "string"
          },
          "trunkport:vid": {
            "type": "string"
          },
          "security_groups": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "extra_dhcp_opts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NeutronExtraDhcpOptCreate"
            }
          },
          "port_security_enabled": {
            "type": "boolean"
          },
          "binding:host_id": {
            "type": "string"
          },
          "binding:vif_type": {
            "type": "string"
          },
          "binding:vif_details": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "binding:vnic_type": {
            "type": "string"
          },
          "binding:profile": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "qos_policy_id": {
            "type": "string"
          }
        }
      },
      "router": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DOWN",
              "BUILD",
              "ERROR",
              "PENDING_CREATE",
              "PENDING_UPDATE",
              "PENDING_DELETE",
              "UNRECOGNIZED"
            ]
          },
          "external_gateway_info": {
            "$ref": "#/components/schemas/ExternalGateway"
          },
          "interfaces_info": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "tenant_id": {
            "type": "string"
          },
          "routes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HostRoute"
            }
          },
          "distributed": {
            "type": "boolean"
          },
          "external_gateways": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NeutronExternalGateway"
            }
          },
          "availability_zone_hints": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "availability_zones": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "security_group": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "tenant_id": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "security_group_rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecurityGroupRule"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "security_groups": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "tenant_id": {
            "type": "string"
          }
        }
      },
      "security_service": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "ldap",
              "kerberos",
              "active_directory"
            ]
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "user": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "server": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "dns_ip": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "share_networks": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "server": {
        "type": "object",
        "properties": {
          "accessIPv4": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            }
          },
          "image": {
            "$ref": "#/components/schemas/Image"
          },
          "addresses": {
            "$ref": "#/components/schemas/Addresses"
          },
          "flavor": {
            "$ref": "#/components/schemas/Flavor"
          },
          "accessIPv6": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "build",
              "rebuild",
              "suspended",
              "paused",
              "resize",
              "verify_resize",
              "revert_resize",
              "password",
              "reboot",
              "hard_reboot",
              "deleted",
              "unknown",
              "error",
              "stopped",
              "shutoff",
              "migrating",
              "shelved",
              "shelved_offloaded",
              "rescue",
              "unrecognized"
            ]
          },
          "progress": {
            "type": "integer",
            "format": "int32"
          },
          "fault": {
            "$ref": "#/components/schemas/Fault"
          },
          "hostId": {
            "type": "string"
          },
          "updated": {
            "type": "string",
            "format": "date-time"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "uuid": {
            "type": "string"
          },
          "adminPass": {
            "type": "string"
          },
          "config_drive": {
            "type": "string"
          },
          "tenant_id": {
            "type": "string"
          },
          "user_id": {
            "type": "string"
          },
          "key_name": {
            "type": "string"
          },
          "host_status": {
            "type": "string"
          },
          "security_groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/security_groups"
            }
          },
          "OS-EXT-STS:task_state": {
            "type": "string"
          },
          "OS-EXT-STS:power_state": {
            "type": "string"
          },
          "OS-EXT-STS:vm_state": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:kernel_id": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:launch_index ": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:ramdisk_id": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:reservation_id": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:root_device_name": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:user_data": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:host": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:instance_name": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:hostname": {
            "type": "string"
          },
          "OS-EXT-SRV-ATTR:hypervisor_hostname": {
            "type": "string"
          },
          "OS-DCF:diskConfig": {
            "type": "string",
            "enum": [
              "MANUAL",
              "AUTO"
            ]
          },
          "OS-EXT-AZ:availability_zone": {
            "type": "string"
          },
          "OS-SRV-USG:launched_at": {
            "type": "string",
            "format": "date-time"
          },
          "OS-SRV-USG:terminated_at": {
            "type": "string",
            "format": "date-time"
          },
          "os-extended-volumes:volumes_attached": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdResourceEntity"
            }
          }
        }
      },
      "server_group": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "members": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "policy": {
            "type": "string"
          }
        }
      },
      "share": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "creating",
              "deleting",
              "error",
              "error_deleting",
              "available",
              "manage_starting",
              "unmanage_starting",
              "unmanage_error",
              "unmanaged",
              "extending",
              "extending_error",
              "shrinking",
              "shrinking_error",
              "shrinking_possible_data_loss_error",
              "backup_creating",
              "backup_restoring",
              "backup_restoring_error",
              "creating_from_snapshot",
              "deleted",
              "inactive",
              "manage_error",
              "migrating",
              "migrating_to",
              "replication_change",
              "reverting",
              "reverting_error",
              "awaiting_transfer"
            ]
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            }
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "host": {
            "type": "string"
          },
          "public": {
            "type": "boolean"
          },
          "project_id": {
            "type": "string"
          },
          "share_proto": {
            "type": "string",
            "enum": [
              "NFS",
              "CIFS",
              "GlusterFS",
              "HDFS",
              "CephFS",
              "MAPRFS"
            ]
          },
          "display_name": {
            "type": "string"
          },
          "display_description": {
            "type": "string"
          },
          "share_type": {
            "type": "string"
          },
          "share_type_name": {
            "type": "string"
          },
          "volume_type": {
            "type": "string"
          },
          "snapshot_id": {
            "type": "string"
          },
          "is_public": {
            "type": "boolean"
          },
          "share_network_id": {
            "type": "string"
          },
          "availability_zone": {
            "type": "string"
          },
          "export_location": {
            "type": "string"
          },
          "export_locations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "task_state": {
            "type": "string",
            "enum": [
              "null",
              "migration_starting",
              "migration_error",
              "migration_success",
              "migration_completing",
              "migrating"
            ]
          },
          "share_server_id": {
            "type": "string"
          },
          "consistency_group_id": {
            "type": "string"
          },
          "snapshot_support": {
            "type": "boolean"
          },
          "source_cgsnapshot_member_id": {
            "type": "string"
          },
          "created_at": {
            "type": "string"
          }
        }
      },
      "share_group": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "availability_zone": {
            "type": "string"
          },
          "consistent_snapshot_support": {
            "type": "string"
          },
          "share_group_type_id": {
            "type": "string"
          },
          "share_network_id": {
            "type": "string"
          },
          "share_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "project_id": {
            "type": "string"
          },
          "source_share_group_snapshot_id": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "share_group_snapshot": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "members": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "project_id": {
            "type": "string"
          },
          "share_group_id": {
            "type": "string"
          },
          "created_at": {
            "type": "string"
          }
        }
      },
      "share_network": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "cidr": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "neutron_net_id": {
            "type": "string"
          },
          "neutron_subnet_id": {
            "type": "string"
          },
          "nova_net_id": {
            "type": "string"
          },
          "network_type": {
            "type": "string",
            "enum": [
              "vlan",
              "vxlan",
              "gre",
              "flat"
            ]
          },
          "segmentation_id": {
            "type": "integer",
            "format": "int32"
          },
          "ip_version": {
            "type": "integer",
            "format": "int32"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "share_network_subnets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManilaShareNetworkSubnet"
            }
          },
          "security_service_update_support": {
            "type": "boolean"
          }
        }
      },
      "snapshot": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "error",
              "creating",
              "deleting",
              "error_deleting",
              "manage_starting",
              "manage_error",
              "unmanage_starting",
              "unmanage_error"
            ]
          },
          "name": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            }
          },
          "description": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "share_id": {
            "type": "string"
          },
          "created_at": {
            "type": "string"
          },
          "share_proto": {
            "type": "string",
            "enum": [
              "NFS",
              "CIFS",
              "GlusterFS",
              "HDFS",
              "CephFS",
              "MAPRFS"
            ]
          },
          "share_size": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "stack": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "stack_name": {
            "type": "string"
          },
          "stack_status": {
            "type": "string"
          },
          "stack_status_reason": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "template_description": {
            "type": "string"
          },
          "timeout_mins": {
            "type": "integer",
            "format": "int64"
          },
          "outputs": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          },
          "parameters": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "creation_time": {
            "type": "string",
            "format": "date-time"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GenericLink"
            }
          },
          "updated_time": {
            "type": "string",
            "format": "date-time"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "subnet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "cidr": {
            "type": "string"
          },
          "enable_dhcp": {
            "type": "boolean"
          },
          "network_id": {
            "type": "string"
          },
          "tenant_id": {
            "type": "string"
          },
          "dns_nameservers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "allocation_pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NeutronPool"
            }
          },
          "host_routes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HostRoute"
            }
          },
          "ip_version": {
            "type": "string",
            "enum": [
              "4",
              "6"
            ]
          },
          "gateway_ip": {
            "type": "string"
          },
          "ipv6_address_mode": {
            "type": "string",
            "enum": [
              "slaac",
              "dhcpv6-stateful",
              "dhcpv6-stateless",
              "null"
            ]
          },
          "ipv6_ra_mode": {
            "type": "string",
            "enum": [
              "slaac",
              "dhcpv6-stateful",
              "dhcpv6-stateless"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "volume": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "attaching",
              "backing-up",
              "creating",
              "deleting",
              "downloading",
              "uploading",
              "error",
              "error-deleting",
              "error-restoring",
              "in-use",
              "restoring-backup",
              "detaching",
              "unrecognized",
              "reserverd",
              "extending"
            ]
          },
          "name": {
            "type": "string"
          },
          "display_name": {
            "type": "string",
            "deprecated": true
          },
          "description": {
            "type": "string"
          },
          "display_description": {
            "type": "string",
            "deprecated": true
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "availability_zone": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "volume_type": {
            "type": "string"
          },
          "volume_type_id": {
            "type": "string"
          },
          "service_uuid": {
            "type": "string"
          },
          "cluster_name": {
            "type": "string"
          },
          "provider_id": {
            "type": "string"
          },
          "group_id": {
            "type": "string"
          },
          "consumes_quota": {
            "type": "boolean"
          },
          "imageRef": {
            "type": "string"
          },
          "multiattach": {
            "type": "boolean"
          },
          "source_volid": {
            "type": "string"
          },
          "snapshot_id": {
            "type": "string"
          },
          "migration_status": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "bootable": {
            "type": "boolean"
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeAttachment"
            }
          },
          "image_id": {
            "type": "string"
          },
          "volume_image_metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "os-vol-mig-status-attr:migstat": {
            "type": "string",
            "enum": [
              "none",
              "starting",
              "migrating",
              "completing",
              "success",
              "error"
            ]
          },
          "os-vol-mig-status-attr:name_id": {
            "type": "string"
          },
          "os-vol-tenant-attr:tenant_id": {
            "type": "string"
          },
          "encrypted": {
            "type": "boolean"
          },
          "os-vol-host-attr:host": {
            "type": "string"
          },
          "replication_status": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "vpnservice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DOWN",
              "BUILD",
              "ERROR",
              "PENDING_CREATE",
              "PENDING_UPDATE",
              "PENDING_DELETE"
            ]
          },
          "tenant_id": {
            "type": "string"
          },
          "project_id": {
            "type": "string"
          },
          "router_id": {
            "type": "string"
          },
          "external_v6_ip": {
            "type": "string"
          },
          "admin_state_up": {
            "type": "boolean"
          },
          "subnet_id": {
            "type": "string"
          },
          "external_v4_ip": {
            "type": "string"
          },
          "flavor_id": {
            "type": "string"
          }
        }
      },
      "ApiEntityResponseCloudResource": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CloudResource"
          }
        }
      },
      "ApiListResponseBill": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Bill"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseBillingProfile": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingProfile"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      },
      "ApiListResponseAccountCredit": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountCredit"
            }
          },
          "next_marker": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "Bearer Authentication": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}
