{
  "swagger": "2.0",
  "info": {
    "title": "Cloud for 1C API",
    "version": "v2.0",
    "description": "Cloud for 1C is the cloud infrastructure designed for working with 1C.<br><br><b>Note</b>: In the examples below, a hostname of a specific regional endpoint (e.g. ru-3) is used. The typical workflow begins with retrieving the list of available regional endpoints by sending a request to: https://api.selectel.ru/ones/paas/v2/service/endpoints. A regional endpoint should be selected based on the region where the resources are intended to be created. After selecting the desired regional endpoint from the response, all subsequent API requests should be directed to that endpoint while honoring the base prefix mentioned in this documentation (e.g. /v2).<br>The response format of the <b>/service/endpoints</b> request is described below."
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/metrics/api-keys": {
      "get": {
        "summary": "List API keys",
        "description": "Retrieves a list of API keys for pulling metrics associated with the authentication token (project-scoped).",
        "operationId": "listMetricsAPIKeys",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListAPIKeysResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "API-Keys"
        ]
      },
      "post": {
        "summary": "Create API key",
        "description": "Creates an API key for pulling metrics associated with the authentication token (project-scoped).",
        "operationId": "createMetricsAPIKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateAPIKeyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Represents the request specification for the \"create API key\" operation.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateAPIKeyRequest"
            }
          }
        ],
        "tags": [
          "API-Keys"
        ]
      }
    },
    "/metrics/api-keys/{id}": {
      "delete": {
        "summary": "Delete API key",
        "description": "Deletes an API key.",
        "operationId": "deleteMetricsApiKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteAPIKeyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the API key to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "API-Keys"
        ]
      },
      "patch": {
        "summary": "Patch API key",
        "description": "Allows partial updates to specific fields of the API key spec.",
        "operationId": "patchMetricsAPIkey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PatchAPIKeyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the API key.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PatchAPIKeyBody"
            }
          }
        ],
        "tags": [
          "API-Keys"
        ]
      }
    },
    "/service/config": {
      "get": {
        "summary": "Get global service config",
        "description": "Retrieves the global service configuration, including availability across regions and regional-specific settings.",
        "operationId": "getServiceConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetServiceConfigResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Service Catalog"
        ]
      }
    },
    "/service/endpoints": {
      "get": {
        "summary": "Get service endpoints",
        "description": "Retrieves a list of regional service endpoints.",
        "operationId": "getServiceEndpoints",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetServiceEndpointsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Service Catalog"
        ]
      }
    },
    "/service/regions": {
      "get": {
        "summary": "Get supported regions",
        "description": "Retrieves the list of regions where the service is currently available.",
        "operationId": "getServiceRegions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetRegionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Service Catalog"
        ]
      }
    },
    "/backup/backups": {
      "post": {
        "summary": "Create infobase backup",
        "description": "Creates an on-demand backup of an infobase and uploads it to either a customer-specified backup vault or Selectel-managed storage. If a name isn’t provided, one is generated automatically. The DB dump backup is performed without affecting other clients in the cluster. For .dt file dumps, user sessions and scheduled jobs are temporarily blocked to ensure consistency, as recommended by 1C.",
        "operationId": "createBackup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateBackupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateBackupRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/backups/infobases/{id}": {
      "get": {
        "summary": "List infobase backups",
        "description": "Returns a paginated list of backups for a specific infobase, along with a cursor for fetching the next page of results.",
        "operationId": "listInfobaseBackups",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RetrieveInfobaseBackupsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to retrieve backups for.",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "[^/]+"
          },
          {
            "name": "type",
            "description": "Optional filter for backup type (e.g., database dump or .dt file).\nIf not specified, no filtering by task type will be applied.\n\n - BACKUP_TYPE_DB_DUMP: Database dump backup.\n - BACKUP_TYPE_DT_DUMP: DT file backup.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "BACKUP_TYPE_UNSPECIFIED",
              "BACKUP_TYPE_DB_DUMP",
              "BACKUP_TYPE_DT_DUMP"
            ],
            "default": "BACKUP_TYPE_UNSPECIFIED"
          },
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/backups/{id}": {
      "delete": {
        "summary": "Delete backup",
        "description": "Deletes specific backup.",
        "operationId": "deleteBackup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteBackupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the backup to delete.",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "[^/]+"
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/backups/{id}/download-url": {
      "get": {
        "summary": "Download infobase backup",
        "description": "Generates a URL that allows downloading a specific infobase backup.",
        "operationId": "getBackupDownloadURL",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetBackupDownloadURLResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the backup to download.",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "[^/]+"
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/dt/dump": {
      "post": {
        "summary": "Create .dt dump of infobase",
        "description": "Creates an on-demand .dt file dump of an infobase and uploads it to Selectel-managed storage.",
        "operationId": "createDT",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DumpDTResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DumpDTRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/dt/restore": {
      "post": {
        "summary": "Restore infobase from .dt file",
        "description": "Restores the infobase from a .dt file, either identified by the upload identifier or via a direct link to the .dt file stored externally. This operation can only restore a .dt file to an empty infobase.",
        "operationId": "restoreFromDT",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RestoreFromDTResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RestoreFromDTRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/dt/upload-url": {
      "get": {
        "summary": "Generate URL for .dt file upload",
        "description": "Generates a URL and upload identifier for uploading a .dt file to restore an infobase. Only files up to 5 GB in size can be uploaded via this URL.",
        "operationId": "getDTUploadURL",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetDTUploadURLResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/infobases": {
      "get": {
        "summary": "List backed-up infobases",
        "description": "Returns infobases with successful backups.",
        "operationId": "listBackedUpInfobases",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RetrieveBackedUpInfobasesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/plan": {
      "post": {
        "summary": "Create infobase backup plan",
        "description": "Creates a backup plan for an infobase which defines a schedule and retention policy for automated backups, including when backups are taken, how long they are retained, and where they are kept — either in a user-managed or Selectel-owned backup vault.",
        "operationId": "createBackupPlan",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateBackupPlanResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateBackupPlanRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      },
      "put": {
        "summary": "Update infobase backup plan",
        "description": "Updates the backup plan for an infobase. Replaces the entire resource with the data provided — any missing fields may be removed.",
        "operationId": "updateBackupPlan",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateBackupPlanResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateBackupPlanRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/plan/{infobaseId}": {
      "patch": {
        "summary": "Partially updates infobase backup plan",
        "description": "Allows partial updates to the backup plan for an infobase. Only specify the fields you want to update in the request. Other data remains unchanged.",
        "operationId": "patchBackupPlan",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PatchBackupPlanResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "infobaseId",
            "description": "Identifier of the infobase which backup plan is being patched.",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "[^/]+"
          },
          {
            "name": "backupPlan",
            "description": "The updated backup plan specification containing partial updated.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BackupPlan",
              "required": [
                "backupPlan"
              ]
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/plans": {
      "post": {
        "summary": "List backup plans",
        "description": "Retrieve backup plans of specified infobases.",
        "operationId": "listBackupPlans",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RetrieveBackupPlansResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RetrieveBackupPlansRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/restore": {
      "post": {
        "summary": "Restore infobase from backup",
        "description": "Restores an infobase from the specified backup (only supports restoring DB dumps; use the other endpoint for .dt file restores). Currently, it’s not possible to restore a backup into an existing infobase — you can only restore it to a new one. However, you can delete the existing infobase and create a new one with the same name as the deleted one. For more details on the specifics and limitations of the restore process, refer to the documentation.",
        "operationId": "restoreFromBackup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RestoreFromBackupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RestoreFromBackupRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/restore/status/{infobaseId}": {
      "get": {
        "summary": "Retrieve restore status of infobase",
        "description": "Returns the current or most recent status of the infobase restore process from a backup, returning status for both DB dumps and .dt file restores. Unspecified restore status indicates that no restore attempts have been made for the infobase.",
        "operationId": "getInfobaseRestoreStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RetrieveRestoreFromBackupStatusResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "infobaseId",
            "description": "Identifier of the infobase to get restore status for.",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "[^/]+"
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/supported-regions/vaults": {
      "get": {
        "summary": "List supported regions for backup vaults",
        "description": "Returns the list of supported object storage regions that can be used for backup vaults. These regions determine where backup data can be stored in customer-owned storage and help ensure data locality, compliance with regulations, and optimized performance based on proximity. Currently, Selectel is the only supported object storage service provider.",
        "operationId": "listBackupVaultSupportedRegions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListBackupVaultSupportedRegionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/vaults": {
      "get": {
        "summary": "List backup vaults",
        "description": "Returns a paginated list of backup vaults, along with a cursor for fetching the next page of results.",
        "operationId": "listBackupVaults",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListBackupVaultsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Backups"
        ]
      },
      "post": {
        "summary": "Create backup vault",
        "description": "Creates a vault to store backups. A backup vault is a customer-managed object storage container used for storing backups. By using their own storage container, customers gain full control over their backup data, enabling advanced automation workflows — such as mirroring backups to other regions or third-party service providers for redundancy, disaster recovery, or compliance purposes.",
        "operationId": "createBackupVault",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateBackupVaultResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateBackupVaultRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/vaults/verify": {
      "post": {
        "summary": "Verify backup vault specification",
        "description": "Tests and verifies the backup vault specification before creating a new one or modifying an existing vault. Validates object storage configurations, including S3 credentials, bucket accessibility, and required permissions.",
        "operationId": "verifyBackupVaultSpec",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/VerifyBackupVaultSpecResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VerifyBackupVaultSpecRequest"
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/backup/vaults/{id}": {
      "get": {
        "summary": "Get backup vault",
        "description": "Returns details of a specific backup vault.",
        "operationId": "getBackupVault",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetBackupVaultResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the vault to return.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Backups"
        ]
      },
      "delete": {
        "summary": "Delete backup vault",
        "description": "Deletes a backup vault. The backups stored in the vault remain intact and are not deleted. Any active backup plans associated with the vault will be disabled.",
        "operationId": "deleteBackupVault",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteBackupVaultResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the backup vault to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "force",
            "description": "Whether to force the deletion of the backup vault. If true, all backup\nplans associated with the vault will be disabled, and the customer will no\nlonger be able to download or restore backups from this vault.\nBackups themselves remain intact.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Backups"
        ]
      },
      "patch": {
        "summary": "Modify backup vault",
        "description": "Modifies the configuration of an existing backup vault. Only specify the fields you want to update in the request. Other data remains unchanged.",
        "operationId": "patchBackupVault",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PatchBackupVaultResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the vault to patch.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "spec",
            "description": "A new spec for the vault.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BackupVaultSpec",
              "required": [
                "spec"
              ]
            }
          }
        ],
        "tags": [
          "Backups"
        ]
      }
    },
    "/cluster-flavors": {
      "get": {
        "summary": "List supported cluster flavors",
        "description": "Returns a list of supported cluster flavors. Deprecated flavors are filtered out by default unless explicitly requested. Creating a cluster with a deprecated flavor is not allowed.",
        "operationId": "listClusterFlavors",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClusterFlavorsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "includeDeprecated",
            "description": "Whether to include deprecated cluster flavors in the result set.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/cluster-flavors/constraints": {
      "get": {
        "summary": "List resource allocation constraints for cluster flavors",
        "description": "Returns resource allocation constraints for custom cluster flavors.",
        "operationId": "listClusterFlavorConstraints",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetClusterFlavorConstraintsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Clusters"
        ]
      }
    },
    "/cluster-platforms": {
      "get": {
        "summary": "List supported cluster platforms",
        "description": "Returns a list of supported cluster platforms. Deprecated platform versions are filtered out by default unless explicitly requested. Creating a cluster with a deprecated platform is not allowed.",
        "operationId": "listClusterPlatforms",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClusterPlatformsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "includeDeprecated",
            "description": "Whether to include deprecated platforms in the result set.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/cluster-proxies": {
      "get": {
        "summary": "List cluster proxies",
        "description": "Returns a paginated list of cluster proxies using cursor-based pagination. Supports optional filtering by cluster identifier.",
        "operationId": "listClusterProxies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClusterProxiesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "clusterId",
            "description": "Identifier of the cluster to filter cluster proxies on.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "post": {
        "summary": "Create cluster proxy",
        "description": "Creates a proxy to access a cluster. A public proxy uses TCP and allows access via the 1C thick client from the Internet. A private proxy supports both TCP and HTTP, enabling access via both the 1C thick and thin clients from the customer's private network.",
        "operationId": "createClusterProxy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateClusterProxyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateClusterProxyRequest"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/cluster-proxies/network-share/project": {
      "get": {
        "summary": "Get OpenStack project identifier for creating private cluster proxy",
        "description": "Returns the identifier of the OpenStack project with which a customer needs to share their private network in order to create a private proxy for the cluster.",
        "operationId": "getProjectIDForNetworkSharing",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetProjectIDForNetworkSharingResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Clusters"
        ]
      }
    },
    "/cluster-proxies/{id}": {
      "get": {
        "summary": "Get cluster proxy",
        "description": "Returns details of a cluster proxy.",
        "operationId": "getClusterProxy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetClusterProxyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster proxy to retrieve.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "delete": {
        "summary": "Delete cluster proxy",
        "description": "Deletes a cluster proxy.",
        "operationId": "deleteClusterProxy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteClusterProxyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster proxy to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters": {
      "get": {
        "summary": "List clusters",
        "description": "Retrieves a paginated list of clusters using cursor-based pagination.",
        "operationId": "listClusters",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClustersResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "post": {
        "summary": "Create cluster",
        "description": "Creates a new cluster. Creating a cluster with a deprecated platform or flavor is not allowed.",
        "operationId": "createCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateClusterResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateClusterRequest"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/logs/tech-journal/predefined-configs": {
      "get": {
        "summary": "List predefined configurations of tech journal log collection.",
        "description": "Returns predefined tech journal log collection configurations that are available for selection.",
        "operationId": "listPredefinedTechJournalLogConfigs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListPredefinedTechJournalLogConfigsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/volumes/supported-regions": {
      "get": {
        "summary": "List supported object storage regions for cluster volumes",
        "description": "Retrieves a list of object storage regions supported for cluster volumes.",
        "operationId": "listClusterVolumeSupportedRegions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClusterVolumeSupportedRegionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/volumes/verify": {
      "post": {
        "summary": "Verify cluster volume spec",
        "description": "Verifies the cluster volume spec before creating a volume, mainly to validate mount options like credentials, permissions, etc.",
        "operationId": "listClusterVolumeSpec",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/VerifyClusterVolumeSpecResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VerifyClusterVolumeSpecRequest"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}": {
      "get": {
        "summary": "Get cluster",
        "description": "Returns the details of a specific cluster.",
        "operationId": "getCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetClusterResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to retrieve.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "delete": {
        "summary": "Delete cluster",
        "description": "Deletes a cluster. All infobases linked to the cluster must be removed beforehand.",
        "operationId": "deleteCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteClusterResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "patch": {
        "summary": "Patch cluster",
        "description": "Allows partial updates to specific fields of the cluster spec. Patching allowed fields does not require a cluster restart or downtime.",
        "operationId": "patchCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PatchClusterResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to patch.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "spec",
            "description": "The new spec for the cluster.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClusterSpec",
              "required": [
                "spec"
              ]
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/config": {
      "post": {
        "summary": "Change cluster configuration",
        "description": "Changes cluster settings related to 1C platform configuration and networking. Typically requires short downtime and/or a cluster restart to apply the changes.",
        "operationId": "changeClusterConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ChangeClusterConfigResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to modify.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangeClusterConfigBody"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/domains": {
      "get": {
        "summary": "List cluster domains",
        "description": "Retrieves a list of domains linked to the cluster.",
        "operationId": "listClusterDomains",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClusterDomainsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to filter cluster domains on.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "post": {
        "summary": "Register cluster domain",
        "description": "Registers a custom domain to access the web-publications of the specified cluster. Before calling this method, a DNS CNAME record must be created pointing to the automatically generated web-publication domain of the cluster (formatted as {id}.wc.{region}.1c.selcloud.ru) with a TTL of 300 seconds.",
        "operationId": "registerClusterDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RegisterClusterDomainResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to register domain for.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RegisterClusterDomainBody"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/domains/{domainId}": {
      "delete": {
        "summary": "Delete cluster domain",
        "description": "Deletes a cluster domain.",
        "operationId": "deleteClusterDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteClusterDomainResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster the domain is linked to.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "domainId",
            "description": "Identifier of the domain to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "patch": {
        "summary": "Patch cluster domain",
        "description": "Allows partial updates to specific fields of the cluster domain spec. Patching allowed fields does require a linked cluster restart or downtime.",
        "operationId": "patchClusterDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PatchClusterDomainResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster the domain is linked to.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "domainId",
            "description": "Identifier of the domain to patch.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "spec",
            "description": "The new spec for the cluster domain.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClusterDomainSpec",
              "required": [
                "spec"
              ]
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/domains/{domainId}/transfer": {
      "post": {
        "summary": "Transfer cluster domain",
        "description": "Transfers a cluster domain from one cluster to another. The DNS record must be updated to point to the target cluster *before* calling this endpoint.",
        "operationId": "transferClusterDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/TransferClusterDomainResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster the domain is linked to.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "domainId",
            "description": "Identifier of the domain to transfer.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransferClusterDomainBody"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/logs/tech-journal/config": {
      "get": {
        "summary": "Retrieve tech journal log collection configuration.",
        "description": "Returns the current configuration used for collecting tech journal logs from the cluster.",
        "operationId": "getTechJournalLogsConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetTechJournalLogsConfigResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Cluster identifier from which the current tech journal log collection configuration will be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/logs/tech-journal/plans": {
      "get": {
        "summary": "List tech journal log collection plans for cluster.",
        "description": "Returns all tech journal log collection plans for the cluster.",
        "operationId": "listTechJournalLogPlans",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListTechJournalLogPlansResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Cluster identifier for which the tech journal log collection plans will be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "post": {
        "summary": "Create tech journal log collection plan.",
        "description": "Creates a tech journal log collection plan for the cluster.",
        "operationId": "createTechJournalLogPlan",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateTechJournalLogPlanResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Cluster identifier for which the tech journal log collection plan will be created.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateTechJournalLogPlanBody"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/logs/tech-journal/plans/{planId}/disable": {
      "post": {
        "summary": "Disable tech journal log collection plan.",
        "description": "Disables a tech journal log collection plan in the cluster, canceling all current or scheduled collection tasks.",
        "operationId": "disableTechJournalLogPlan",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DisableTechJournalLogPlanResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Cluster identifier in which the tech journal log collection plan will be disabled.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "planId",
            "description": "Identifier of tech journal log collection plan that will be disabled.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/maintenance": {
      "get": {
        "summary": "List cluster maintenance events",
        "description": "Retrieves a paginated list of maintenance events for a specific cluster using cursor-based pagination.",
        "operationId": "listClusterMaintenanceEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClusterMntEventsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to retrieve maintenance events for.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/metrics": {
      "get": {
        "summary": "Get cluster metrics",
        "description": "Retrieves metrics for a specific cluster.",
        "operationId": "getClusterMetrics",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetClusterMetricsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to retrieve metrics for.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "timeRange.start",
            "description": "The start timestamp of the time range.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "timeRange.end",
            "description": "The end timestamp of the time range.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/resize": {
      "post": {
        "summary": "Resize cluster",
        "description": "Allows adding more compute resources and/or storage to the cluster. Storage size can only be increased or remain the same; downsizing is not supported. Compute resources such as CPU and RAM can be downsized.",
        "operationId": "resizeCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ResizeClusterResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to resize.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ResizeClusterBody"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/restart": {
      "post": {
        "summary": "Restart cluster",
        "description": "Restarts a cluster, typically requiring short downtime.",
        "operationId": "restartCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RestartClusterResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to restart.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/sessions": {
      "get": {
        "summary": "List cluster sessions",
        "description": "Retrieves a list of user sessions for a specific cluster.",
        "operationId": "listClusterSessions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClusterSessionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to retrieve sessions for.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "infobaseId",
            "description": "Identifier of the infobase to filter the sessions.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/sessions/terminate": {
      "post": {
        "summary": "Terminate cluster session",
        "description": "Terminates one or more user sessions in the specified cluster.",
        "operationId": "terminateClusterSession",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/TerminateClusterSessionResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to terminate sessions for.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TerminateClusterSessionBody"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/upgrade": {
      "post": {
        "summary": "Upgrade cluster",
        "description": "Upgrades the 1C platform version of the cluster. Downgrading is not allowed.",
        "operationId": "upgradeCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpgradeClusterResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to upgrade.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpgradeClusterBody"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/volumes": {
      "get": {
        "summary": "List cluster volumes",
        "description": "Retrieves a list of volumes mounted to the cluster.",
        "operationId": "listClusterVolumes",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListClusterVolumesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to retrieve volumes for.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "post": {
        "summary": "Mount volume to the cluster",
        "description": "Mounts a volume to the specified cluster.",
        "operationId": "mountClusterVolume",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/MountClusterVolumeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to mount the volume to.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MountClusterVolumeBody"
            }
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/clusters/{id}/volumes/{volumeId}": {
      "delete": {
        "summary": "Unmount specific volume from cluster",
        "description": "Unmounts a specific volume from the specified cluster.",
        "operationId": "unmountClusterVolume",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UnmountClusterVolumeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the cluster to unmount the volume from.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "volumeId",
            "description": "Identifier of the volume to unmount.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/datastore-flavors": {
      "get": {
        "summary": "List datastore flavors",
        "description": "Retrieves a list of supported datastore flavors.",
        "operationId": "listDatastoreFlavors",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListDatastoreFlavorsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "includeDeprecated",
            "description": "Whether to include deprecated datastore flavors in the result set.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Datastores"
        ]
      }
    },
    "/datastore-flavors/constraints": {
      "get": {
        "summary": "Get resource allocation constraints for datastore flavors",
        "description": "Retrieves resource allocation constraints for custom datastore flavors.",
        "operationId": "listDatastoreFlavorConstraints",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetDatastoreFlavorConstraintsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Datastores"
        ]
      }
    },
    "/datastore-types": {
      "get": {
        "summary": "List datastore types",
        "description": "Retrieves a list of supported datastore types.",
        "operationId": "listDatastoreTypes",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListDatastoreTypesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Datastores"
        ]
      }
    },
    "/datastores": {
      "get": {
        "summary": "List datastores",
        "description": "Retrieves a paginated list of datastores using cursor-based pagination.",
        "operationId": "listDatastores",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListDatastoresResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Datastores"
        ]
      },
      "post": {
        "summary": "Create datastore",
        "description": "Creates a new datastore (database cluster) that can store data for multiple infobases.",
        "operationId": "createDatastore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateDatastoreResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateDatastoreRequest"
            }
          }
        ],
        "tags": [
          "Datastores"
        ]
      }
    },
    "/datastores/{id}": {
      "get": {
        "summary": "Get datastore",
        "description": "Retrieves the details of a datastore.",
        "operationId": "getDatastore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetDatastoreResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the datastore to retrieve.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Datastores"
        ]
      },
      "delete": {
        "summary": "Delete datastore",
        "description": "Deletes a datastore. All infobases linked to the datastore must be deleted first.",
        "operationId": "deleteDatastore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteDatastoreResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the datastore to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Datastores"
        ]
      },
      "patch": {
        "summary": "Patch datastore",
        "description": "Enables partial updates to the datastore specification.",
        "operationId": "patchDatastore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PatchDatastoreResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the datastore to patch.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "spec",
            "description": "The new spec for the datastore.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DatastoreSpec",
              "required": [
                "spec"
              ]
            }
          }
        ],
        "tags": [
          "Datastores"
        ]
      }
    },
    "/datastores/{id}/maintenance": {
      "get": {
        "summary": "List datastore maintenance events",
        "description": "Retrieves a list of maintenance events for a specific datastore, ordered in reverse chronological order.",
        "operationId": "listDatastoreMaintenanceEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListDatastoreMntEventsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the datastore to retrieve maintenance events for.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Datastores"
        ]
      }
    },
    "/datastores/{id}/resize": {
      "post": {
        "summary": "Resize datastore",
        "description": "Enables adding more compute resources and/or storage to the datastore. Storage can only be increased or remain the same; downsizing is not supported.",
        "operationId": "resizeDatastore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ResizeDatastoreResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the datastore to resize.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ResizeDatastoreBody"
            }
          }
        ],
        "tags": [
          "Datastores"
        ]
      }
    },
    "/infobases": {
      "get": {
        "summary": "List infobases",
        "description": "Returns a paginated list of infobases using cursor-based pagination.",
        "operationId": "listInfobases",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListInfobasesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "clusterId",
            "description": "Identifier of the cluster to filter infobases on.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "datastoreId",
            "description": "Datastore identifier used to filter infobases.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Infobases"
        ]
      },
      "post": {
        "summary": "Create infobase",
        "description": "Creates a new 1C infobase in the specified cluster and datastore.",
        "operationId": "createInfobase",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateInfobaseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateInfobaseRequest"
            }
          }
        ],
        "tags": [
          "Infobases"
        ]
      }
    },
    "/infobases/{id}": {
      "get": {
        "summary": "Get infobase",
        "description": "Retrieves details of a specific infobase.",
        "operationId": "getInfobase",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetInfobaseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to retrieve.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Infobases"
        ]
      },
      "delete": {
        "summary": "Delete infobase",
        "description": "Deletes the specified infobase.",
        "operationId": "deleteInfobase",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteInfobaseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Infobases"
        ]
      },
      "patch": {
        "summary": "Patch infobase",
        "description": "Enables partial updates to the infobase specification.",
        "operationId": "patchInfobase",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PatchInfobaseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to patch.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "spec",
            "description": "The new spec for the infobase.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InfobaseSpec",
              "required": [
                "spec"
              ]
            }
          }
        ],
        "tags": [
          "Infobases"
        ]
      }
    },
    "/infobases/{id}/scheduled-jobs/allow": {
      "post": {
        "summary": "Enable scheduled jobs in infobase",
        "description": "Allows scheduled jobs to run in the specified infobase.",
        "operationId": "allowInfobaseScheduledJobs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/AllowScheduledJobsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to allow scheduled jobs in.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AllowScheduledJobsBody"
            }
          }
        ],
        "tags": [
          "Infobases"
        ]
      }
    },
    "/infobases/{id}/scheduled-jobs/deny": {
      "post": {
        "summary": "Disable scheduled jobs in infobase",
        "description": "Prevents scheduled jobs from running in the specified infobase.",
        "operationId": "denyInfobaseScheduledJobs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DenyScheduledJobsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to deny scheduled jobs in.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DenyScheduledJobsBody"
            }
          }
        ],
        "tags": [
          "Infobases"
        ]
      }
    },
    "/infobases/{id}/sessions/allow": {
      "post": {
        "summary": "Allow user sessions in infobase",
        "description": "Enables new user sessions in the specified infobase.",
        "operationId": "allowInfobaseSessions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/AllowInfobaseSessionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to allow sessions in.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AllowInfobaseSessionsBody"
            }
          }
        ],
        "tags": [
          "Infobases"
        ]
      }
    },
    "/infobases/{id}/sessions/deny": {
      "post": {
        "summary": "Deny user sessions in infobase",
        "description": "Prevents new user sessions from being established in the specified infobase.",
        "operationId": "denyInfobaseSessions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DenyInfobaseSessionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to deny sessions in.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DenyInfobaseSessionsBody"
            }
          }
        ],
        "tags": [
          "Infobases"
        ]
      }
    },
    "/infobases/{id}/transfer": {
      "post": {
        "summary": "Transfer infobase",
        "description": "Transfers an infobase from one cluster to another while keeping the data in the same datastore.",
        "operationId": "transferInfobase",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/TransferInfobaseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase to transfer.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransferInfobaseBody"
            }
          }
        ],
        "tags": [
          "Infobases"
        ]
      }
    },
    "/infobases/{id}/web-pub/config": {
      "get": {
        "summary": "Get infobase web-publication configuration",
        "description": "Retrieves the configuration used for infobase web-publication.",
        "operationId": "getInfobaseWebPublicationConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetInfobaseWebPubConfigResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase for which the web-publication config is requested.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Infobases"
        ]
      },
      "post": {
        "summary": "Update infobase web-publication configuration",
        "description": "Updates the configuration used for infobase web publication.",
        "operationId": "updateInfobaseWebPublicationConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateInfobaseWebPubConfigResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the infobase for which the web-publication config needs to be updated.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateInfobaseWebPubConfigBody"
            }
          }
        ],
        "tags": [
          "Infobases"
        ]
      }
    },
    "/license/activated/{clusterId}": {
      "get": {
        "summary": "List activated licenses",
        "description": "Retrieves a paginated list of activated licenses on a specific cluster using cursor-based pagination.",
        "operationId": "listActivatedLicenses",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListActivatedLicensesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "Identifier of the cluster to list activated licenses for.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "licenseRequestId",
            "description": "Identifier of the license request to return activations for.\nIf not provided - licenses that owned by the customer will be returned.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Licenses"
        ]
      }
    },
    "/license/rent": {
      "get": {
        "summary": "List rented licenses for 1C cloud",
        "description": "Retrieves a paginated list of all active rented licenses in the 1C cloud environment.",
        "operationId": "listLicensesRents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListRentsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "Cluster identifier with rented and activated licenses.",
            "in": "query",
            "required": true,
            "type": "string"
          },
          {
            "name": "cursor.cursor",
            "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "cursor.limit",
            "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "Licenses"
        ]
      },
      "post": {
        "summary": "Rent licenses for 1C cloud",
        "description": "Retrieves licenses from the registry and activates them in the specified 1C cloud cluster.",
        "operationId": "rentLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RentResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RentRequest"
            }
          }
        ],
        "tags": [
          "Licenses"
        ]
      }
    },
    "/license/rent/price": {
      "post": {
        "summary": "Calculates rented license price",
        "description": "Retrieves price of the rented license for 1C cloud",
        "operationId": "calculateLicensesRentPrice",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CalculateRentPriceResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CalculateRentPriceRequest"
            }
          }
        ],
        "tags": [
          "Licenses"
        ]
      }
    },
    "/license/rent/{id}": {
      "get": {
        "summary": "Get rented license",
        "description": "Returns the details of the rented license.",
        "operationId": "getLicenseRent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetRentResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Rented license identifier.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Licenses"
        ]
      }
    },
    "/license/rent/{rentId}": {
      "delete": {
        "summary": "Cancel licenses rent for 1C cloud",
        "description": "Revokes rented licenses, deactivates them on the cluster, and notifies the license registry.",
        "operationId": "cancelLicenseRent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CancelRentResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "rentId",
            "description": "Rented license identifier.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Licenses"
        ]
      }
    },
    "/license/{clusterId}/activate": {
      "post": {
        "summary": "Activate license",
        "description": "Adds and activates a license on the specific cluster.",
        "operationId": "activateLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ActivateLicenseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "Cluster identifier for which the license will be activated.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ActivateLicenseBody"
            }
          }
        ],
        "tags": [
          "Licenses"
        ]
      }
    },
    "/license/{id}": {
      "get": {
        "summary": "Get activated license",
        "description": "Returns the details of the specific activated license.",
        "operationId": "getLicenseActivation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetLicenseActivationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "License activation identifier.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Licenses"
        ]
      }
    },
    "/license/{licenseId}/deactivate": {
      "delete": {
        "summary": "Deactivate license",
        "description": "Deactivates a license on the specific cluster.",
        "operationId": "deactivateLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeactivateLicenseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "parameters": [
          {
            "name": "licenseId",
            "description": "License activation identifier.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Licenses"
        ]
      }
    },
    "/usage": {
      "get": {
        "summary": "Get service usage stats",
        "description": "Returns service usage statistics for the current project.",
        "operationId": "getServiceUsage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetServiceUsageResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/Status"
            }
          }
        },
        "tags": [
          "Service Usage and Limits"
        ]
      }
    }
  },
  "definitions": {
    "APIKey": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the API key.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The human-readable name of the API key.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "The ID of the project the API key belongs to.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the API key was created.",
          "readOnly": true
        }
      },
      "description": "APIKey represents an API key that allows a customer to pull metrics from the /metrics endpoint."
    },
    "Any": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
        }
      },
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
    },
    "CreateAPIKeyRequest": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The human-readable name of the API key."
        }
      },
      "description": "Represents the request specification for the \"create API key\" operation.",
      "required": [
        "name"
      ]
    },
    "CreateAPIKeyResponse": {
      "type": "object",
      "properties": {
        "apiKey": {
          "$ref": "#/definitions/APIKey",
          "description": "The newly created API key.",
          "readOnly": true
        },
        "sourceValue": {
          "type": "string",
          "description": "The original, unhashed API key value shown to the customer only once.",
          "readOnly": true
        }
      },
      "description": "Represents the response for the \"Create API key\" operation."
    },
    "DeleteAPIKeyResponse": {
      "type": "object",
      "description": "Represents the response for the \"Delete API key\" operation."
    },
    "Endpoint": {
      "type": "object",
      "properties": {
        "protocol": {
          "type": "string",
          "description": "The protocol used by the endpoint (e.g., \"https\", \"grpc\").",
          "readOnly": true
        },
        "endpoint": {
          "type": "string",
          "description": "The network address (URL or hostname) of the service entry point.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "The endpoint type value (e.g., \"api\", \"metrics\").",
          "readOnly": true
        }
      }
    },
    "GetRegionsResponse": {
      "type": "object",
      "properties": {
        "regions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Region"
          },
          "description": "The list of supported regions and their settings.",
          "readOnly": true
        }
      }
    },
    "GetServiceConfigResponse": {
      "type": "object",
      "properties": {
        "config": {
          "$ref": "#/definitions/ServiceConfig",
          "description": "The global service configuration.",
          "readOnly": true
        }
      }
    },
    "GetServiceEndpointsResponse": {
      "type": "object",
      "properties": {
        "endpoints": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ServiceEndpoint"
          },
          "description": "The list of regional service endpoints.",
          "readOnly": true
        }
      }
    },
    "ListAPIKeysResponse": {
      "type": "object",
      "properties": {
        "apiKeys": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/APIKey"
          },
          "description": "A list of API keys associated with the authentication token (project-scoped).",
          "readOnly": true
        }
      },
      "description": "Represents the response for the \"List API keys\" operation."
    },
    "PatchAPIKeyBody": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The human-readable name of the API key for updating."
        }
      },
      "description": "Represents the request for the \"Patch API key\" operation.",
      "required": [
        "name"
      ]
    },
    "PatchAPIKeyResponse": {
      "type": "object",
      "properties": {
        "apiKey": {
          "$ref": "#/definitions/APIKey",
          "description": "The updated API key with applied changes.",
          "readOnly": true
        }
      },
      "description": "Represents the response for the \"Patch API key\" operation."
    },
    "Region": {
      "type": "object",
      "properties": {
        "regionName": {
          "type": "string",
          "description": "The human-readable name of the region (e.g., \"Saint-Petersburg\").",
          "readOnly": true
        },
        "regionCode": {
          "type": "string",
          "description": "The machine-readable code of the region (e.g., \"ru-9\").",
          "readOnly": true
        },
        "regionPool": {
          "type": "string",
          "description": "The name of the underlying cloud infrastructure pool used in this region.",
          "readOnly": true
        }
      }
    },
    "ServiceConfig": {
      "type": "object",
      "properties": {
        "defaultRegion": {
          "type": "string",
          "description": "The code of the default region (e.g., \"ru-9\").",
          "readOnly": true
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Region"
          },
          "description": "A list of supported regions and their settings.",
          "readOnly": true
        },
        "endpoints": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ServiceEndpoint"
          },
          "description": "A list of regional service endpoints.",
          "readOnly": true
        }
      }
    },
    "ServiceEndpoint": {
      "type": "object",
      "properties": {
        "region": {
          "type": "string",
          "description": "The region code (e.g., \"ru-9\").",
          "readOnly": true
        },
        "endpoints": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Endpoint"
          },
          "description": "The list of service endpoints available in the region.",
          "readOnly": true
        }
      }
    },
    "Status": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Any"
          },
          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use."
        }
      },
      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors)."
    },
    "ActivateLicenseBody": {
      "type": "object",
      "properties": {
        "parameters": {
          "$ref": "#/definitions/LicenseDetails",
          "description": "Parameters that will be used for license activation, such as country, town, PIN code, etc."
        },
        "cliCommand": {
          "type": "string",
          "description": "CLI command to activate the license."
        }
      }
    },
    "ActivateLicenseResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "License activation identifier.",
          "readOnly": true
        }
      }
    },
    "Aggregates": {
      "type": "object",
      "properties": {
        "min": {
          "type": "number",
          "format": "double",
          "description": "Minimum recorded value in the dataset."
        },
        "max": {
          "type": "number",
          "format": "double",
          "description": "Maximum recorded value within the dataset."
        },
        "avg": {
          "type": "number",
          "format": "double",
          "description": "Average value computed over the dataset."
        }
      },
      "description": "Represents the aggregated statistics of a dataset. This includes the minimum, maximum,\nand average values recorded within the dataset."
    },
    "AllowInfobaseSessionsBody": {
      "type": "object",
      "properties": {
        "infobaseUser": {
          "type": "string",
          "description": "Infobase user name. Required for non-empty infobases."
        },
        "infobasePassword": {
          "type": "string",
          "description": "Infobase user password. Required for non-empty infobases."
        }
      }
    },
    "AllowInfobaseSessionsResponse": {
      "type": "object"
    },
    "AllowScheduledJobsBody": {
      "type": "object",
      "properties": {
        "infobaseUser": {
          "type": "string",
          "description": "Infobase user name. Required for non-empty infobases."
        },
        "infobasePassword": {
          "type": "string",
          "description": "Infobase user password. Required for non-empty infobases."
        }
      }
    },
    "AllowScheduledJobsResponse": {
      "type": "object"
    },
    "Backup": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the backup.\nThis is a read-only field.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The name of this backup.\nAutomatically generated for automated backups or when the customer does not\nprovide a name."
        },
        "backupPlanId": {
          "type": "string",
          "description": "Identifier of the backup plan that triggered this backup.\nThis field is populated only for backups created automatically through\na backup plan.\nThis is a read-only field.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the project this backup is associated with.\nThis is a read-only field.",
          "readOnly": true
        },
        "infobaseId": {
          "type": "string",
          "description": "Identifier of the infobase that was backed up."
        },
        "type": {
          "$ref": "#/definitions/BackupType",
          "description": "The type of backup performed (e.g., database dump or data file)."
        },
        "time": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp when the backup process started.\nThis is a read-only field.",
          "readOnly": true
        },
        "status": {
          "$ref": "#/definitions/BackupStatus",
          "description": "The current status of the backup (e.g., in progress, completed, failed).\nThis is a read-only field.",
          "readOnly": true
        },
        "reason": {
          "type": "string",
          "description": "A detailed message explaining the current backup status.\nThis is a read-only field.",
          "readOnly": true
        },
        "size": {
          "type": "string",
          "format": "uint64",
          "description": "The total size of the backup in bytes.\nThis is a read-only field.",
          "readOnly": true
        },
        "platformVersion": {
          "type": "string",
          "description": "The version of the 1C application platform at the time of backup.\nThis is a read-only field.",
          "readOnly": true
        },
        "vaultId": {
          "type": "string",
          "description": "Identifier of the backup vault where this backup is stored.\nIf empty, the backup is stored in the default Selectel-managed storage."
        },
        "vault": {
          "$ref": "#/definitions/BackupVault",
          "description": "The backup vault used for storage.\nIf empty, the backup is stored in the default Selectel-managed storage.\nThis is a read-only field.",
          "readOnly": true
        }
      },
      "description": "Represents a backup (or snapshot) of an infobase, containing either\na database dump or a .dt file dump.\nBackups can be created automatically via a scheduled backup plan or manually\nby the customer.",
      "required": [
        "infobaseId",
        "type"
      ]
    },
    "BackupPlan": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the backup plan. This is a read-only field.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the project this backup plan belongs to.\nThis is a read-only field.",
          "readOnly": true
        },
        "infobaseId": {
          "type": "string",
          "description": "Identifier of the infobase this backup plan is created for."
        },
        "schedule": {
          "type": "string",
          "description": "A cron expression that defines the start time of the backup window."
        },
        "scheduleGuiEditor": {
          "type": "boolean",
          "description": "A boolean flag indicating which tab in the UI (visual editor or plain\ncron expression input) was used to create the cron expression in the\nschedule field. This is only a UI hint for selecting the correct tab\nwhen editing because the visual editor cannot handle all cron\nexpressions.\nDefault value is false."
        },
        "enabled": {
          "type": "boolean",
          "description": "Indicates whether this backup plan is enabled. A disabled backup plan\nwon't trigger automated backups.\nDefault value is true."
        },
        "maxBackupsToRetain": {
          "type": "string",
          "format": "uint64",
          "description": "Defines the maximum number of backups to retain for this backup plan.\nOlder backups exceeding this count will be deleted."
        },
        "vaultId": {
          "type": "string",
          "description": "Identifier of the backup vault used for storing and accessing backups\nfor this backup plan. If left empty, a default storage managed by\nSelectel will be used."
        },
        "vault": {
          "$ref": "#/definitions/BackupVault",
          "description": "The backup vault in use. Empty if the default Selectel-owned\nstorage is used.\nThis is a read-only field.",
          "readOnly": true
        },
        "disabledReason": {
          "$ref": "#/definitions/BackupPlanDisabledReason",
          "description": "Specifies the reason why the backup plan was disabled.\nThis is a read-only field.",
          "readOnly": true
        }
      },
      "description": "A backup plan defines a schedule and retention policy for automated backups\nof infobase, including when backups are taken, how long they are retained,\nand where they are kept — either in a customer-managed or Selectel-owned\nbackup vault.",
      "required": [
        "infobaseId",
        "schedule",
        "maxBackupsToRetain"
      ]
    },
    "BackupPlanDisabledReason": {
      "type": "string",
      "enum": [
        "BACKUP_PLAN_DISABLED_REASON_UNSPECIFIED",
        "BACKUP_PLAN_DISABLED_REASON_CUSTOMER_REQUEST",
        "BACKUP_PLAN_DISABLED_REASON_VAULT_ERROR"
      ],
      "default": "BACKUP_PLAN_DISABLED_REASON_UNSPECIFIED",
      "description": "Represents the reasons why a backup plan was disabled.\n\n - BACKUP_PLAN_DISABLED_REASON_CUSTOMER_REQUEST: Disabled per the customer's request.\n - BACKUP_PLAN_DISABLED_REASON_VAULT_ERROR: Disabled due to an issue with the vault."
    },
    "BackupStatus": {
      "type": "string",
      "enum": [
        "BACKUP_STATUS_UNSPECIFIED",
        "BACKUP_STATUS_PENDING",
        "BACKUP_STATUS_PREPARING",
        "BACKUP_STATUS_IN_PROGRESS",
        "BACKUP_STATUS_FINISHING",
        "BACKUP_STATUS_FAILED",
        "BACKUP_STATUS_SUCCEEDED",
        "BACKUP_STATUS_CANCELLED"
      ],
      "default": "BACKUP_STATUS_UNSPECIFIED",
      "description": "Represents the possible statuses of a backup.\n\n - BACKUP_STATUS_PENDING: Backup is scheduled/created but has not yet been picked up by the worker\nprocess.\n - BACKUP_STATUS_PREPARING: Preparing the infobase and datastore for backup.\n - BACKUP_STATUS_IN_PROGRESS: Backup is currently in progress.\n - BACKUP_STATUS_FINISHING: Restoring the infobase and DBaaS store to normal operations.\n - BACKUP_STATUS_FAILED: Backup has failed.\n - BACKUP_STATUS_SUCCEEDED: Backup completed successfully.\n - BACKUP_STATUS_CANCELLED: Backup was not performed due to a cancellation."
    },
    "BackupType": {
      "type": "string",
      "enum": [
        "BACKUP_TYPE_UNSPECIFIED",
        "BACKUP_TYPE_DB_DUMP",
        "BACKUP_TYPE_DT_DUMP"
      ],
      "default": "BACKUP_TYPE_UNSPECIFIED",
      "description": "Represents the possible types of a backup.\n\n - BACKUP_TYPE_DB_DUMP: Database dump backup.\n - BACKUP_TYPE_DT_DUMP: DT file backup."
    },
    "BackupVault": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the backup vault.\nThis is a read-only field.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/BackupVaultSpec",
          "description": "The desired configuration for the vault."
        },
        "state": {
          "$ref": "#/definitions/BackupVaultState",
          "description": "The current state of the backup vault.\nThis is a read-only field.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the backup vault was created.\nThis is a read-only field.",
          "readOnly": true
        }
      },
      "description": "A backup vault is a customer-managed object storage container used for\nstoring backups. By using their own storage container, customers gain full\ncontrol over their backup data, enabling advanced automation workflows—such\nas mirroring backups to other regions or third-party service providers for\nredundancy, disaster recovery, or compliance purposes.",
      "required": [
        "spec"
      ]
    },
    "BackupVaultSpec": {
      "type": "object",
      "properties": {
        "s3": {
          "$ref": "#/definitions/S3Config",
          "description": "S3-compatible object storage configuration for requests and authentication.\nCurrently, Selectel is the only supported object storage service provider."
        }
      },
      "description": "Defines the configuration for a backup vault.",
      "required": [
        "s3"
      ]
    },
    "BackupVaultState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/BackupVaultStatus",
          "description": "The current status of the vault.\nThis is a read-only field.",
          "readOnly": true
        }
      },
      "description": "Represents the current state of a backup vault."
    },
    "BackupVaultStatus": {
      "type": "string",
      "enum": [
        "BACKUP_VAULT_STATUS_UNSPECIFIED",
        "BACKUP_VAULT_STATUS_ACTIVE",
        "BACKUP_VAULT_STATUS_ERRORED",
        "BACKUP_VAULT_STATUS_DELETED"
      ],
      "default": "BACKUP_VAULT_STATUS_UNSPECIFIED",
      "description": "Represents the possible statuses of a backup vault.\n\n - BACKUP_VAULT_STATUS_ACTIVE: Vault is successfully initialized and active.\n - BACKUP_VAULT_STATUS_ERRORED: Vault has encountered an unrecoverable error and is no longer usable.\nThis usually indicates that the underlying object storage container is\ninaccessible due to invalid permissions or expired credentials.\n - BACKUP_VAULT_STATUS_DELETED: Vault is deleted and no longer available for use."
    },
    "Bounds": {
      "type": "object",
      "properties": {
        "min": {
          "type": "number",
          "format": "double",
          "description": "The calculated lower bound of the observed metric values.\nExample: If monitoring CPU usage, this could represent a statistical lower\nbound rather than a strict limit."
        },
        "max": {
          "type": "number",
          "format": "double",
          "description": "The calculated upper bound of the observed metric values.\nExample: For CPU usage, this could indicate an estimated peak usage rather\nthan a fixed limit."
        }
      },
      "description": "Represents the calculated bounds for observed metric values."
    },
    "CalculateRentPriceRequest": {
      "type": "object",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "Cluster identifier for which the rented license price will be returned."
        },
        "rentParameters": {
          "$ref": "#/definitions/RentParameters",
          "description": "License rent requests."
        },
        "licenseRequestId": {
          "type": "string",
          "description": "License rent request identifier."
        }
      },
      "required": [
        "clusterId"
      ]
    },
    "CalculateRentPriceResponse": {
      "type": "object",
      "properties": {
        "total": {
          "type": "string",
          "format": "uint64",
          "description": "Total price of the rented license in cents.",
          "readOnly": true
        },
        "price": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/RentPrice"
          },
          "description": "List of prices.\nEvery price consists of license types and their rent price per unit.",
          "readOnly": true
        },
        "nextPaymentAt": {
          "type": "string",
          "format": "date-time",
          "description": "Next payment date.\nThis field has a value if license rent request identifier was specified in the request\nand its status is succeeded."
        }
      }
    },
    "CancelRentResponse": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/LicenseRequest",
          "description": "State of the license request after the cancellation request.",
          "readOnly": true
        }
      }
    },
    "ChangeClusterConfigBody": {
      "type": "object",
      "properties": {
        "config": {
          "$ref": "#/definitions/ClusterConfig",
          "description": "The desired configuration for the cluster."
        }
      },
      "required": [
        "config"
      ]
    },
    "ChangeClusterConfigResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The state of the cluster after the configuration update request.",
          "readOnly": true
        }
      }
    },
    "Cluster": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the cluster resource.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the Selectel project to which this cluster belongs.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/ClusterSpec",
          "description": "The desired state of the cluster."
        },
        "state": {
          "$ref": "#/definitions/ClusterState",
          "description": "The current observed state of the cluster, reflecting its real-time\nstatus.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the cluster was created.",
          "readOnly": true
        }
      },
      "description": "Represents a 1C cluster resource, including its desired and actual state.\nA cluster is a logical unit consisting of 1C servers, configuration,\nand allocated resources.",
      "required": [
        "spec"
      ]
    },
    "ClusterConfig": {
      "type": "object",
      "properties": {
        "webServerEnabled": {
          "type": "boolean",
          "description": "Indicates whether the web server (Apache2) is enabled for the cluster.\nDisabling the web server will make all cluster's web publications\nunavailable.\nDefaults to True."
        },
        "webClientInternetIngressEnabled": {
          "type": "boolean",
          "description": "Indicates whether web publications are accessible through the Internet.\nDefaults to True."
        },
        "webClientIpAllowList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of allowed IPv4 prefixes for web publications access.\nAn empty list means unrestricted access is allowed."
        },
        "debugMode": {
          "type": "boolean",
          "description": "Enables or disables 1C debug mode for troubleshooting purposes."
        }
      },
      "description": "Defines additional configuration settings for a cluster.\nIncludes web access control, debug mode, and other platform-specific options."
    },
    "ClusterDomain": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the cluster domain resource.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/ClusterDomainSpec",
          "description": "The desired state of the cluster domain."
        },
        "state": {
          "$ref": "#/definitions/ClusterDomainState",
          "description": "The current observed state of the cluster domain, reflecting its real-time\nstatus.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the cluster domain was created.",
          "readOnly": true
        }
      },
      "description": "A personalized or branded domain name (like 1c.company.com) used alongside\nwith the default automatically-generated domain (like\n{id}.wc.{region}.1c.selcloud.ru) to expose the web-publications of the\ncluster.",
      "required": [
        "spec"
      ]
    },
    "ClusterDomainSpec": {
      "type": "object",
      "properties": {
        "fqdn": {
          "type": "string",
          "description": "The fully qualified domain name of the cluster domain."
        },
        "clusterId": {
          "type": "string",
          "description": "Identifier of the cluster associated with the cluster domain."
        },
        "customCert": {
          "$ref": "#/definitions/X509Keypair",
          "description": "The custom X.509 TLS certificate used to secure the cluster domain.\nThe customer is responsible for managing and renewing the certificate."
        },
        "autoIssuedCert": {
          "type": "boolean",
          "description": "Whether to use an auto-issued and auto-renewed TLS certificate.\nOur system is responsible for managing and renewing the certificate."
        },
        "zoneId": {
          "type": "string",
          "description": "Optional name or identifier for the DNS zone in which the DNS record is being created.\nThis field is provided for the customer's convenience; the backend does not\nuse or validate its value."
        }
      },
      "description": "Defines the desired configuration of the cluster domain.",
      "required": [
        "fqdn",
        "clusterId"
      ]
    },
    "ClusterDomainState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ClusterDomainStatus",
          "description": "The current status of the cluster domain.",
          "readOnly": true
        },
        "health": {
          "$ref": "#/definitions/Health",
          "description": "The health status of the cluster domain.",
          "readOnly": true
        },
        "certExpiresAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the TLS certificate expires.",
          "readOnly": true
        }
      },
      "description": "Represents the current observed state of a cluster domain, including\noperational status and lock information."
    },
    "ClusterDomainStatus": {
      "type": "string",
      "enum": [
        "CLUSTER_DOMAIN_STATUS_UNSPECIFIED",
        "CLUSTER_DOMAIN_STATUS_PENDING",
        "CLUSTER_DOMAIN_STATUS_CREATING",
        "CLUSTER_DOMAIN_STATUS_ACTIVE",
        "CLUSTER_DOMAIN_STATUS_ERRORED",
        "CLUSTER_DOMAIN_STATUS_TRANSFERRING",
        "CLUSTER_DOMAIN_STATUS_MODIFYING",
        "CLUSTER_DOMAIN_STATUS_DELETING",
        "CLUSTER_DOMAIN_STATUS_DELETED"
      ],
      "default": "CLUSTER_DOMAIN_STATUS_UNSPECIFIED",
      "description": "Enum representing the operational status of the cluster domain.\n\n - CLUSTER_DOMAIN_STATUS_PENDING: The cluster domain is waiting while we prepare the environment and\nresources for it.\n - CLUSTER_DOMAIN_STATUS_CREATING: The domain is being linked to the cluster, and a TLS certificate is being\nissued if automatic certificate issuance is enabled.\n - CLUSTER_DOMAIN_STATUS_ACTIVE: The cluster domain is ready to serve users.\n - CLUSTER_DOMAIN_STATUS_ERRORED: The cluster domain has encountered an un-recoverable error and is unusable.\n - CLUSTER_DOMAIN_STATUS_TRANSFERRING: The cluster domain is being moved from one cluster to another.\n - CLUSTER_DOMAIN_STATUS_MODIFYING: The cluster domain is being modified due to a user request.\n - CLUSTER_DOMAIN_STATUS_DELETING: The cluster domain is in the process of being deleted.\n - CLUSTER_DOMAIN_STATUS_DELETED: The cluster domain has been deleted."
    },
    "ClusterFlavor": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the flavor. This field is optional if the user selects\na custom resource configuration."
        },
        "name": {
          "type": "string",
          "description": "The name of the flavor.",
          "readOnly": true
        },
        "vCpu": {
          "type": "string",
          "format": "int64",
          "description": "The number of vCPUs allocated for this flavor."
        },
        "ramMb": {
          "type": "string",
          "format": "int64",
          "description": "The amount of RAM allocated for this flavor, in megabytes."
        },
        "diskGb": {
          "type": "string",
          "format": "int64",
          "description": "The size of the disk allocated for this flavor, in gigabytes."
        },
        "deprecated": {
          "type": "boolean",
          "description": "Indicates whether the flavor is deprecated.\nNew clusters cannot be created with deprecated flavors.",
          "readOnly": true
        },
        "vmType": {
          "$ref": "#/definitions/ClusterFlavorVMType",
          "description": "The virtual machine type (e.g., standard line, high-frequency line).",
          "readOnly": true
        }
      },
      "description": "Defines the configuration of a cluster flavor, which includes\ndetails about the virtual machine's resources like CPU, RAM, and disk size.\nIt also specifies whether the flavor is deprecated and the type of VM.",
      "required": [
        "vCpu",
        "ramMb",
        "diskGb"
      ]
    },
    "ClusterFlavorConstraints": {
      "type": "object",
      "properties": {
        "vCpu": {
          "$ref": "#/definitions/ResourceConstraint",
          "description": "The vCPU allocation constraint for custom configurations.",
          "readOnly": true
        },
        "ramMb": {
          "$ref": "#/definitions/ResourceConstraint",
          "description": "The RAM allocation constraint, in megabytes, for custom configurations.",
          "readOnly": true
        },
        "diskGb": {
          "$ref": "#/definitions/ResourceConstraint",
          "description": "The disk allocation constraint, in gigabytes, for custom configurations.",
          "readOnly": true
        }
      },
      "description": "Defines the resource allocation constraints for a custom cluster\nconfiguration, including vCPU, RAM, and disk space. These constraints\nhelp ensure the configuration adheres to specific resource limits."
    },
    "ClusterFlavorVMType": {
      "type": "string",
      "enum": [
        "CLUSTER_FLAVOR_VM_TYPE_UNSPECIFIED",
        "CLUSTER_FLAVOR_VM_TYPE_STANDARD",
        "CLUSTER_FLAVOR_VM_TYPE_HI_FREQ"
      ],
      "default": "CLUSTER_FLAVOR_VM_TYPE_UNSPECIFIED",
      "description": "Defines the type of virtual machine used for the cluster flavor.\nThis determines the CPU performance characteristics of the VM.\n\n - CLUSTER_FLAVOR_VM_TYPE_STANDARD: The virtual machine with standard CPU type.\n - CLUSTER_FLAVOR_VM_TYPE_HI_FREQ: The virtual machine high frequency CPU type."
    },
    "ClusterLockReason": {
      "type": "string",
      "enum": [
        "CLUSTER_LOCK_REASON_UNSPECIFIED",
        "CLUSTER_LOCK_REASON_PENDING_CREATE",
        "CLUSTER_LOCK_REASON_PENDING_RESIZE",
        "CLUSTER_LOCK_REASON_PENDING_RESTART",
        "CLUSTER_LOCK_REASON_PENDING_UPGRADE",
        "CLUSTER_LOCK_REASON_PENDING_MAINTENANCE",
        "CLUSTER_LOCK_REASON_PENDING_DELETION",
        "CLUSTER_LOCK_REASON_ACTION_IN_PROGRESS",
        "CLUSTER_LOCK_REASON_INFOBASE_PROVISIONING",
        "CLUSTER_LOCK_REASON_PENDING_BLOCK",
        "CLUSTER_LOCK_REASON_PENDING_UNBLOCK",
        "CLUSTER_LOCK_REASON_PENDING_MODIFICATION",
        "CLUSTER_LOCK_REASON_CONFIGURING_ACCESS",
        "CLUSTER_LOCK_REASON_INFOBASE_RESTORING",
        "CLUSTER_LOCK_REASON_INFOBASE_BACKING_UP",
        "CLUSTER_LOCK_REASON_INFOBASE_CONFIGURING"
      ],
      "default": "CLUSTER_LOCK_REASON_UNSPECIFIED",
      "description": "Enum representing the reason why the cluster is currently locked and\nunavailable for modifications.\n\n - CLUSTER_LOCK_REASON_UNSPECIFIED: The unspecified lock reason means that the resource isn't locked by\nany other task or process.\n - CLUSTER_LOCK_REASON_PENDING_CREATE: The cluster is locked because a creation job has been scheduled,\nbut it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_PENDING_RESIZE: The cluster is locked because a resize job has been scheduled,\nbut it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_PENDING_RESTART: The cluster is locked because a restart job has been scheduled,\nbut it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_PENDING_UPGRADE: The cluster is locked because an upgrade job has been scheduled,\nbut it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_PENDING_MAINTENANCE: The cluster is locked because a maintenance job has been scheduled,\nbut it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_PENDING_DELETION: The cluster is locked because a deletion job has been scheduled,\nbut it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_ACTION_IN_PROGRESS: The cluster is locked because an action is currently in progress\n(e.g., creating, upgrading, etc.).\n - CLUSTER_LOCK_REASON_INFOBASE_PROVISIONING: The cluster is locked because an infobase is being created or deleted\nin this cluster.\n - CLUSTER_LOCK_REASON_PENDING_BLOCK: The cluster is locked because a job to block the cluster has been\nscheduled, but it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_PENDING_UNBLOCK: The cluster is locked because a job to unblock the cluster has been\nscheduled, but it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_PENDING_MODIFICATION: The cluster is locked because a job to modify the cluster configuration\nhas been scheduled, but it has not yet been processed by the worker.\n - CLUSTER_LOCK_REASON_CONFIGURING_ACCESS: The cluster is locked because the cluster's public or private access\nis being configured.\n - CLUSTER_LOCK_REASON_INFOBASE_RESTORING: The cluster is locked because an infobase is being restored\nin this cluster.\n - CLUSTER_LOCK_REASON_INFOBASE_BACKING_UP: The cluster is locked because an infobase is being backed up\nin this cluster.\n - CLUSTER_LOCK_REASON_INFOBASE_CONFIGURING: The cluster is locked because an infobase is being configured\nin this cluster."
    },
    "ClusterMetric": {
      "type": "object",
      "properties": {
        "instance": {
          "type": "string",
          "description": "The instance identifier (e.g., hostname) for the cluster instance."
        },
        "timeSeries": {
          "$ref": "#/definitions/TimeSeries",
          "description": "A time series of metric values."
        },
        "aggregates": {
          "$ref": "#/definitions/Aggregates",
          "description": "Aggregated metric values for the requested time period."
        },
        "bounds": {
          "$ref": "#/definitions/Bounds",
          "description": "The calculated upper and lower bounds of the metric values."
        }
      },
      "description": "Represents metrics associated with a cluster, including instance details,\ntime series data, aggregated values, and bounds for the metric values.\nThis message is used to provide a comprehensive view of cluster performance\nover time."
    },
    "ClusterMetrics": {
      "type": "object",
      "properties": {
        "step": {
          "type": "string",
          "format": "uint64",
          "description": "The resolution step for the metrics in seconds."
        },
        "cpuUsage": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMetric"
          },
          "description": "The CPU usage metrics measured in Kubernetes CPU units."
        },
        "cpuUsagePct": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMetric"
          },
          "description": "The CPU usage metrics measured as percentages."
        },
        "memoryUsage": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMetric"
          },
          "description": "The memory usage metrics measured in Kubernetes memory units."
        },
        "memoryUsagePct": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMetric"
          },
          "description": "The memory usage metrics measured as percentages."
        },
        "txBandwidth": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMetric"
          },
          "description": "The transmission data rate in bytes per second."
        },
        "rxBandwidth": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMetric"
          },
          "description": "The reception data rate in bytes per second."
        },
        "diskUsage": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMetric"
          },
          "description": "The disk usage metrics measured in bytes."
        },
        "diskUsagePct": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMetric"
          },
          "description": "The disk usage metrics measured as percentages."
        }
      },
      "description": "Represents a collection of metrics for a cluster, including various resource\nusage metrics such as CPU, memory, bandwidth, and disk. The metrics\nare provided in different formats (e.g., raw values and percentages)\nfor detailed performance analysis over time."
    },
    "ClusterMntEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the maintenance event resource.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the Selectel project the entity belongs to.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/ClusterMntEventSpec",
          "description": "A spec describing the maintenance type and parameters.",
          "readOnly": true
        },
        "state": {
          "$ref": "#/definitions/ClusterMntEventState",
          "description": "The observed state of the maintenance event, reflecting its\nreal-time status.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the maintenance event was created.",
          "readOnly": true
        }
      },
      "description": "Represents a cluster maintenance event."
    },
    "ClusterMntEventSpec": {
      "type": "object",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "Identifier of the cluster this maintenance will be performed for.",
          "readOnly": true
        },
        "tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClusterMntTask"
          },
          "description": "A list of tasks performed during the maintenance event.",
          "readOnly": true
        },
        "scheduledFor": {
          "type": "string",
          "format": "date-time",
          "description": "The scheduled time for the maintenance event to occur.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "description": "A description of the maintenance event.",
          "readOnly": true
        }
      },
      "description": "Represents the specification for a cluster maintenance event.\nThis message contains the details of the cluster being maintained,\nthe tasks to be performed during the maintenance, the scheduled time,\nand a description of the maintenance event."
    },
    "ClusterMntEventState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ClusterMntStatus",
          "description": "The current status of the maintenance event.",
          "readOnly": true
        }
      },
      "description": "Represents the current state of a cluster maintenance event."
    },
    "ClusterMntStatus": {
      "type": "string",
      "enum": [
        "CLUSTER_MNT_STATUS_UNSPECIFIED",
        "CLUSTER_MNT_STATUS_SCHEDULED",
        "CLUSTER_MNT_STATUS_PENDING",
        "CLUSTER_MNT_STATUS_RUNNING",
        "CLUSTER_MNT_STATUS_ERRORED",
        "CLUSTER_MNT_STATUS_SUCCEEDED",
        "CLUSTER_MNT_STATUS_CANCELLED",
        "CLUSTER_MNT_STATUS_RESCHEDULED"
      ],
      "default": "CLUSTER_MNT_STATUS_UNSPECIFIED",
      "description": "Enum representing the various statuses a maintenance event can have.\n\n - CLUSTER_MNT_STATUS_SCHEDULED: The maintenance event has been scheduled.\n - CLUSTER_MNT_STATUS_PENDING: The scheduler has launched the maintenance,\nbut the task is waiting while we prepare the environment for it.\n - CLUSTER_MNT_STATUS_RUNNING: The maintenance is currently being performed.\n - CLUSTER_MNT_STATUS_ERRORED: An un-recoverable error occurred during maintenance,\nand the cluster may not be usable because of the error.\n - CLUSTER_MNT_STATUS_SUCCEEDED: The maintenance successfully completed.\n - CLUSTER_MNT_STATUS_CANCELLED: The maintenance has been cancelled for some reason\n(e.g., customer request).\n - CLUSTER_MNT_STATUS_RESCHEDULED: The maintenance has been rescheduled for a later time\n(e.g., the next maintenance window)."
    },
    "ClusterMntTask": {
      "type": "string",
      "enum": [
        "CLUSTER_MNT_TASK_UNSPECIFIED",
        "CLUSTER_MNT_TASK_UNDERLYING_SOFTWARE_PATCHING",
        "CLUSTER_MNT_TASK_STORAGE_AUTO_SCALING",
        "CLUSTER_MNT_TASK_UNDERLYING_INFRASTRUCTURE_MAINTENANCE"
      ],
      "default": "CLUSTER_MNT_TASK_UNSPECIFIED",
      "description": "Enum representing the different types of tasks that may occur during\na maintenance event.\n\n - CLUSTER_MNT_TASK_UNDERLYING_SOFTWARE_PATCHING: Maintenance task to patch the underlying operating system and/or software.\n - CLUSTER_MNT_TASK_STORAGE_AUTO_SCALING: Cluster storage will be automatically scaled up during the maintenance\nevent.\n - CLUSTER_MNT_TASK_UNDERLYING_INFRASTRUCTURE_MAINTENANCE: Maintenance task to upgrade the underlying infrastructure."
    },
    "ClusterPlatform": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "description": "The version of the 1C platform used by the cluster.",
          "readOnly": true
        },
        "deprecated": {
          "type": "boolean",
          "description": "Indicates whether the platform is deprecated.\nNew clusters cannot be created with deprecated platforms.",
          "readOnly": true
        }
      },
      "description": "The 1C platform settings used by the cluster."
    },
    "ClusterProxy": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the resource.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the Selectel project this entity belongs to.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/ClusterProxySpec",
          "description": "The desired state of the proxy."
        },
        "state": {
          "$ref": "#/definitions/ClusterProxyState",
          "description": "The observed state of the proxy, reflecting its real-time\nstatus.",
          "readOnly": true
        },
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The cluster for which this proxy was created.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp when this proxy was created.",
          "readOnly": true
        }
      },
      "description": "Represents a cluster proxy, which acts as an intermediary between a user\nand the cluster.",
      "required": [
        "spec"
      ]
    },
    "ClusterProxyLockReason": {
      "type": "string",
      "enum": [
        "CLUSTER_PROXY_LOCK_REASON_UNSPECIFIED",
        "CLUSTER_PROXY_LOCK_REASON_PENDING_CREATE",
        "CLUSTER_PROXY_LOCK_REASON_PENDING_DELETION",
        "CLUSTER_PROXY_LOCK_REASON_ACTION_IN_PROGRESS",
        "CLUSTER_PROXY_LOCK_REASON_PENDING_UPDATE"
      ],
      "default": "CLUSTER_PROXY_LOCK_REASON_UNSPECIFIED",
      "description": "Enum representing the reason why the proxy is currently locked and\nunavailable for modifications.\n\n - CLUSTER_PROXY_LOCK_REASON_UNSPECIFIED: The unspecified lock reason means that the proxy isn't locked by\nany other task or process.\n - CLUSTER_PROXY_LOCK_REASON_PENDING_CREATE: The proxy is locked because a creation job has been scheduled,\nbut it has not yet been processed by the worker.\n - CLUSTER_PROXY_LOCK_REASON_PENDING_DELETION: The proxy is locked because a deletion job has been scheduled,\nbut it has not yet been processed by the worker.\n - CLUSTER_PROXY_LOCK_REASON_ACTION_IN_PROGRESS: The proxy is locked because an action is currently in progress\n(e.g., creation, deletion, update).\n - CLUSTER_PROXY_LOCK_REASON_PENDING_UPDATE: The proxy is locked because an update job has been scheduled,\nbut it has not yet been processed by the worker."
    },
    "ClusterProxySpec": {
      "type": "object",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "Identifier of the cluster this proxy belongs to."
        },
        "publicAccess": {
          "type": "boolean",
          "description": "Whether the cluster proxy is publicly available (i.e., has a public IPv4\nand is reachable through the public internet)."
        },
        "networkId": {
          "type": "string",
          "description": "Identifier of the customer's OpenStack network shared with our project.\nRequired if public_access = true."
        },
        "subnetId": {
          "type": "string",
          "description": "Identifier of the OpenStack subnet of the specified network shared with our\nproject. If left empty, the first subnet in the list will be used."
        }
      },
      "description": "Represents the desired configuration for a cluster proxy.\nThis includes details on the associated cluster, access configurations,\nand networking options for the proxy.",
      "required": [
        "clusterId"
      ]
    },
    "ClusterProxyState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ClusterProxyStatus",
          "description": "The current status of the proxy.",
          "readOnly": true
        },
        "lockReason": {
          "$ref": "#/definitions/ClusterProxyLockReason",
          "description": "The reason why the resource has been locked for modifications.\nA non-zero value indicates that the resource cannot be modified at this\nmoment. Once locked, no modifications (including deletion) can be made\nto the resource except by the process that obtained the lock.",
          "readOnly": true
        },
        "address": {
          "type": "string",
          "description": "The address of the proxy (could be a hostname or IP).",
          "readOnly": true
        }
      },
      "description": "Represents the observed state of a cluster proxy.\nIt includes the current status, lock reason, and the address of the proxy."
    },
    "ClusterProxyStatus": {
      "type": "string",
      "enum": [
        "CLUSTER_PROXY_STATUS_UNSPECIFIED",
        "CLUSTER_PROXY_STATUS_PENDING",
        "CLUSTER_PROXY_STATUS_CREATING",
        "CLUSTER_PROXY_STATUS_ACTIVE",
        "CLUSTER_PROXY_STATUS_ERRORED",
        "CLUSTER_PROXY_STATUS_DELETING",
        "CLUSTER_PROXY_STATUS_DELETED",
        "CLUSTER_PROXY_STATUS_UPDATING"
      ],
      "default": "CLUSTER_PROXY_STATUS_UNSPECIFIED",
      "description": "Enum representing the operational status of the proxy.\n\n - CLUSTER_PROXY_STATUS_PENDING: The cluster proxy is waiting while the environment and resources are being\nprepared.\n - CLUSTER_PROXY_STATUS_CREATING: The cluster proxy is being created.\n - CLUSTER_PROXY_STATUS_ACTIVE: The cluster proxy is ready to serve users.\n - CLUSTER_PROXY_STATUS_ERRORED: The cluster proxy encountered an unrecoverable error and is no longer\nusable.\n - CLUSTER_PROXY_STATUS_DELETING: The cluster proxy is being deleted.\n - CLUSTER_PROXY_STATUS_DELETED: The cluster proxy has been deleted.\n - CLUSTER_PROXY_STATUS_UPDATING: The cluster proxy is being updated (e.g., software patches or\ninfrastructure changes)."
    },
    "ClusterSession": {
      "type": "object",
      "properties": {
        "sessionId": {
          "type": "string",
          "description": "A UUID of the session.",
          "readOnly": true
        },
        "sessionNumber": {
          "type": "string",
          "format": "int64",
          "description": "The session number.",
          "readOnly": true
        },
        "infobaseId": {
          "type": "string",
          "description": "A UUID of the infobase.",
          "readOnly": true
        },
        "username": {
          "type": "string",
          "description": "The name of the user.",
          "readOnly": true
        },
        "appType": {
          "type": "string",
          "title": "Application type, e.g. WebClient",
          "readOnly": true
        },
        "locale": {
          "type": "string",
          "title": "Locale used, e.g. en_US",
          "readOnly": true
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "description": "When the session started.",
          "readOnly": true
        },
        "lastActiveAt": {
          "type": "string",
          "format": "date-time",
          "description": "When the session started.",
          "readOnly": true
        },
        "hibernation": {
          "type": "boolean",
          "description": "Whether session is hibernating.",
          "readOnly": true
        },
        "passiveSessionHibernationTimeout": {
          "type": "string",
          "format": "uint64",
          "description": "A duration in seconds after which the inactive session marked as hibernating.",
          "readOnly": true
        },
        "hibernatingSessionTerminationTimeout": {
          "type": "string",
          "format": "uint64",
          "description": "A duration after which the hibernating session is terminated.",
          "readOnly": true
        },
        "clientIp": {
          "type": "string",
          "description": "An IP address of the user.",
          "readOnly": true
        },
        "totalBytes": {
          "type": "string",
          "format": "uint64",
          "description": "Total # of bytes sent in all directions (in finished server calls) since the session start.",
          "readOnly": true
        },
        "totalBytesLastFiveMin": {
          "type": "string",
          "format": "uint64",
          "description": "Total # of bytes sent in all directions (in finished server calls) in the last five minutes.",
          "readOnly": true
        },
        "totalCalls": {
          "type": "string",
          "format": "uint64",
          "description": "Total # of finished server calls made by this session since its start.",
          "readOnly": true
        },
        "totalCallsLastFiveMin": {
          "type": "string",
          "format": "uint64",
          "description": "Total # of finished server calls made by this session in the last five minutes.",
          "readOnly": true
        },
        "totalDbmsBytes": {
          "type": "string",
          "format": "uint64",
          "description": "Amount of data sent over this client connection between 1C:Enterprise server and the database server\nsince the beginning of this session (in bytes).",
          "readOnly": true
        },
        "totalDbmsBytesLastFiveMin": {
          "type": "string",
          "format": "uint64",
          "description": "Amount of data sent over this client connection between 1C:Enterprise server and the database server in the\nlast 5 minutes (in bytes).",
          "readOnly": true
        },
        "totalMem": {
          "type": "string",
          "format": "int64",
          "description": "Difference between the amounts of memory occupied and released by the threads making calls for this session,\nsince the session start (in bytes).",
          "readOnly": true
        },
        "totalMemLastFiveMin": {
          "type": "string",
          "format": "int64",
          "description": "Difference between the amounts of memory occupied and released by the threads making calls for this session,\nin the last five minutes (in bytes).",
          "readOnly": true
        },
        "currentMem": {
          "type": "string",
          "format": "int64",
          "description": "Difference between the amounts of memory occupied and released by the thread making the current call,\nsince the beginning of the call (in bytes).",
          "readOnly": true
        },
        "totalCpuTime": {
          "type": "string",
          "format": "uint64",
          "description": "Information on the consumption of CPU time by server calls of this session during the entire session\n(in seconds, accurate to millisecond).",
          "readOnly": true
        },
        "totalCpuTimeLastFiveMin": {
          "type": "string",
          "format": "uint64",
          "description": "Information on the consumption of CPU time by server calls of this session for the last 5 minutes\n(in seconds, accurate to millisecond).",
          "readOnly": true
        },
        "currentCpuTime": {
          "type": "string",
          "format": "uint64",
          "description": "Information on the consumption of CPU time by the current server call (in seconds, accurate to millisecond).",
          "readOnly": true
        }
      },
      "description": "Represents a user session within a 1C:Enterprise cluster.\nThis message contains detailed information about the session, including\nsession metadata (e.g., session identifier, username), system resource usage\n(e.g., memory, CPU, bytes sent), and activity timestamps. It is used\nto track and manage the session's lifecycle and monitor resource\nconsumption."
    },
    "ClusterSessionFilter": {
      "type": "object",
      "properties": {
        "infobaseId": {
          "type": "string",
          "description": "Identifier of the infobase to filter sessions."
        }
      }
    },
    "ClusterSpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name given to the cluster by the user."
        },
        "platform": {
          "$ref": "#/definitions/ClusterPlatform",
          "description": "The 1C platform running in the cluster."
        },
        "flavor": {
          "$ref": "#/definitions/ClusterFlavor",
          "description": "The compute and storage resources allocated to the cluster."
        },
        "maintenanceWindowStart": {
          "$ref": "#/definitions/TimeOfDay",
          "description": "The preferred daily start time for the maintenance window.\nThis is the time when routine system operations—such as software updates,\npatches, configuration changes, or platform upgrades—may be performed\non the cluster.\n\nThe window typically lasts 30 minutes but can extend up to 1 hour for\nmajor updates. By default, the start time is 05:00:00 (local time of the\ncluster's region).\n\nThis window is important for minimizing disruption during expected changes.\nIt must not overlap with the backup window for any infobases running on\nthis cluster."
        },
        "config": {
          "$ref": "#/definitions/ClusterConfig",
          "description": "Additional 1C platform-specific and network-related configuration settings."
        },
        "enableStorageAutoScaling": {
          "type": "boolean",
          "description": "When true, enables automatic storage scaling during the maintenance window.\n\nWith auto scaling enabled, the system can automatically increase\nthe allocated storage capacity if the current usage approaches the limit,\nhelping to avoid outages or degraded performance due to insufficient\nstorage.\n\nAuto scaling occurs only during the maintenance window and is subject\nto several conditions. It is available only for flavors that support\ndynamic scaling and may be disabled if the cluster is in an error state or\nif other resource constraints apply.\n\nThis setting is optional and can be used to ensure storage scales with\ngrowing workloads.\n\nDefaults to True."
        }
      },
      "description": "Defines the desired configuration of a cluster.\nSpecifies parameters such as platform version, resource allocation,\nand maintenance settings.",
      "required": [
        "name",
        "platform",
        "flavor"
      ]
    },
    "ClusterState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ClusterStatus",
          "description": "The current status of the cluster.",
          "readOnly": true
        },
        "lockReason": {
          "$ref": "#/definitions/ClusterLockReason",
          "description": "The reason why the resource is locked for modifications.\nA non-zero value indicates that the resource cannot be modified at this\nmoment. Once the resource is locked, no modifications (including deletion)\ncan be made to the resource except by the process that obtained the lock.",
          "readOnly": true
        },
        "webPubHostname": {
          "type": "string",
          "title": "Hostname for web publications provided by this cluster and accessible via the Internet",
          "readOnly": true
        },
        "storageAutoScaling": {
          "$ref": "#/definitions/StorageAutoScaling",
          "description": "The actual state of the storage auto-scaling feature.",
          "readOnly": true
        },
        "health": {
          "$ref": "#/definitions/Health",
          "description": "The health status of the cluster.",
          "readOnly": true
        }
      },
      "description": "Represents the current observed state of a cluster, including operational\nstatus, lock information, public URL, storage auto-scaling status,\nand health."
    },
    "ClusterStatus": {
      "type": "string",
      "enum": [
        "CLUSTER_STATUS_UNSPECIFIED",
        "CLUSTER_STATUS_PENDING",
        "CLUSTER_STATUS_CREATING",
        "CLUSTER_STATUS_ACTIVE",
        "CLUSTER_STATUS_ERRORED",
        "CLUSTER_STATUS_RESIZING",
        "CLUSTER_STATUS_RESTARTING",
        "CLUSTER_STATUS_UPGRADING",
        "CLUSTER_STATUS_MAINTENANCE",
        "CLUSTER_STATUS_DELETING",
        "CLUSTER_STATUS_DELETED",
        "CLUSTER_STATUS_BEING_BLOCKED",
        "CLUSTER_STATUS_BLOCKED",
        "CLUSTER_STATUS_BEING_UNBLOCKED",
        "CLUSTER_STATUS_MODIFYING"
      ],
      "default": "CLUSTER_STATUS_UNSPECIFIED",
      "description": "Enum representing the operational status of the cluster.\n\n - CLUSTER_STATUS_PENDING: The cluster is waiting while we prepare the environment and resources\nfor it.\n - CLUSTER_STATUS_CREATING: The cluster is in the process of being created.\n - CLUSTER_STATUS_ACTIVE: The cluster is ready to serve users.\n - CLUSTER_STATUS_ERRORED: The cluster has encountered an un-recoverable error and is unusable.\n - CLUSTER_STATUS_RESIZING: The cluster is being resized.\n - CLUSTER_STATUS_RESTARTING: The cluster is restarting.\n - CLUSTER_STATUS_UPGRADING: The cluster is being upgraded to a new version of the 1C platform.\n - CLUSTER_STATUS_MAINTENANCE: Ongoing maintenance is being performed on the cluster.\n - CLUSTER_STATUS_DELETING: Cluster is being deleted.\n - CLUSTER_STATUS_DELETED: Cluster has been deleted.\n - CLUSTER_STATUS_BEING_BLOCKED: Cluster is being blocked due to issues such as payment problems.\n - CLUSTER_STATUS_BLOCKED: Cluster is blocked due to issues related, for example, to payment.\n - CLUSTER_STATUS_BEING_UNBLOCKED: Cluster is being unblocked.\n - CLUSTER_STATUS_MODIFYING: Cluster is being modified upon user request."
    },
    "ClusterVolume": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the resource.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/ClusterVolumeSpec",
          "description": "The desired state of the volume."
        },
        "state": {
          "$ref": "#/definitions/ClusterVolumeState",
          "description": "The observed state of the volume.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp when this volume was created.",
          "readOnly": true
        }
      },
      "description": "Represents a volume mounted to the cluster.",
      "required": [
        "spec"
      ]
    },
    "ClusterVolumeSpec": {
      "type": "object",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "Identifier of the cluster this volume is mounted to."
        },
        "type": {
          "$ref": "#/definitions/ClusterVolumeType",
          "description": "The type of the volume."
        },
        "size": {
          "type": "string",
          "format": "uint64",
          "description": "The size of the volume in bytes."
        },
        "s3": {
          "$ref": "#/definitions/S3VolumeOptions"
        }
      },
      "description": "Defines the desired configuration and parameters for a cluster volume,\nincluding the type, size, and specific mount options.",
      "required": [
        "clusterId"
      ]
    },
    "ClusterVolumeState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ClusterVolumeStatus",
          "description": "The current status of the volume.",
          "readOnly": true
        },
        "reason": {
          "type": "string",
          "description": "The optional reason why the volume is in a specific state.",
          "readOnly": true
        },
        "mountPath": {
          "type": "string",
          "description": "The path where the volume is accessible from within the cluster.",
          "readOnly": true
        }
      },
      "description": "Represents the current state of a volume, including its operational\nstatus, any potential error reasons, and its mount path within the cluster."
    },
    "ClusterVolumeStatus": {
      "type": "string",
      "enum": [
        "CLUSTER_VOLUME_STATUS_UNSPECIFIED",
        "CLUSTER_VOLUME_STATUS_PENDING",
        "CLUSTER_VOLUME_STATUS_MOUNTING",
        "CLUSTER_VOLUME_STATUS_ACTIVE",
        "CLUSTER_VOLUME_STATUS_ERRORED",
        "CLUSTER_VOLUME_STATUS_UNMOUNTING",
        "CLUSTER_VOLUME_STATUS_DELETED"
      ],
      "default": "CLUSTER_VOLUME_STATUS_UNSPECIFIED",
      "description": "Enum representing the operational status of the volume.\n\n - CLUSTER_VOLUME_STATUS_PENDING: The volume is being prepared for mounting.\n - CLUSTER_VOLUME_STATUS_MOUNTING: The volume is being mounted to the cluster.\n - CLUSTER_VOLUME_STATUS_ACTIVE: The volume is successfully mounted to the cluster.\n - CLUSTER_VOLUME_STATUS_ERRORED: The volume encountered an unrecoverable error and is no longer usable.\n - CLUSTER_VOLUME_STATUS_UNMOUNTING: The volume is being unmounted from the cluster.\n - CLUSTER_VOLUME_STATUS_DELETED: The volume has been unmounted from the cluster and deleted."
    },
    "ClusterVolumeType": {
      "type": "string",
      "enum": [
        "CLUSTER_VOLUME_TYPE_UNSPECIFIED",
        "CLUSTER_VOLUME_TYPE_S3"
      ],
      "default": "CLUSTER_VOLUME_TYPE_UNSPECIFIED",
      "description": "Enum representing the different types of volumes supported by the cluster.\n\n - CLUSTER_VOLUME_TYPE_S3: The S3 volume type."
    },
    "CreateBackupPlanRequest": {
      "type": "object",
      "properties": {
        "backupPlan": {
          "$ref": "#/definitions/BackupPlan",
          "description": "The backup plan specification to be created."
        }
      },
      "required": [
        "backupPlan"
      ]
    },
    "CreateBackupPlanResponse": {
      "type": "object",
      "properties": {
        "backupPlan": {
          "$ref": "#/definitions/BackupPlan",
          "description": "The backup plan that was created.",
          "readOnly": true
        }
      }
    },
    "CreateBackupRequest": {
      "type": "object",
      "properties": {
        "infobaseId": {
          "type": "string",
          "description": "Identifier of the infobase to be backed up."
        },
        "name": {
          "type": "string",
          "description": "Optional user-provided name for the backup.\nIf not provided, a name will be automatically generated."
        },
        "vaultId": {
          "type": "string",
          "description": "Identifier of the backup vault to store and access this backup.\nIf left empty, a default vault managed by Selectel will be used."
        }
      },
      "required": [
        "infobaseId"
      ]
    },
    "CreateBackupResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Deprecated: Identifier of the backup task that was created.\nThis field will be removed in the future as it's no longer necessary.",
          "readOnly": true
        },
        "backup": {
          "$ref": "#/definitions/Backup",
          "description": "The backup object that was created.",
          "readOnly": true
        }
      }
    },
    "CreateBackupVaultRequest": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/BackupVaultSpec",
          "description": "The backup vault specification to be created."
        }
      },
      "required": [
        "spec"
      ]
    },
    "CreateBackupVaultResponse": {
      "type": "object",
      "properties": {
        "vault": {
          "$ref": "#/definitions/BackupVault",
          "description": "The backup vault that was created.",
          "readOnly": true
        }
      }
    },
    "CreateClusterProxyRequest": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/ClusterProxySpec",
          "description": "The specification for the cluster proxy to be created."
        }
      },
      "required": [
        "spec"
      ]
    },
    "CreateClusterProxyResponse": {
      "type": "object",
      "properties": {
        "clusterProxy": {
          "$ref": "#/definitions/ClusterProxy",
          "description": "The created cluster proxy, with output-only fields filled.",
          "readOnly": true
        }
      }
    },
    "CreateClusterRequest": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/ClusterSpec",
          "description": "The specification for the cluster to be created."
        }
      },
      "required": [
        "spec"
      ]
    },
    "CreateClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "A cursor for pagination. If provided, returns the next page of results.",
          "readOnly": true
        }
      }
    },
    "CreateDatastoreRequest": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/DatastoreSpec",
          "description": "The specification for the datastore to be created."
        }
      },
      "required": [
        "spec"
      ]
    },
    "CreateDatastoreResponse": {
      "type": "object",
      "properties": {
        "datastore": {
          "$ref": "#/definitions/Datastore",
          "description": "The created datastore, with output-only fields filled.",
          "readOnly": true
        }
      }
    },
    "CreateInfobaseRequest": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/InfobaseSpec",
          "description": "The specification for the infobase to be created."
        }
      },
      "required": [
        "spec"
      ]
    },
    "CreateInfobaseResponse": {
      "type": "object",
      "properties": {
        "infobase": {
          "$ref": "#/definitions/Infobase",
          "description": "The created infobase, with output-only fields filled.",
          "readOnly": true
        }
      }
    },
    "CreateTechJournalLogPlanBody": {
      "type": "object",
      "properties": {
        "startsAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the tech journal log collection will start."
        },
        "endsAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the tech journal log collection will end."
        },
        "logConfig": {
          "$ref": "#/definitions/TechJournalLogsConfig",
          "description": "Tech journal log collection configuration to be used for this plan."
        }
      },
      "required": [
        "logConfig"
      ]
    },
    "CreateTechJournalLogPlanResponse": {
      "type": "object",
      "properties": {
        "logPlan": {
          "$ref": "#/definitions/TechJournalLogPlan",
          "title": "Plan for the tech journal log collection",
          "readOnly": true
        }
      }
    },
    "CursorRequest": {
      "type": "object",
      "properties": {
        "cursor": {
          "type": "string",
          "format": "uint64",
          "description": "Pointer to a specific record in the dataset that indicates the position\nwhere the return of rows begins."
        },
        "limit": {
          "type": "string",
          "format": "uint64",
          "description": "Maximum number of records returned in the response.\nThis parameter controls the page size for pagination."
        }
      },
      "description": "Represents a request for a subset of rows generated by a query,\ntypically used for pagination."
    },
    "CursorResponse": {
      "type": "object",
      "properties": {
        "next": {
          "type": "string",
          "format": "uint64",
          "description": "A pointer to the next record in the dataset, to be used\nfor fetching the next set of records in pagination."
        },
        "total": {
          "type": "string",
          "format": "uint64",
          "description": "The total number of records available in the query result,\nuseful for determining the total pages."
        }
      },
      "description": "Represents the response containing cursor information for\npaginated queries."
    },
    "Datastore": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the datastore resource.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the Selectel project this entity belongs to.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/DatastoreSpec",
          "description": "The desired state of the datastore."
        },
        "state": {
          "$ref": "#/definitions/DatastoreState",
          "description": "The current observed state of the datastore, reflecting its real-time\nstatus.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the datastore was created.",
          "readOnly": true
        }
      },
      "description": "Represents a datastore, which is a database management system (DBMS) cluster\nwhere the data of infobases (databases) is stored. Each datastore can host\nmultiple infobases.",
      "required": [
        "spec"
      ]
    },
    "DatastoreFlavor": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the flavor. This field is optional if the user selects\na custom resource configuration."
        },
        "name": {
          "type": "string",
          "description": "The name of the flavor.",
          "readOnly": true
        },
        "vCpu": {
          "type": "string",
          "format": "int64",
          "description": "The number of vCPUs allocated for this flavor."
        },
        "ramMb": {
          "type": "string",
          "format": "int64",
          "description": "The amount of RAM allocated for this flavor, in megabytes."
        },
        "diskGb": {
          "type": "string",
          "format": "int64",
          "description": "The size of the disk allocated for this flavor, in gigabytes."
        },
        "vmType": {
          "$ref": "#/definitions/DatastoreFlavorVMType",
          "description": "The virtual machine type (e.g., Standard Line, High Frequency Line).",
          "readOnly": true
        },
        "deprecated": {
          "type": "boolean",
          "description": "Indicates whether the flavor is deprecated. New datastores cannot\nbe created with a deprecated flavor.",
          "readOnly": true
        }
      },
      "description": "Defines the configuration of a datastore flavor, which includes\ndetails about the virtual machine's resources like CPU, RAM, and disk size.\nIt also specifies whether the flavor is deprecated and the type of VM.",
      "required": [
        "vCpu",
        "ramMb",
        "diskGb"
      ]
    },
    "DatastoreFlavorConstraints": {
      "type": "object",
      "properties": {
        "vCpu": {
          "$ref": "#/definitions/ResourceConstraint",
          "description": "The vCPU allocation constraint for custom configurations.",
          "readOnly": true
        },
        "ramMb": {
          "$ref": "#/definitions/ResourceConstraint",
          "description": "The RAM allocation constraint, in megabytes, for custom configurations.",
          "readOnly": true
        },
        "diskGb": {
          "$ref": "#/definitions/ResourceConstraint",
          "description": "The disk allocation constraint, in gigabytes, for custom configurations.",
          "readOnly": true
        }
      },
      "description": "Defines the resource allocation constraints for a custom datastore\nconfiguration, including vCPU, RAM, and disk space. These constraints\nhelp ensure the configuration adheres to specific resource limits."
    },
    "DatastoreFlavorVMType": {
      "type": "string",
      "enum": [
        "DATASTORE_FLAVOR_VM_TYPE_UNSPECIFIED",
        "DATASTORE_FLAVOR_VM_TYPE_STANDARD",
        "DATASTORE_FLAVOR_VM_TYPE_HI_FREQ"
      ],
      "default": "DATASTORE_FLAVOR_VM_TYPE_UNSPECIFIED",
      "description": "Defines the type of virtual machine used for the datastore flavor.\nThis determines the CPU performance characteristics of the VM.\n\n - DATASTORE_FLAVOR_VM_TYPE_STANDARD: The virtual machine with standard CPU type.\n - DATASTORE_FLAVOR_VM_TYPE_HI_FREQ: The virtual machine high frequency CPU type."
    },
    "DatastoreLockReason": {
      "type": "string",
      "enum": [
        "DATASTORE_LOCK_REASON_UNSPECIFIED",
        "DATASTORE_LOCK_REASON_PENDING_CREATE",
        "DATASTORE_LOCK_REASON_PENDING_RESIZE",
        "DATASTORE_LOCK_REASON_PENDING_DELETION",
        "DATASTORE_LOCK_REASON_ACTION_IN_PROGRESS",
        "DATASTORE_LOCK_REASON_INFOBASE_PROVISIONING",
        "DATASTORE_LOCK_REASON_INFOBASE_RESTORING",
        "DATASTORE_LOCK_REASON_INFOBASE_BACKING_UP",
        "DATASTORE_LOCK_REASON_INFOBASE_CONFIGURING",
        "DATASTORE_LOCK_REASON_PENDING_MAINTENANCE"
      ],
      "default": "DATASTORE_LOCK_REASON_UNSPECIFIED",
      "description": "Enum representing the reason why the datastore is currently locked and\nunavailable for modifications.\n\n - DATASTORE_LOCK_REASON_UNSPECIFIED: The unspecified lock reason means that the resource isn't locked by\nany other task or process.\n - DATASTORE_LOCK_REASON_PENDING_CREATE: The datastore is locked because a creation job has been scheduled,\nbut it has not yet been processed by the worker.\n - DATASTORE_LOCK_REASON_PENDING_RESIZE: The datastore is locked because a resize job has been scheduled,\nbut it has not yet been processed by the worker.\n - DATASTORE_LOCK_REASON_PENDING_DELETION: The datastore is locked because a deletion job has been scheduled,\nbut it has not yet been processed by the worker.\n - DATASTORE_LOCK_REASON_ACTION_IN_PROGRESS: The datastore is locked because an action is currently in progress\n(e.g., creation, resizing, deletion).\n - DATASTORE_LOCK_REASON_INFOBASE_PROVISIONING: The datastore is locked because an infobase is being created or deleted\nin this datastore.\n - DATASTORE_LOCK_REASON_INFOBASE_RESTORING: The datastore is locked because an infobase is being restored\nin this datastore.\n - DATASTORE_LOCK_REASON_INFOBASE_BACKING_UP: The datastore is locked because an infobase is being backed up\nin this datastore.\n - DATASTORE_LOCK_REASON_INFOBASE_CONFIGURING: The datastore is locked because an infobase is being configured\nin this datastore.\n - DATASTORE_LOCK_REASON_PENDING_MAINTENANCE: The datastore is locked because a maintenance job has been scheduled,\nbut it has not yet been processed by the worker."
    },
    "DatastoreMntEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the maintenance event resource.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the Selectel project this entity belongs to.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/DatastoreMntEventSpec",
          "description": "A spec describing the maintenance event type and parameters.",
          "readOnly": true
        },
        "state": {
          "$ref": "#/definitions/DatastoreMntEventState",
          "description": "The current observed state of the maintenance event, reflecting its\nreal-time status.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the maintenance event was created.",
          "readOnly": true
        }
      },
      "description": "Represents a datastore maintenance event."
    },
    "DatastoreMntEventSpec": {
      "type": "object",
      "properties": {
        "datastoreId": {
          "type": "string",
          "description": "Identifier of the datastore this maintenance will be performed for.",
          "readOnly": true
        },
        "tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DatastoreMntTask"
          },
          "description": "A list of tasks performed during the maintenance event.",
          "readOnly": true
        },
        "scheduledFor": {
          "type": "string",
          "format": "date-time",
          "description": "The scheduled time for the maintenance event to occur.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "description": "A description of the maintenance event.",
          "readOnly": true
        }
      },
      "description": "Represents the specification for a datastore maintenance event.\nThis message contains the details of the datastore being maintained,\nthe tasks to be performed during the maintenance, the scheduled time,\nand a description of the maintenance event."
    },
    "DatastoreMntEventState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/DatastoreMntStatus",
          "description": "The current status of the maintenance event.",
          "readOnly": true
        }
      },
      "description": "Represents the current state of a datastore maintenance event."
    },
    "DatastoreMntStatus": {
      "type": "string",
      "enum": [
        "DATASTORE_MNT_STATUS_UNSPECIFIED",
        "DATASTORE_MNT_STATUS_SCHEDULED",
        "DATASTORE_MNT_STATUS_PENDING",
        "DATASTORE_MNT_STATUS_RUNNING",
        "DATASTORE_MNT_STATUS_ERRORED",
        "DATASTORE_MNT_STATUS_SUCCEEDED",
        "DATASTORE_MNT_STATUS_CANCELLED",
        "DATASTORE_MNT_STATUS_RESCHEDULED"
      ],
      "default": "DATASTORE_MNT_STATUS_UNSPECIFIED",
      "description": "Enum representing the various statuses a maintenance event can have.\n\n - DATASTORE_MNT_STATUS_SCHEDULED: The maintenance event has been scheduled.\n - DATASTORE_MNT_STATUS_PENDING: The scheduler has launched the maintenance,\nbut the task is waiting while we prepare the environment for it.\n - DATASTORE_MNT_STATUS_RUNNING: The maintenance is currently being performed.\n - DATASTORE_MNT_STATUS_ERRORED: An un-recoverable error occurred during maintenance, and the datastore\nmay not be usable because of the error.\n - DATASTORE_MNT_STATUS_SUCCEEDED: The maintenance successfully completed.\n - DATASTORE_MNT_STATUS_CANCELLED: The maintenance has been cancelled for some reason\n(e.g., customer request).\n - DATASTORE_MNT_STATUS_RESCHEDULED: The maintenance has been rescheduled for a later time\n(e.g., the next maintenance window)."
    },
    "DatastoreMntTask": {
      "type": "string",
      "enum": [
        "DATASTORE_MNT_TASK_UNSPECIFIED",
        "DATASTORE_MNT_TASK_STORAGE_AUTO_SCALING"
      ],
      "default": "DATASTORE_MNT_TASK_UNSPECIFIED",
      "description": "Enum representing the different types of tasks that may occur during\na maintenance event.\n\n - DATASTORE_MNT_TASK_STORAGE_AUTO_SCALING: The datastore storage will be automatically scaled up during maintenance."
    },
    "DatastoreSpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name given to the datastore by the user."
        },
        "type": {
          "$ref": "#/definitions/DatastoreType",
          "description": "The type of the datastore (i.e., the database engine type and version)."
        },
        "flavor": {
          "$ref": "#/definitions/DatastoreFlavor",
          "description": "The resources allocated to each node in the datastore cluster."
        },
        "nodeCount": {
          "type": "string",
          "format": "int64",
          "description": "The number of nodes in the datastore cluster."
        },
        "maintenanceWindowStart": {
          "$ref": "#/definitions/TimeOfDay",
          "description": "The preferred daily start time for the maintenance window.\nThis is the time when routine system operations—such as software updates,\npatches, configuration changes, or platform upgrades—may be performed\non the cluster.\n\nThe window typically lasts 30 minutes but can extend up to 1 hour for\nmajor updates. By default, the start time is 05:00:00 (local time of the\ndatastore's region).\n\nThis window is important for minimizing disruption during expected changes.\nIt must not overlap with the backup window for any infobases running on\nthis datastore."
        },
        "enableStorageAutoScaling": {
          "type": "boolean",
          "description": "When true, enables automatic storage scaling during the maintenance window.\n\nWith auto scaling enabled, the system can automatically increase\nthe allocated storage capacity if the current usage approaches the limit,\nhelping to avoid outages or degraded performance due to insufficient\nstorage.\n\nAuto scaling occurs only during the maintenance window and is subject\nto several conditions. It is available only for flavors that support\ndynamic scaling and may be disabled if the cluster is in an error state or\nif other resource constraints apply.\n\nThis setting is optional and can be used to ensure storage scales with\ngrowing workloads.\n\nDefaults to True."
        }
      },
      "description": "Defines the desired configuration of a datastore.\nSpecifies parameters such as resource allocation, storage autoscaling\nand maintenance settings.",
      "required": [
        "name",
        "flavor"
      ]
    },
    "DatastoreState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/DatastoreStatus",
          "description": "The current status of the datastore.",
          "readOnly": true
        },
        "lockReason": {
          "$ref": "#/definitions/DatastoreLockReason",
          "description": "The reason why the resource is locked for modifications.\nA non-zero value indicates that the resource cannot be modified at this\nmoment. Once the resource is locked, no modifications (including deletion)\ncan be made to the resource except by the process that obtained the lock.",
          "readOnly": true
        },
        "storageAutoScaling": {
          "$ref": "#/definitions/StorageAutoScaling",
          "description": "The current state of the storage auto scaling feature for the datastore.",
          "readOnly": true
        },
        "health": {
          "$ref": "#/definitions/Health",
          "description": "The health status of the datastore.",
          "readOnly": true
        }
      },
      "description": "Represents the current observed state of a datastore, including operational\nstatus, lock information, storage auto-scaling status, and health."
    },
    "DatastoreStatus": {
      "type": "string",
      "enum": [
        "DATASTORE_STATUS_UNSPECIFIED",
        "DATASTORE_STATUS_PENDING",
        "DATASTORE_STATUS_CREATING",
        "DATASTORE_STATUS_ACTIVE",
        "DATASTORE_STATUS_ERRORED",
        "DATASTORE_STATUS_RESIZING",
        "DATASTORE_STATUS_DELETING",
        "DATASTORE_STATUS_DELETED",
        "DATASTORE_STATUS_MAINTENANCE"
      ],
      "default": "DATASTORE_STATUS_UNSPECIFIED",
      "description": "Enum representing the operational status of the datastore.\n\n - DATASTORE_STATUS_PENDING: The datastore is waiting while we prepare the environment and resources\nfor it.\n - DATASTORE_STATUS_CREATING: The datastore is being created.\n - DATASTORE_STATUS_ACTIVE: The datastore is ready to serve users.\n - DATASTORE_STATUS_ERRORED: An un-recoverable error has occurred, and the datastore is no longer usable.\n - DATASTORE_STATUS_RESIZING: The datastore is resizing.\n - DATASTORE_STATUS_DELETING: The datastore is being deleted.\n - DATASTORE_STATUS_DELETED: The datastore has been deleted.\n - DATASTORE_STATUS_MAINTENANCE: Ongoing maintenance is being performed on the datastore."
    },
    "DatastoreType": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier of the datastore type. If unset, the default recommended\nengine is used."
        },
        "engine": {
          "type": "string",
          "description": "The name of the datastore engine, e.g., \"postgresql\".",
          "readOnly": true
        },
        "version": {
          "type": "string",
          "description": "The version of the datastore engine, e.g., \"14-1C\".",
          "readOnly": true
        }
      },
      "description": "DatastoreType represents a supported datastore engine and version\navailable for provisioning.",
      "required": [
        "id"
      ]
    },
    "DeactivateLicenseResponse": {
      "type": "object"
    },
    "DeleteBackupResponse": {
      "type": "object"
    },
    "DeleteBackupVaultResponse": {
      "type": "object"
    },
    "DeleteClusterDomainResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The updated state of the cluster after the request.",
          "readOnly": true
        }
      }
    },
    "DeleteClusterProxyResponse": {
      "type": "object",
      "properties": {
        "clusterProxy": {
          "$ref": "#/definitions/ClusterProxy",
          "description": "The updated state of the cluster proxy after the delete request.",
          "readOnly": true
        }
      }
    },
    "DeleteClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The state of the cluster after the deletion request.",
          "readOnly": true
        }
      }
    },
    "DeleteDatastoreResponse": {
      "type": "object",
      "properties": {
        "datastore": {
          "$ref": "#/definitions/Datastore",
          "description": "The updated state of the datastore after the delete request.",
          "readOnly": true
        }
      }
    },
    "DeleteInfobaseResponse": {
      "type": "object",
      "properties": {
        "infobase": {
          "$ref": "#/definitions/Infobase",
          "description": "The updated state of the infobase after the delete request.",
          "readOnly": true
        }
      }
    },
    "DenyInfobaseSessionsBody": {
      "type": "object",
      "properties": {
        "infobaseUser": {
          "type": "string",
          "description": "Infobase user name. Required for non-empty infobases."
        },
        "infobasePassword": {
          "type": "string",
          "description": "Infobase user password. Required for non-empty infobases."
        },
        "deniedMessage": {
          "type": "string",
          "description": "A message to display to users when they attempt to login while sessions are blocked."
        },
        "deniedParameter": {
          "type": "string",
          "description": "A free-form text that can be used for various configuration purposes."
        },
        "accessCode": {
          "type": "string",
          "description": "Access code that allows session start despite session lock."
        },
        "startsAt": {
          "type": "string",
          "format": "date-time",
          "description": "Optional time when the cluster will start blocking sessions."
        },
        "endsAt": {
          "type": "string",
          "format": "date-time",
          "description": "Optional time when the cluster will stop blocking sessions."
        }
      }
    },
    "DenyInfobaseSessionsResponse": {
      "type": "object"
    },
    "DenyScheduledJobsBody": {
      "type": "object",
      "properties": {
        "infobaseUser": {
          "type": "string",
          "description": "Infobase user name. Required for non-empty infobases."
        },
        "infobasePassword": {
          "type": "string",
          "description": "Infobase user password. Required for non-empty infobases."
        }
      }
    },
    "DenyScheduledJobsResponse": {
      "type": "object"
    },
    "DisableTechJournalLogPlanResponse": {
      "type": "object"
    },
    "DumpDTRequest": {
      "type": "object",
      "properties": {
        "infobaseId": {
          "type": "string",
          "description": "Identifier of the infobase that needs to be dumped to a .dt file.\nThis must be a valid UUID identifying the infobase."
        },
        "infobaseUser": {
          "type": "string",
          "description": "The username with admin privileges required to access the infobase and perform the dump.\nThis is required for non-empty infobases."
        },
        "infobasePassword": {
          "type": "string",
          "description": "The password for the admin user to authenticate and authorize the dump operation.\nThis is required for non-empty infobases."
        }
      }
    },
    "DumpDTResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Deprecated: Identifier of the backup task that was created.\nThis field will be removed in the future as it's no longer necessary.",
          "readOnly": true
        },
        "backup": {
          "$ref": "#/definitions/Backup",
          "description": "The backup object that was created.",
          "readOnly": true
        }
      }
    },
    "GetBackupDownloadURLResponse": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "The URL for downloading the backup.",
          "readOnly": true
        }
      }
    },
    "GetBackupVaultResponse": {
      "type": "object",
      "properties": {
        "vault": {
          "$ref": "#/definitions/BackupVault",
          "description": "Requested backup vault.",
          "readOnly": true
        }
      }
    },
    "GetClusterFlavorConstraintsResponse": {
      "type": "object",
      "properties": {
        "constraints": {
          "$ref": "#/definitions/ClusterFlavorConstraints",
          "description": "Constraints that apply to custom cluster flavors.",
          "readOnly": true
        }
      }
    },
    "GetClusterMetricsResponse": {
      "type": "object",
      "properties": {
        "metrics": {
          "$ref": "#/definitions/ClusterMetrics",
          "description": "The metrics for the cluster.",
          "readOnly": true
        }
      }
    },
    "GetClusterProxyResponse": {
      "type": "object",
      "properties": {
        "clusterProxy": {
          "$ref": "#/definitions/ClusterProxy",
          "description": "The requested cluster proxy.",
          "readOnly": true
        }
      }
    },
    "GetClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The requested cluster information.",
          "readOnly": true
        }
      }
    },
    "GetDTUploadURLResponse": {
      "type": "object",
      "properties": {
        "uploadId": {
          "type": "string",
          "description": "Unique identifier for the .dt file upload."
        },
        "uploadUrl": {
          "type": "string",
          "description": "URL for uploading the .dt file."
        }
      }
    },
    "GetDatastoreFlavorConstraintsResponse": {
      "type": "object",
      "properties": {
        "constraints": {
          "$ref": "#/definitions/DatastoreFlavorConstraints",
          "description": "Datastore flavor constraints.",
          "readOnly": true
        }
      }
    },
    "GetDatastoreResponse": {
      "type": "object",
      "properties": {
        "datastore": {
          "$ref": "#/definitions/Datastore",
          "description": "The datastore requested.",
          "readOnly": true
        }
      }
    },
    "GetInfobaseResponse": {
      "type": "object",
      "properties": {
        "infobase": {
          "$ref": "#/definitions/Infobase",
          "description": "The requested infobase.",
          "readOnly": true
        }
      }
    },
    "GetInfobaseWebPubConfigResponse": {
      "type": "object",
      "properties": {
        "vrdContents": {
          "type": "string",
          "title": "The VRD file contents used for infobase web-publication.\nDocs: https://its.1c.ru/db/v8325doc#bookmark:adm:ti000000379"
        }
      }
    },
    "GetLicenseActivationResponse": {
      "type": "object",
      "properties": {
        "activation": {
          "$ref": "#/definitions/LicenseActivation",
          "description": "The requested license activation information.",
          "readOnly": true
        },
        "reason": {
          "type": "string",
          "description": "The details of the error, if one occurred during activation."
        }
      }
    },
    "GetProjectIDForNetworkSharingResponse": {
      "type": "object",
      "properties": {
        "projectId": {
          "type": "string",
          "description": "Project identifier with which the private network is to be shared.",
          "readOnly": true
        }
      }
    },
    "GetRentResponse": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/LicenseRequest",
          "description": "License rent request information.",
          "readOnly": true
        }
      }
    },
    "GetServiceUsageResponse": {
      "type": "object",
      "properties": {
        "clustersCount": {
          "type": "string",
          "format": "uint64",
          "description": "The number of clusters in the project.",
          "readOnly": true
        },
        "datastoresCount": {
          "type": "string",
          "format": "uint64",
          "description": "The number of datastores in the project.",
          "readOnly": true
        },
        "infobasesCount": {
          "type": "string",
          "format": "uint64",
          "description": "The number of infobases in the project.",
          "readOnly": true
        },
        "clusterProxyCount": {
          "type": "string",
          "format": "uint64",
          "description": "The number of cluster proxies in the project.",
          "readOnly": true
        },
        "newComputeResourcesRestricted": {
          "type": "boolean",
          "description": "If true, the system won't allow creation of new compute resources\n(i.e., clusters and datastores). Operations with existing resources,\nsuch as resizing or configuring access, are unaffected by this setting.",
          "readOnly": true
        },
        "readOnlyMode": {
          "type": "boolean",
          "description": "If true, the system will not allow existing resources to be modified\nor new ones to be created. This is useful during maintenance or when incidents occur.",
          "readOnly": true
        }
      }
    },
    "GetTechJournalLogsConfigResponse": {
      "type": "object",
      "properties": {
        "logConfig": {
          "$ref": "#/definitions/TechJournalLogsConfig",
          "description": "Current configuration for collecting tech journal logs for the cluster.",
          "readOnly": true
        }
      }
    },
    "Health": {
      "type": "object",
      "properties": {
        "issues": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/HealthIssue"
          },
          "description": "The list of health issues detected on the resource."
        }
      }
    },
    "HealthIssue": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/HealthIssueType",
          "description": "The type of the health issue."
        },
        "name": {
          "$ref": "#/definitions/HealthIssueName",
          "description": "The name of the health issue."
        },
        "severity": {
          "$ref": "#/definitions/HealthIssueSeverity",
          "description": "The severity of the health issue."
        },
        "metricThresholdBreach": {
          "$ref": "#/definitions/MetricThresholdBreach",
          "description": "The metric and threshold information for health issues\nrelated to high resource usage."
        },
        "scheduledTime": {
          "type": "string",
          "format": "date-time",
          "description": "The scheduled time for maintenance events."
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp when the issue was first observed."
        }
      }
    },
    "HealthIssueName": {
      "type": "string",
      "enum": [
        "HEALTH_ISSUE_NAME_UNSPECIFIED",
        "HEALTH_ISSUE_NAME_SCHEDULED_MAINTENANCE",
        "HEALTH_ISSUE_NAME_NO_LICENSES",
        "HEALTH_ISSUE_NAME_NO_CLIENT_LICENSES",
        "HEALTH_ISSUE_NAME_NO_SERVER_LICENSES",
        "HEALTH_ISSUE_NAME_UNSUPPORTED_LICENSE_TYPE",
        "HEALTH_ISSUE_NAME_PUBLIC_ACCESS_CONFIGURED",
        "HEALTH_ISSUE_NAME_DEPRECATED_PLATFORM_VERSION",
        "HEALTH_ISSUE_NAME_DEPRECATED_FLAVOR",
        "HEALTH_ISSUE_NAME_HIGH_RESOURCE_USAGE",
        "HEALTH_ISSUE_NAME_BACKUPS_NOT_ENABLED",
        "HEALTH_ISSUE_NAME_LATEST_AUTOMATED_BACKUP_FAILED",
        "HEALTH_ISSUE_NAME_LATEST_AUTOMATED_BACKUP_CANCELLED",
        "HEALTH_ISSUE_NAME_DISK_FULL",
        "HEALTH_ISSUE_NAME_INCORRECT_CNAME_RECORD",
        "HEALTH_ISSUE_NAME_CNAME_HIGH_TTL",
        "HEALTH_ISSUE_NAME_CERTIFICATE_EXPIRES_IN_LESS_THAN_A_MONTH",
        "HEALTH_ISSUE_NAME_CERTIFICATE_EXPIRES_IN_LESS_THAN_2_WEEKS",
        "HEALTH_ISSUE_NAME_CERTIFICATE_EXPIRED"
      ],
      "default": "HEALTH_ISSUE_NAME_UNSPECIFIED",
      "description": " - HEALTH_ISSUE_NAME_SCHEDULED_MAINTENANCE: The upcoming maintenance that may impact the availability of customer\nresources.\n - HEALTH_ISSUE_NAME_NO_LICENSES: The cluster has no activated server or client licenses.\n - HEALTH_ISSUE_NAME_NO_CLIENT_LICENSES: The cluster has no activated client licenses, preventing end users\nfrom starting sessions.\n - HEALTH_ISSUE_NAME_NO_SERVER_LICENSES: The cluster has no activated server licenses.\n - HEALTH_ISSUE_NAME_UNSUPPORTED_LICENSE_TYPE: The cluster has an activated license of an unsupported type or edition.\n - HEALTH_ISSUE_NAME_PUBLIC_ACCESS_CONFIGURED: The resource is publicly accessible over the internet, which is not\nrecommended. Public access should only be used for debugging purposes\nfor a short time.\n - HEALTH_ISSUE_NAME_DEPRECATED_PLATFORM_VERSION: The resource is running an unsupported 1C platform version that no longer\nreceives updates.A customer is advised to upgrade to a supported version.\n - HEALTH_ISSUE_NAME_DEPRECATED_FLAVOR: The resource is using a deprecated compute flavor that no longer receives\nupdates. A customer is advised to upgrade to a supported flavor.\n - HEALTH_ISSUE_NAME_HIGH_RESOURCE_USAGE: The compute resource utilization was high during the specified interval.\nThis may result in increased latency or service degradation, impacting\nend users.High utilization indicates poor capacity planning, and scaling up\nis recommended.\n - HEALTH_ISSUE_NAME_BACKUPS_NOT_ENABLED: The automated backups are not enabled for the resource.\n - HEALTH_ISSUE_NAME_LATEST_AUTOMATED_BACKUP_FAILED: The latest automated backup has failed.\n - HEALTH_ISSUE_NAME_LATEST_AUTOMATED_BACKUP_CANCELLED: The latest automated backup was canceled.\n - HEALTH_ISSUE_NAME_DISK_FULL: Datastore is read-only because it is full.\n - HEALTH_ISSUE_NAME_INCORRECT_CNAME_RECORD: Cluster domain's CNAME record does not point to the target cluster.\n - HEALTH_ISSUE_NAME_CNAME_HIGH_TTL: Cluster domain's CNAME record has a high TTL value.\nRecommended TTL value is 300.\n - HEALTH_ISSUE_NAME_CERTIFICATE_EXPIRES_IN_LESS_THAN_A_MONTH: Certificate for the cluster domain expires in less than a month.\n - HEALTH_ISSUE_NAME_CERTIFICATE_EXPIRES_IN_LESS_THAN_2_WEEKS: Certificate for the cluster domain expires in less than 2 weeks.\n - HEALTH_ISSUE_NAME_CERTIFICATE_EXPIRED: Certificate for the cluster domain expired."
    },
    "HealthIssueSeverity": {
      "type": "string",
      "enum": [
        "HEALTH_ISSUE_SEVERITY_UNSPECIFIED",
        "HEALTH_ISSUE_SEVERITY_ADVISORY",
        "HEALTH_ISSUE_SEVERITY_INFO",
        "HEALTH_ISSUE_SEVERITY_WARNING",
        "HEALTH_ISSUE_SEVERITY_CRITICAL"
      ],
      "default": "HEALTH_ISSUE_SEVERITY_UNSPECIFIED",
      "description": " - HEALTH_ISSUE_SEVERITY_ADVISORY: The advisory affecting existing services that may require administrator action.\n - HEALTH_ISSUE_SEVERITY_INFO: The informational notification that does not require customer action.\n - HEALTH_ISSUE_SEVERITY_WARNING: The warning that may require administrator action to prevent service impact.\n - HEALTH_ISSUE_SEVERITY_CRITICAL: The critical issue requiring immediate administrator action to prevent service impact."
    },
    "HealthIssueType": {
      "type": "string",
      "enum": [
        "HEALTH_ISSUE_TYPE_UNSPECIFIED",
        "HEALTH_ISSUE_TYPE_MAINTENANCE",
        "HEALTH_ISSUE_TYPE_HEALTH_ADVISORY",
        "HEALTH_ISSUE_TYPE_SECURITY_ADVISORY"
      ],
      "default": "HEALTH_ISSUE_TYPE_UNSPECIFIED",
      "description": " - HEALTH_ISSUE_TYPE_MAINTENANCE: The notification related to a past, future, or ongoing maintenance event.\n - HEALTH_ISSUE_TYPE_HEALTH_ADVISORY: The advisory regarding changes in the service that require customer\nattention. Examples include the deprecation of compute flavors or upgrade\nrequirements.\n - HEALTH_ISSUE_TYPE_SECURITY_ADVISORY: The security-related notification or violation that may affect\nthe availability of customer services."
    },
    "Infobase": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier of the infobase resource.",
          "readOnly": true
        },
        "projectId": {
          "type": "string",
          "description": "Identifier of the Selectel project that this infobase belongs to.",
          "readOnly": true
        },
        "spec": {
          "$ref": "#/definitions/InfobaseSpec",
          "description": "The desired configuration and settings for the infobase."
        },
        "state": {
          "$ref": "#/definitions/InfobaseState",
          "description": "The current observed state of the infobase, reflecting its real-time\nstatus.",
          "readOnly": true
        },
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The cluster that is currently hosting and serving the infobase.",
          "readOnly": true
        },
        "datastore": {
          "$ref": "#/definitions/Datastore",
          "description": "The datastore where the infobase's data is stored.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the infobase was created.",
          "readOnly": true
        }
      },
      "description": "Represents an infobase, which is a logical database within a 1C platform.\nEach infobase is hosted on a datastore (a DBMS cluster), and it contains\ndata for business applications. It also resides within a specific cluster,\nwhich provides the compute resources for the infobase.",
      "required": [
        "spec"
      ]
    },
    "InfobaseLockReason": {
      "type": "string",
      "enum": [
        "INFOBASE_LOCK_REASON_UNSPECIFIED",
        "INFOBASE_LOCK_REASON_PENDING_CREATE",
        "INFOBASE_LOCK_REASON_PENDING_TRANSFER",
        "INFOBASE_LOCK_REASON_PENDING_BACKUP",
        "INFOBASE_LOCK_REASON_PENDING_RESTORE",
        "INFOBASE_LOCK_REASON_PENDING_DELETION",
        "INFOBASE_LOCK_REASON_ACTION_IN_PROGRESS",
        "INFOBASE_LOCK_REASON_PENDING_MODIFICATION"
      ],
      "default": "INFOBASE_LOCK_REASON_UNSPECIFIED",
      "description": "Enum representing the reason why the infobase is currently locked and\nunavailable for modifications.\n\n - INFOBASE_LOCK_REASON_UNSPECIFIED: The unspecified lock reason means that the resource isn't locked by\nany other task or process.\n - INFOBASE_LOCK_REASON_PENDING_CREATE: The infobase is locked because a creation job has been scheduled,\nbut it has not yet been processed by the worker.\n - INFOBASE_LOCK_REASON_PENDING_TRANSFER: The infobase is locked because a transfer job has been scheduled to move it\nto another cluster, but it has not yet been processed.\n - INFOBASE_LOCK_REASON_PENDING_BACKUP: The infobase is locked because a backup job has been scheduled,\nbut it has not yet been processed by the worker.\n - INFOBASE_LOCK_REASON_PENDING_RESTORE: The infobase is locked because a restore job has been scheduled\nto recover it from a backup, but it has not yet been processed.\n - INFOBASE_LOCK_REASON_PENDING_DELETION: The infobase is locked because a deletion job has been scheduled,\nbut it has not yet been processed by the worker.\n - INFOBASE_LOCK_REASON_ACTION_IN_PROGRESS: The infobase is locked because an action is currently in progress\n(e.g., creation, modification,, deletion).\n - INFOBASE_LOCK_REASON_PENDING_MODIFICATION: The infobase is locked because a modification job has been scheduled,\nbut it has not yet been processed by the worker."
    },
    "InfobaseSpec": {
      "type": "object",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "Identifier of the cluster where this infobase is hosted."
        },
        "datastoreId": {
          "type": "string",
          "description": "Identifier of the datastore where this infobase stores its data."
        },
        "name": {
          "type": "string",
          "description": "The user-defined name of the infobase."
        },
        "description": {
          "type": "string",
          "description": "The user-defined description of the infobase."
        },
        "webPublicationEnabled": {
          "type": "boolean",
          "description": "Specifies whether web publication is enabled for this infobase.\nDefaults to true."
        }
      },
      "description": "Defines the desired configuration of an infobase.",
      "required": [
        "clusterId",
        "datastoreId",
        "name",
        "description"
      ]
    },
    "InfobaseState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/InfobaseStatus",
          "description": "The current status of the infobase.",
          "readOnly": true
        },
        "lockReason": {
          "$ref": "#/definitions/InfobaseLockReason",
          "description": "The reason why the resource has been locked for modifications. A non-zero\nvalue indicates that the resource cannot be modified at this moment.\nOnce locked, no modifications (including deletion) can be performed\nexcept by the process that holds the lock.",
          "readOnly": true
        },
        "url": {
          "type": "string",
          "description": "The base URL of the 1C web client for accessing this infobase.",
          "readOnly": true
        },
        "infobaseName": {
          "type": "string",
          "description": "The name of the infobase within the 1C cluster. This is typically\na slugified version of the user-defined name in the infobase specification.",
          "readOnly": true
        },
        "webPublicationName": {
          "type": "string",
          "description": "The name of the web publication for this infobase within the 1C cluster.\nThis is usually a slugified version of the user-defined name from the\ninfobase spec.\nThe infobase can be accessed at the base path `/${web_publication_name}`.",
          "readOnly": true
        },
        "webPublicationErrored": {
          "type": "boolean",
          "description": "Indicates whether web publication is broken due to misconfigured\nparameters.",
          "readOnly": true
        },
        "health": {
          "$ref": "#/definitions/Health",
          "description": "The health status of the infobase.",
          "readOnly": true
        }
      },
      "description": "Represents the current observed state of an infobase, including operational\nstatus, lock information, web publication name and error, and health."
    },
    "InfobaseStatus": {
      "type": "string",
      "enum": [
        "INFOBASE_STATUS_UNSPECIFIED",
        "INFOBASE_STATUS_PENDING",
        "INFOBASE_STATUS_CREATING",
        "INFOBASE_STATUS_ACTIVE",
        "INFOBASE_STATUS_ERRORED",
        "INFOBASE_STATUS_RESTORING",
        "INFOBASE_STATUS_BACKING_UP",
        "INFOBASE_STATUS_TRANSFERRING",
        "INFOBASE_STATUS_DELETING",
        "INFOBASE_STATUS_DELETED",
        "INFOBASE_STATUS_MODIFYING"
      ],
      "default": "INFOBASE_STATUS_UNSPECIFIED",
      "description": "Enum representing the operational status of the infobase.\n\n - INFOBASE_STATUS_PENDING: The infobase is waiting while the environment and required resources\nare being prepared.\n - INFOBASE_STATUS_CREATING: The infobase is in the process of being created.\n - INFOBASE_STATUS_ACTIVE: The infobase is fully operational and ready for use.\n - INFOBASE_STATUS_ERRORED: An unrecoverable error has occurred, making the infobase unusable.\n - INFOBASE_STATUS_RESTORING: The infobase is being restored from a backup.\n - INFOBASE_STATUS_BACKING_UP: A backup operation is in progress (e.g., a database snapshot or .dt dump\nis being created).\n - INFOBASE_STATUS_TRANSFERRING: The infobase is being migrated to a different cluster.\n - INFOBASE_STATUS_DELETING: The infobase is in the process of being deleted.\n - INFOBASE_STATUS_DELETED: The infobase has been deleted.\n - INFOBASE_STATUS_MODIFYING: The infobase is being modified due to a customer-requested change."
    },
    "LicenseActivation": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the activation.",
          "readOnly": true
        },
        "pin": {
          "type": "string",
          "description": "The PIN code used for license activation.",
          "readOnly": true
        },
        "serial": {
          "type": "string",
          "description": "The registration number of the license (aka kit number).",
          "readOnly": true
        },
        "state": {
          "$ref": "#/definitions/LicenseState",
          "description": "The current observed state of the license activation, reflecting\nits real-time status.",
          "readOnly": true
        },
        "observedProductDescription": {
          "type": "string",
          "description": "The observed product description associated with the license.",
          "readOnly": true
        },
        "inferredLicenseType": {
          "$ref": "#/definitions/LicenseType",
          "description": "The inferred type of the license.",
          "readOnly": true
        },
        "inferredSeatsNumber": {
          "type": "string",
          "format": "int64",
          "description": "The inferred number of available seats.",
          "readOnly": true
        },
        "rented": {
          "type": "boolean",
          "description": "Indicates whether the license is rented or owned by the customer.",
          "readOnly": true
        }
      }
    },
    "LicenseDetails": {
      "type": "object",
      "properties": {
        "company": {
          "type": "string",
          "description": "The name of the company that owns the license."
        },
        "firstName": {
          "type": "string",
          "description": "The first name of the license owner."
        },
        "middleName": {
          "type": "string",
          "description": "The middle name of the license owner."
        },
        "lastName": {
          "type": "string",
          "description": "The last name of the license owner."
        },
        "email": {
          "type": "string",
          "description": "The email address of the license owner."
        },
        "country": {
          "type": "string",
          "description": "The two-letter country code for which the license was purchased (e.g., RU)."
        },
        "zip": {
          "type": "string",
          "description": "The postal code of the license owner's address."
        },
        "region": {
          "type": "string",
          "description": "The region of the license owner's address."
        },
        "district": {
          "type": "string",
          "description": "The district of the license owner's address."
        },
        "town": {
          "type": "string",
          "description": "The town or city of the license owner's address."
        },
        "street": {
          "type": "string",
          "description": "The street name of the license owner's address."
        },
        "house": {
          "type": "string",
          "description": "The house number of the license owner's address."
        },
        "building": {
          "type": "string",
          "description": "The building number of the license owner's address."
        },
        "apartment": {
          "type": "string",
          "description": "The apartment number of the license owner's address."
        },
        "serial": {
          "type": "string",
          "description": "The serial number of the license (aka kit number)."
        },
        "pin": {
          "type": "string",
          "description": "The PIN code used for license activation."
        },
        "previousPin": {
          "type": "string",
          "description": "The previous PIN code associated with the license."
        }
      },
      "description": "The license details used for license activation.",
      "required": [
        "serial",
        "pin"
      ]
    },
    "LicenseEdition": {
      "type": "string",
      "enum": [
        "LICENSE_EDITION_UNSPECIFIED",
        "LICENSE_EDITION_PROF",
        "LICENSE_EDITION_CORP"
      ],
      "default": "LICENSE_EDITION_UNSPECIFIED",
      "description": "- LICENSE_EDITION_PROF: License edition is \"PROF\".\n - LICENSE_EDITION_CORP: License edition is \"CORP\".",
      "title": "Edition of the license. Key differences between editions are described\nMore about key differences between editions:\nhttps://spb.1cbit.ru/blog/litsenzii-1c-novye-pravila-raboty-s-litsenziyami-prof-i-korp"
    },
    "LicenseRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the license request.",
          "readOnly": true
        },
        "type": {
          "$ref": "#/definitions/LicenseType",
          "description": "Requested type of the license to rent."
        },
        "edition": {
          "$ref": "#/definitions/LicenseEdition",
          "description": "Requested edition of the license to be rented."
        },
        "count": {
          "type": "string",
          "format": "uint64",
          "title": "Requested number of licenses to rent"
        },
        "state": {
          "$ref": "#/definitions/LicenseRequestState",
          "description": "Сurrent state of the license request, reflecting its status in real time.",
          "readOnly": true
        }
      },
      "description": "Request to rent licenses.",
      "required": [
        "type",
        "edition",
        "count"
      ]
    },
    "LicenseRequestLockReason": {
      "type": "string",
      "enum": [
        "LICENSE_REQUEST_LOCK_REASON_UNSPECIFIED",
        "LICENSE_REQUEST_LOCK_REASON_PENDING_RENT",
        "LICENSE_REQUEST_LOCK_REASON_ACTION_IN_PROGRESS",
        "LICENSE_REQUEST_LOCK_REASON_PENDING_RENT_CANCELLATION"
      ],
      "default": "LICENSE_REQUEST_LOCK_REASON_UNSPECIFIED",
      "description": " - LICENSE_REQUEST_LOCK_REASON_UNSPECIFIED: License rent request is not blocked by any other task or process.\n - LICENSE_REQUEST_LOCK_REASON_PENDING_RENT: License rent request is blocked because the rent task has already been scheduled,\nbut has not yet been processed by the worker.\n - LICENSE_REQUEST_LOCK_REASON_ACTION_IN_PROGRESS: License rent request is locked because an action is in progress.\n - LICENSE_REQUEST_LOCK_REASON_PENDING_RENT_CANCELLATION: License rent request is locked because a cancellation task is scheduled,\nbut has not yet been processed by the worker."
    },
    "LicenseRequestState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/LicenseRequestStatus",
          "description": "Current status of the license rent request.",
          "readOnly": true
        },
        "lockReason": {
          "$ref": "#/definitions/LicenseRequestLockReason",
          "description": "The reason why the resource is locked for modifications.\nA non-zero value indicates that the resource cannot be modified at this\nmoment. Once the resource is locked, no modifications (including deletion)\ncan be made to the resource except by the process that obtained the lock.",
          "readOnly": true
        }
      }
    },
    "LicenseRequestStatus": {
      "type": "string",
      "enum": [
        "LICENSE_REQUEST_STATUS_UNSPECIFIED",
        "LICENSE_REQUEST_STATUS_PENDING",
        "LICENSE_REQUEST_STATUS_PROGRESSING",
        "LICENSE_REQUEST_STATUS_FAILED",
        "LICENSE_REQUEST_STATUS_SUCCEEDED",
        "LICENSE_REQUEST_STATUS_CANCELLED",
        "LICENSE_REQUEST_STATUS_CANCELLING"
      ],
      "default": "LICENSE_REQUEST_STATUS_UNSPECIFIED",
      "description": " - LICENSE_REQUEST_STATUS_PENDING: The license request has been received and is awaiting processing.\n - LICENSE_REQUEST_STATUS_PROGRESSING: License rent request is being processed.\n - LICENSE_REQUEST_STATUS_FAILED: License rent request has failed due to an error.\n - LICENSE_REQUEST_STATUS_SUCCEEDED: License rent request has been fulfilled\n - LICENSE_REQUEST_STATUS_CANCELLED: License rent request was cancelled by the user or system.\n - LICENSE_REQUEST_STATUS_CANCELLING: License rent request is being cancelled."
    },
    "LicenseState": {
      "type": "string",
      "enum": [
        "LICENSE_STATE_UNSPECIFIED",
        "LICENSE_STATE_PENDING",
        "LICENSE_STATE_ACTIVATING",
        "LICENSE_STATE_ERRORED",
        "LICENSE_STATE_ACTIVATED",
        "LICENSE_STATE_DEACTIVATING",
        "LICENSE_STATE_DEACTIVATED"
      ],
      "default": "LICENSE_STATE_UNSPECIFIED",
      "description": " - LICENSE_STATE_PENDING: The license is waiting while we prepare the environment and resources\nfor it.\n - LICENSE_STATE_ACTIVATING: The license is currently being activated.\n - LICENSE_STATE_ERRORED: An unrecoverable error occurred, and the license could not be activated.\n - LICENSE_STATE_ACTIVATED: The license was activated successfully.\n - LICENSE_STATE_DEACTIVATING: The license is currently being deactivated.\n - LICENSE_STATE_DEACTIVATED: The license was deactivated successfully."
    },
    "LicenseType": {
      "type": "string",
      "enum": [
        "LICENSE_TYPE_UNSPECIFIED",
        "LICENSE_TYPE_CLIENT",
        "LICENSE_TYPE_SERVER",
        "LICENSE_TYPE_SERVER_MINI",
        "LICENSE_TYPE_BUNDLE_CLIENT_AND_SERVER"
      ],
      "default": "LICENSE_TYPE_UNSPECIFIED",
      "description": "The type of the license.\n\n - LICENSE_TYPE_CLIENT: The license is used for a client application.\n - LICENSE_TYPE_SERVER: The license is used for a server application.\n - LICENSE_TYPE_SERVER_MINI: The license is a hybrid type (server + a fixed number of client licenses)\nwith limitations.\n - LICENSE_TYPE_BUNDLE_CLIENT_AND_SERVER: The license is a bundle (server + a fixed number of client licenses)\nwithout the limitations of \"server mini\"."
    },
    "ListActivatedLicensesResponse": {
      "type": "object",
      "properties": {
        "entities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/LicenseActivation"
          },
          "description": "A list of license activations returned by the request.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "The cursor for the next page of results and the total number of records.",
          "readOnly": true
        }
      }
    },
    "ListBackupVaultSupportedRegionsResponse": {
      "type": "object",
      "properties": {
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of supported regions for backup vaults.",
          "readOnly": true
        }
      }
    },
    "ListBackupVaultsResponse": {
      "type": "object",
      "properties": {
        "vaults": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/BackupVault"
          },
          "description": "A list of backup vaults.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "A cursor for fetching the next page of results, along with the total number of records.",
          "readOnly": true
        }
      }
    },
    "ListClusterDomainsResponse": {
      "type": "object",
      "properties": {
        "clusterDomains": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterDomain"
          },
          "description": "A list of cluster domains.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "A next cursor and the total number of records for pagination.",
          "readOnly": true
        }
      }
    },
    "ListClusterFlavorsResponse": {
      "type": "object",
      "properties": {
        "flavors": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterFlavor"
          },
          "description": "A list of cluster flavors.",
          "readOnly": true
        }
      }
    },
    "ListClusterMntEventsResponse": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterMntEvent"
          },
          "description": "The list of maintenance events for the cluster.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "The next cursor and total number of records.",
          "readOnly": true
        }
      }
    },
    "ListClusterPlatformsResponse": {
      "type": "object",
      "properties": {
        "platforms": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterPlatform"
          },
          "description": "A list of cluster platforms.",
          "readOnly": true
        }
      }
    },
    "ListClusterProxiesResponse": {
      "type": "object",
      "properties": {
        "clusterProxies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterProxy"
          },
          "description": "A list of cluster proxies.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "A next cursor and the total number of records for pagination.",
          "readOnly": true
        }
      }
    },
    "ListClusterSessionsResponse": {
      "type": "object",
      "properties": {
        "sessions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterSession"
          },
          "description": "The list of sessions for the cluster.",
          "readOnly": true
        }
      }
    },
    "ListClusterVolumeSupportedRegionsResponse": {
      "type": "object",
      "properties": {
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of supported regions for cluster volumes.",
          "readOnly": true
        }
      }
    },
    "ListClusterVolumesResponse": {
      "type": "object",
      "properties": {
        "volumes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ClusterVolume"
          },
          "description": "A list of volumes attached to the cluster.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "A next cursor and total number of records for pagination.",
          "readOnly": true
        }
      }
    },
    "ListClustersResponse": {
      "type": "object",
      "properties": {
        "clusters": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Cluster"
          },
          "description": "A list of clusters returned by the request.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "The cursor for the next page of results and the total number of records.",
          "readOnly": true
        }
      }
    },
    "ListDatastoreFlavorsResponse": {
      "type": "object",
      "properties": {
        "flavors": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/DatastoreFlavor"
          },
          "description": "A list of supported datastore flavors.",
          "readOnly": true
        }
      }
    },
    "ListDatastoreMntEventsResponse": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/DatastoreMntEvent"
          },
          "description": "A list of datastore maintenance events.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "A next cursor and total number of records for pagination.",
          "readOnly": true
        }
      }
    },
    "ListDatastoreTypesResponse": {
      "type": "object",
      "properties": {
        "types": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/DatastoreType"
          },
          "description": "A list of supported datastore types.",
          "readOnly": true
        }
      }
    },
    "ListDatastoresResponse": {
      "type": "object",
      "properties": {
        "datastores": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Datastore"
          },
          "description": "A list of datastores.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "A next cursor and total number of records for pagination.",
          "readOnly": true
        }
      }
    },
    "ListInfobasesResponse": {
      "type": "object",
      "properties": {
        "infobases": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Infobase"
          },
          "description": "A list of infobases.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "A next cursor and total number of records for pagination.",
          "readOnly": true
        }
      }
    },
    "ListPredefinedTechJournalLogConfigsResponse": {
      "type": "object",
      "properties": {
        "predefinedLogConfigs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/TechJournalLogsConfig"
          },
          "description": "List of predefined tech journal log configurations.",
          "readOnly": true
        }
      }
    },
    "ListRentsResponse": {
      "type": "object",
      "properties": {
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/LicenseRequest"
          },
          "description": "List of license requests associated with specified clusters.",
          "readOnly": true
        },
        "appliedSolutions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of rented 1C application solutions for this cluster.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "Cursor for the next page of results and the total number of records.",
          "readOnly": true
        }
      }
    },
    "ListTechJournalLogPlansResponse": {
      "type": "object",
      "properties": {
        "logPlans": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/TechJournalLogPlan"
          },
          "description": "List of tech journal log collection plans for the specified cluster.",
          "readOnly": true
        }
      }
    },
    "Metric": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "#/definitions/MetricName",
          "description": "The name of the metric."
        },
        "unit": {
          "$ref": "#/definitions/MetricUnit",
          "description": "The unit of measurement (e.g., percent)."
        },
        "metricStatistic": {
          "$ref": "#/definitions/MetricStatistic",
          "description": "The metric data aggregation over a specified period."
        },
        "value": {
          "type": "number",
          "format": "double",
          "description": "The value of the metric."
        },
        "period": {
          "type": "string",
          "description": "The length of time associated with the specified statistic."
        }
      }
    },
    "MetricName": {
      "type": "string",
      "enum": [
        "METRIC_NAME_UNSPECIFIED",
        "METRIC_NAME_CPU_USAGE",
        "METRIC_NAME_MEMORY_USAGE",
        "METRIC_NAME_DISK_USAGE"
      ],
      "default": "METRIC_NAME_UNSPECIFIED",
      "description": " - METRIC_NAME_CPU_USAGE: The CPU usage metric.\n - METRIC_NAME_MEMORY_USAGE: The memory usage metric.\n - METRIC_NAME_DISK_USAGE: The disk usage metric."
    },
    "MetricStatistic": {
      "type": "string",
      "enum": [
        "METRIC_STATISTIC_UNSPECIFIED",
        "METRIC_STATISTIC_AVERAGE"
      ],
      "default": "METRIC_STATISTIC_UNSPECIFIED",
      "description": "The metric statistic representing data aggregation over a specified period.\n\n - METRIC_STATISTIC_AVERAGE: The average metric statistic."
    },
    "MetricThresholdBreach": {
      "type": "object",
      "properties": {
        "metric": {
          "$ref": "#/definitions/Metric",
          "description": "The metric associated with the issue. Not every health issue has a metric."
        },
        "threshold": {
          "type": "number",
          "format": "double",
          "description": "The metric threshold that was breached, triggering health issue\nnotification."
        }
      }
    },
    "MetricUnit": {
      "type": "string",
      "enum": [
        "METRIC_UNIT_UNSPECIFIED",
        "METRIC_UNIT_PERCENT"
      ],
      "default": "METRIC_UNIT_UNSPECIFIED",
      "description": "The unit of measurement for a metric.\n\n - METRIC_UNIT_PERCENT: The percentage unit of measurement."
    },
    "MountClusterVolumeBody": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/ClusterVolumeSpec",
          "description": "The specification of the volume to mount."
        }
      },
      "required": [
        "spec"
      ]
    },
    "MountClusterVolumeResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The updated state of the cluster after the request.",
          "readOnly": true
        },
        "volume": {
          "$ref": "#/definitions/ClusterVolume",
          "description": "The volume that was added to the cluster."
        }
      }
    },
    "PatchBackupPlanResponse": {
      "type": "object",
      "properties": {
        "backupPlan": {
          "$ref": "#/definitions/BackupPlan",
          "description": "The backup plan after being updated.\nThis is the modified version of the original backup plan.",
          "readOnly": true
        }
      }
    },
    "PatchBackupVaultResponse": {
      "type": "object",
      "properties": {
        "vault": {
          "$ref": "#/definitions/BackupVault",
          "description": "The vault after being updated.\nThis is the modified version of the original backup vault.",
          "readOnly": true
        }
      }
    },
    "PatchClusterDomainResponse": {
      "type": "object",
      "properties": {
        "domain": {
          "$ref": "#/definitions/ClusterDomain",
          "description": "The updated cluster domain with applied changes.",
          "readOnly": true
        },
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The updated state of the cluster after the request.",
          "readOnly": true
        }
      }
    },
    "PatchClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The updated cluster with applied changes.",
          "readOnly": true
        }
      }
    },
    "PatchDatastoreResponse": {
      "type": "object",
      "properties": {
        "datastore": {
          "$ref": "#/definitions/Datastore",
          "description": "The updated state of the datastore.",
          "readOnly": true
        }
      }
    },
    "PatchInfobaseResponse": {
      "type": "object",
      "properties": {
        "infobase": {
          "$ref": "#/definitions/Infobase",
          "description": "The patched infobase.",
          "readOnly": true
        }
      }
    },
    "RegisterClusterDomainBody": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/ClusterDomainSpec",
          "description": "The specification for the cluster domain to be registered."
        }
      },
      "required": [
        "spec"
      ]
    },
    "RegisterClusterDomainResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The updated state of the cluster after the request.",
          "readOnly": true
        },
        "domain": {
          "$ref": "#/definitions/ClusterDomain",
          "description": "The registered cluster domain, with output-only fields filled.",
          "readOnly": true
        }
      }
    },
    "RentParameters": {
      "type": "object",
      "properties": {
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/LicenseRequest"
          },
          "description": "List of license rent requests."
        },
        "appliedSolutions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of application solutions available for rent in the cluster.\nMore: https://v8.1c.ru/tekhnologii/tipovye-prikladnye-resheniya-dlya-rossiyskikh-organizatsiy-na-platforme-1s-predpriyatie-8/"
        }
      },
      "description": "Rent request.",
      "required": [
        "requests"
      ]
    },
    "RentPrice": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/LicenseType",
          "description": "Type of the license to rent."
        },
        "edition": {
          "$ref": "#/definitions/LicenseEdition",
          "description": "Edition of the license to rent."
        },
        "price": {
          "type": "number",
          "format": "float",
          "description": "Price of the license to rent (per unit)."
        }
      }
    },
    "RentRequest": {
      "type": "object",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "Cluster identifier for which the license will be activated."
        },
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/LicenseRequest"
          },
          "description": "List of license rent requests. Every request consists of license types\nand their respective quantities to rent."
        },
        "appliedSolutions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of application solutions available for rent in the cluster.\nMore: https://v8.1c.ru/tekhnologii/tipovye-prikladnye-resheniya-dlya-rossiyskikh-organizatsiy-na-platforme-1s-predpriyatie-8/"
        }
      },
      "required": [
        "clusterId",
        "requests"
      ]
    },
    "RentResponse": {
      "type": "object",
      "properties": {
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/LicenseRequest"
          },
          "description": "List of the created license rent requests.",
          "readOnly": true
        }
      }
    },
    "ResizeClusterBody": {
      "type": "object",
      "properties": {
        "flavor": {
          "$ref": "#/definitions/ClusterFlavor",
          "description": "A desired flavor for the cluster."
        }
      },
      "required": [
        "flavor"
      ]
    },
    "ResizeClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The state of the cluster after the resize request.",
          "readOnly": true
        }
      }
    },
    "ResizeDatastoreBody": {
      "type": "object",
      "properties": {
        "flavor": {
          "$ref": "#/definitions/DatastoreFlavor",
          "description": "The desired flavor for the datastore."
        },
        "nodeCount": {
          "type": "string",
          "format": "int64",
          "description": "The number of nodes in the datastore (database cluster)."
        }
      },
      "required": [
        "flavor"
      ]
    },
    "ResizeDatastoreResponse": {
      "type": "object",
      "properties": {
        "datastore": {
          "$ref": "#/definitions/Datastore",
          "description": "The updated state of the datastore after the resize request.",
          "readOnly": true
        }
      }
    },
    "ResourceConstraint": {
      "type": "object",
      "properties": {
        "min": {
          "type": "string",
          "format": "int64",
          "description": "The minimum allowable value for the resource allocation."
        },
        "max": {
          "type": "string",
          "format": "int64",
          "description": "The maximum allowable value for the resource allocation."
        }
      },
      "description": "Defines the constraints for resource allocation, specifying the\nminimum and maximum allowable values for a resource, such as CPU, RAM,\nor disk storage, within the resource's configuration."
    },
    "RestartClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The state of the cluster after the restart request.",
          "readOnly": true
        }
      }
    },
    "RestoreFromBackupRequest": {
      "type": "object",
      "properties": {
        "infobaseId": {
          "type": "string",
          "description": "Identifier the infobase to restore."
        },
        "backupId": {
          "type": "string",
          "description": "Identifier of the backup to restore from."
        }
      },
      "required": [
        "infobaseId",
        "backupId"
      ]
    },
    "RestoreFromBackupResponse": {
      "type": "object"
    },
    "RestoreFromDTRequest": {
      "type": "object",
      "properties": {
        "infobaseId": {
          "type": "string",
          "description": "Identifier of the infobase to restore."
        },
        "uploadId": {
          "type": "string",
          "description": "Identifier of the .dt file upload."
        },
        "uri": {
          "type": "string",
          "description": "External URL of the .dt file."
        }
      }
    },
    "RestoreFromDTResponse": {
      "type": "object"
    },
    "RestoreStatus": {
      "type": "string",
      "enum": [
        "RESTORE_STATUS_UNSPECIFIED",
        "RESTORE_STATUS_PENDING",
        "RESTORE_STATUS_PREPARING",
        "RESTORE_STATUS_IN_PROGRESS",
        "RESTORE_STATUS_FINISHING",
        "RESTORE_STATUS_FAILED",
        "RESTORE_STATUS_SUCCEEDED",
        "RESTORE_STATUS_CANCELLED"
      ],
      "default": "RESTORE_STATUS_UNSPECIFIED",
      "description": " - RESTORE_STATUS_PENDING: Restore is scheduled but not yet picked up by the worker process.\n - RESTORE_STATUS_PREPARING: Preparing the infobase and datastore for restore.\n - RESTORE_STATUS_IN_PROGRESS: Restore is currently in progress.\n - RESTORE_STATUS_FINISHING: Finalizing the restore and returning cluster and datastore to normal\noperations.\n - RESTORE_STATUS_FAILED: Restore has failed.\n - RESTORE_STATUS_SUCCEEDED: Restore completed successfully.\n - RESTORE_STATUS_CANCELLED: Restore was cancelled."
    },
    "RetrieveBackedUpInfobasesResponse": {
      "type": "object",
      "properties": {
        "infobases": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Infobase"
          },
          "description": "List of infobases with backups."
        }
      }
    },
    "RetrieveBackupPlansRequest": {
      "type": "object",
      "properties": {
        "infobaseIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of infobase identifiers for which backup plans will be retrieved."
        }
      },
      "required": [
        "infobaseIds"
      ]
    },
    "RetrieveBackupPlansResponse": {
      "type": "object",
      "properties": {
        "backupPlans": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/BackupPlan"
          },
          "description": "List of backup plans for the provided infobases.",
          "readOnly": true
        }
      }
    },
    "RetrieveInfobaseBackupsResponse": {
      "type": "object",
      "properties": {
        "backups": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/Backup"
          },
          "description": "A list of backups for the specified infobase.",
          "readOnly": true
        },
        "cursor": {
          "$ref": "#/definitions/CursorResponse",
          "description": "A cursor for fetching the next page of results, along with the total number of records.",
          "readOnly": true
        }
      }
    },
    "RetrieveRestoreFromBackupStatusResponse": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/RestoreStatus",
          "description": "Current status of the restore process."
        }
      }
    },
    "S3Config": {
      "type": "object",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Name of the S3 bucket (object storage container)."
        },
        "bucketPrefix": {
          "type": "string",
          "description": "Prefix in the bucket."
        },
        "region": {
          "type": "string",
          "description": "Region of the bucket.\nDefault value is ru-1."
        },
        "accessKeyId": {
          "type": "string",
          "description": "Access key identifier for authentication."
        },
        "secretAccessKey": {
          "type": "string",
          "description": "Secret access key for authentication."
        }
      },
      "description": "Contains the configuration for authenticating and interacting with\nS3-compatible object storage. Currently, Selectel is the only supported\nobject storage service provider.",
      "required": [
        "bucketName",
        "accessKeyId"
      ]
    },
    "S3VolumeOptions": {
      "type": "object",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "bucketPrefix": {
          "type": "string",
          "description": "The prefix in the bucket to use when mounting."
        },
        "region": {
          "type": "string",
          "description": "The region of the bucket."
        },
        "accessKeyId": {
          "type": "string",
          "description": "The access key identifier used to authenticate in object storage."
        },
        "secretAccessKey": {
          "type": "string",
          "description": "The secret access key used to authenticate in object storage."
        }
      },
      "description": "Defines the specific configuration options for mounting an S3 volume\nwithin the cluster, including bucket name, access keys, and other parameters.",
      "required": [
        "bucketName"
      ]
    },
    "StorageAutoScaling": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Indicates whether storage auto scaling is enabled.",
          "readOnly": true
        },
        "disabledReason": {
          "$ref": "#/definitions/StorageAutoScalingDisabledReason",
          "description": "Reason why storage auto scaling is disabled (if applicable).",
          "readOnly": true
        },
        "scaleUpThreshold": {
          "type": "string",
          "format": "uint64",
          "description": "If disk usage (in percentage) exceeds this threshold for the specified breach duration,\na scaling operation is triggered or scheduled.",
          "readOnly": true
        },
        "breachDuration": {
          "type": "string",
          "description": "The time period for which disk usage must exceed the scale-up threshold\nbefore a scaling operation is triggered or scheduled.",
          "readOnly": true
        }
      },
      "description": "Describes the configuration for storage auto scaling."
    },
    "StorageAutoScalingDisabledReason": {
      "type": "string",
      "enum": [
        "STORAGE_AUTO_SCALING_DISABLED_REASON_UNSPECIFIED",
        "STORAGE_AUTO_SCALING_DISABLED_REASON_CUSTOMER_REQUEST",
        "STORAGE_AUTO_SCALING_DISABLED_REASON_UNSUPPORTED_FLAVOR",
        "STORAGE_AUTO_SCALING_DISABLED_REASON_STORAGE_LIMIT_REACHED"
      ],
      "default": "STORAGE_AUTO_SCALING_DISABLED_REASON_UNSPECIFIED",
      "description": "Enum representing the reasons why storage auto scaling may be disabled.\n\n - STORAGE_AUTO_SCALING_DISABLED_REASON_CUSTOMER_REQUEST: Storage auto scaling is disabled because the customer manually turned it off.\n - STORAGE_AUTO_SCALING_DISABLED_REASON_UNSUPPORTED_FLAVOR: Storage auto scaling is not supported for the selected datastore flavor.\n - STORAGE_AUTO_SCALING_DISABLED_REASON_STORAGE_LIMIT_REACHED: Auto scaling is disabled because the storage size has reached its maximum limit."
    },
    "TechJournalLogPlan": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of tech journal log plan.",
          "readOnly": true
        },
        "clusterId": {
          "type": "string",
          "description": "Cluster identifier.",
          "readOnly": true
        },
        "startsAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when tech journal log collection starts.",
          "readOnly": true
        },
        "endsAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when tech journal log collection ends.",
          "readOnly": true
        },
        "status": {
          "$ref": "#/definitions/TechJournalLogPlanStatus",
          "description": "Status of tech journal log plan.",
          "readOnly": true
        },
        "reasonCode": {
          "type": "string",
          "description": "Specific reason code.",
          "readOnly": true
        },
        "configName": {
          "type": "string",
          "description": "Name of the configuration used to collect the tech journal log.",
          "readOnly": true
        },
        "configData": {
          "type": "string",
          "description": "Configuration data used to collect the tech journal log.",
          "readOnly": true
        },
        "planType": {
          "type": "string",
          "description": "Plan type that defines whether the plan executes immediately after creation\nor is scheduled to activate the collection of the technological log.\nValid values: \"customer-request\" (executes immediately, with no end time)\nor \"on-schedule\" (with specified start and end times).",
          "readOnly": true
        }
      },
      "description": "Plan of the tech journal log collection, including its identifier,\nthe configuration used for log collection, and the start and end times\nof the collection period."
    },
    "TechJournalLogPlanStatus": {
      "type": "string",
      "enum": [
        "TECH_JOURNAL_LOG_PLAN_STATUS_UNSPECIFIED",
        "TECH_JOURNAL_LOG_PLAN_STATUS_SCHEDULED",
        "TECH_JOURNAL_LOG_PLAN_STATUS_RUNNING",
        "TECH_JOURNAL_LOG_PLAN_STATUS_CANCELLED",
        "TECH_JOURNAL_LOG_PLAN_STATUS_STOPPED",
        "TECH_JOURNAL_LOG_PLAN_STATUS_FINISHED",
        "TECH_JOURNAL_LOG_PLAN_STATUS_ERRORED"
      ],
      "default": "TECH_JOURNAL_LOG_PLAN_STATUS_UNSPECIFIED",
      "description": " - TECH_JOURNAL_LOG_PLAN_STATUS_SCHEDULED: Tech journal log plan has been scheduled.\n - TECH_JOURNAL_LOG_PLAN_STATUS_RUNNING: Tech journal log plan is running.\n - TECH_JOURNAL_LOG_PLAN_STATUS_CANCELLED: Start of the tech journal log plan has been cancelled for some reason.\n - TECH_JOURNAL_LOG_PLAN_STATUS_STOPPED: Tech journal log plan was stopped manually or by the system for some reason.\n - TECH_JOURNAL_LOG_PLAN_STATUS_FINISHED: Tech journal log plan was finished successfully.\n - TECH_JOURNAL_LOG_PLAN_STATUS_ERRORED: Tech journal log plan failed to start or stop due to an internal error."
    },
    "TechJournalLogsConfig": {
      "type": "object",
      "properties": {
        "rawXml": {
          "type": "string",
          "description": "Raw tech journal log configuration in XML format."
        },
        "name": {
          "type": "string",
          "description": "Name of tech journal log collection configuration."
        }
      },
      "description": "Represents a tech journal logs configuration, which contains its name and the raw configuration in XML format.\nRaw configuration data will be converted into a file created within the 1C cluster.\nThe cluster uses this file to determine log collection rules.",
      "required": [
        "rawXml",
        "name"
      ]
    },
    "TerminateClusterSessionBody": {
      "type": "object",
      "properties": {
        "sessionId": {
          "type": "string",
          "description": "The identifier of the session to terminate."
        },
        "filter": {
          "$ref": "#/definitions/ClusterSessionFilter",
          "description": "The filter to match and terminate all sessions that match the criteria.\nAn empty filter matches all sessions in the cluster."
        },
        "reason": {
          "type": "string",
          "description": "An optional reason for terminating the session(s)."
        }
      }
    },
    "TerminateClusterSessionResponse": {
      "type": "object"
    },
    "TimeOfDay": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer",
          "format": "int32",
          "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time."
        },
        "minutes": {
          "type": "integer",
          "format": "int32",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "seconds": {
          "type": "integer",
          "format": "int32",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may\nallow the value 60 if it allows leap-seconds."
        },
        "nanos": {
          "type": "integer",
          "format": "int32",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        }
      },
      "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are [google.type.Date][google.type.Date] and\n`google.protobuf.Timestamp`."
    },
    "TimeRange": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string",
          "format": "date-time",
          "description": "The start timestamp of the time range."
        },
        "end": {
          "type": "string",
          "format": "date-time",
          "description": "The end timestamp of the time range."
        }
      }
    },
    "TimeSeries": {
      "type": "object",
      "properties": {
        "timestamps": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "date-time"
          },
          "description": "A sequence of timestamps representing the times at which measurements were\ntaken."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          },
          "description": "A sequence of values corresponding to the timestamps, representing measured\ndata points."
        }
      },
      "description": "Represents a time series dataset, where each value corresponds to\na timestamp."
    },
    "TransferClusterDomainBody": {
      "type": "object",
      "properties": {
        "targetClusterId": {
          "type": "string",
          "description": "Identifier of the target cluster to transfer the domain to."
        }
      },
      "required": [
        "targetClusterId"
      ]
    },
    "TransferClusterDomainResponse": {
      "type": "object",
      "properties": {
        "domain": {
          "$ref": "#/definitions/ClusterDomain",
          "description": "The updated cluster domain with applied changes.",
          "readOnly": true
        },
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The updated state of the cluster after the request.",
          "readOnly": true
        }
      }
    },
    "TransferInfobaseBody": {
      "type": "object",
      "properties": {
        "targetClusterId": {
          "type": "string",
          "description": "Identifier of the target cluster to transfer the infobase to."
        }
      },
      "required": [
        "targetClusterId"
      ]
    },
    "TransferInfobaseResponse": {
      "type": "object",
      "properties": {
        "infobase": {
          "$ref": "#/definitions/Infobase",
          "description": "The updated state of the infobase after the transfer request.",
          "readOnly": true
        }
      }
    },
    "UnmountClusterVolumeResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The updated state of the cluster after the request.",
          "readOnly": true
        }
      }
    },
    "UpdateBackupPlanRequest": {
      "type": "object",
      "properties": {
        "backupPlan": {
          "$ref": "#/definitions/BackupPlan",
          "description": "The updated backup plan specification."
        }
      },
      "required": [
        "backupPlan"
      ]
    },
    "UpdateBackupPlanResponse": {
      "type": "object",
      "properties": {
        "backupPlan": {
          "$ref": "#/definitions/BackupPlan",
          "description": "The backup plan after being updated.\nThis is the modified version of the original backup plan.",
          "readOnly": true
        }
      }
    },
    "UpdateInfobaseWebPubConfigBody": {
      "type": "object",
      "properties": {
        "vrdContents": {
          "type": "string",
          "title": "VRD file contents to be used with infobase web-publication.\nPass an empty string to apply the default VRD file for infobase web-publication.\nDocs: https://its.1c.ru/db/v8325doc#bookmark:adm:ti000000379"
        }
      }
    },
    "UpdateInfobaseWebPubConfigResponse": {
      "type": "object",
      "properties": {
        "infobase": {
          "$ref": "#/definitions/Infobase",
          "description": "The updated state of the infobase after the configuration change request.",
          "readOnly": true
        }
      }
    },
    "UpgradeClusterBody": {
      "type": "object",
      "properties": {
        "platform": {
          "$ref": "#/definitions/ClusterPlatform",
          "description": "A desired platform for the cluster."
        }
      },
      "required": [
        "platform"
      ]
    },
    "UpgradeClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/Cluster",
          "description": "The state of the cluster after the platform update request.",
          "readOnly": true
        }
      }
    },
    "VerifyBackupVaultSpecRequest": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/BackupVaultSpec",
          "description": "The specification of the vault to be tested."
        }
      },
      "required": [
        "spec"
      ]
    },
    "VerifyBackupVaultSpecResponse": {
      "type": "object"
    },
    "VerifyClusterVolumeSpecRequest": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/ClusterVolumeSpec",
          "description": "The specification of the volume to test."
        }
      },
      "required": [
        "spec"
      ]
    },
    "VerifyClusterVolumeSpecResponse": {
      "type": "object"
    },
    "X509Keypair": {
      "type": "object",
      "properties": {
        "certificate": {
          "type": "string",
          "format": "byte",
          "description": "The PEM-encoded TLS certificate of the key pair."
        },
        "key": {
          "type": "string",
          "format": "byte",
          "description": "The PEM-encoded private key corresponding to the TLS certificate."
        }
      },
      "description": "The X.509 TLS key pair used to enable secure communications.",
      "required": [
        "certificate"
      ]
    }
  },
  "host": "api.ru-3.1c.selcloud.ru",
  "basePath": "/v2",
  "schemes": [
    "https"
  ],
  "securityDefinitions": {
    "iam_token_project_scoped": {
      "type": "apiKey",
      "name": "X-Auth-Token",
      "in": "header"
    }
  },
  "security": [
    {
      "iam_token_project_scoped": []
    }
  ]
}
