Skip to content

OpenAPI drift: 141 gaps between live spec and library #1027

Description

@github-actions

The live ClickHouse Cloud OpenAPI spec has drifted from the Rust API library.
The comparison was produced by the shared syn-based analyzer.

  • Live spec: https://api.clickhouse.cloud/v1
  • Client: crates/clickhouse-cloud-api/src/client.rs
  • Models: crates/clickhouse-cloud-api/src/models.rs
  • Analyzer: crates/clickhouse-openapi-analyzer

Summary

Change Count
Missing client methods 12
Extra client methods 0
Missing operation parameters 0
Operation parameter mismatches 0
Unsupported success response schemas 0
Missing model types 23
Missing schema definitions 0
Missing struct fields 20
Extra struct fields 0
Missing enum values 13
Extra enum values 0
Enum VALUES const mismatches 0
Additional properties mismatches 0
Field optionality mismatches 3
Beta status changes 29
Deprecated-field changes 1
Stale snapshot changes 40
Stale exemptions 0
New unsupported enum constraints 0
Changed acknowledged enum constraints 0
Acknowledged unsupported enum constraints 3

Missing Client Methods

saved_query_delete

DELETE /v1/organizations/{organizationId}/services/{serviceId}/saved-queries/{queryId}

Delete a saved query

Operation spec JSON
{
  "operationId": "savedQueryDelete",
  "summary": "Delete a saved query",
  "description": "**Disclaimer:** This beta endpoint is evolving; the API contract may change. <br /><br /> Deletes a saved query.",
  "tags": [
    "Saved queries"
  ],
  "security": [
    {
      "basicAuth": [
        "control-plane:service:manage"
      ]
    }
  ],
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "schema": {
        "description": "ID of the requested organization.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
      },
      "required": true,
      "description": "ID of the requested organization."
    },
    {
      "in": "path",
      "name": "serviceId",
      "schema": {
        "description": "ID of the requested service.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
      },
      "required": true,
      "description": "ID of the requested service."
    },
    {
      "in": "path",
      "name": "queryId",
      "schema": {
        "description": "ID of the requested saved query.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
      },
      "required": true,
      "description": "ID of the requested saved query."
    }
  ],
  "responses": {
    "200": {
      "description": "The saved query was deleted.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "description": "HTTP status code.",
                "example": 200,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Error message.",
                "type": "string"
              },
              "issues": {
                "description": "Validation issues that caused the request to be rejected.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "path": {
                      "description": "Path to the invalid field.",
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      }
                    },
                    "code": {
                      "description": "Validation issue code.",
                      "type": "string"
                    },
                    "message": {
                      "description": "Human-readable description of the issue.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "path",
                    "code",
                    "message"
                  ],
                  "additionalProperties": false
                }
              },
              "status": {
                "description": "HTTP status code.",
                "example": 400,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "403": {
      "description": "The request is forbidden.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Human-readable error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 403,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "404": {
      "description": "Saved query not found.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Human-readable error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 404,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "409": {
      "description": "Saved query can not be managed via this API.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Human-readable error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 409,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 500,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": {}
          }
        }
      }
    }
  },
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

organization_byoc_infrastructure_get

GET /v1/organizations/{organizationId}/byocInfrastructure/{byocInfrastructureId}

Get BYOC infrastructure details

Operation spec JSON
{
  "summary": "Get BYOC infrastructure details",
  "description": "**This endpoint is in beta.** API contract is stable, and no breaking changes are expected in the future. <br /><br /> Returns the full configuration of a BYOC infrastructure, including private link and load balancer state, network layout, and BYO-VPC settings read from the data plane.",
  "operationId": "organizationByocInfrastructureGet",
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "description": "ID of the requested organization.",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    },
    {
      "in": "path",
      "name": "byocInfrastructureId",
      "description": "ID of the requested BYOC Infrastructure",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful response",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 200
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              },
              "result": {
                "$ref": "#/components/schemas/ByocInfrastructureDetails"
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 400
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "integer",
                "description": "HTTP status code.",
                "example": 500
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "basicAuth": [
        "control-plane:organization:view"
      ]
    }
  ],
  "tags": [
    "Organization"
  ],
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

organization_byoc_infrastructure_private_endpoint_config_get

GET /v1/organizations/{organizationId}/byocInfrastructure/{byocInfrastructureId}/privateEndpointConfig

Get BYOC infrastructure private endpoint configuration

Operation spec JSON
{
  "summary": "Get BYOC infrastructure private endpoint configuration",
  "description": "**This endpoint is in beta.** API contract is stable, and no breaking changes are expected in the future. <br /><br /> Returns the private link endpoint service details of a BYOC infrastructure. For BYOC organizations this replaces the deprecated organization-level `privateEndpointConfig` endpoint.",
  "operationId": "organizationByocInfrastructurePrivateEndpointConfigGet",
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "description": "ID of the requested organization.",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    },
    {
      "in": "path",
      "name": "byocInfrastructureId",
      "description": "ID of the requested BYOC Infrastructure",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful response",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 200
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              },
              "result": {
                "$ref": "#/components/schemas/ByocInfrastructurePrivateEndpointConfig"
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 400
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "integer",
                "description": "HTTP status code.",
                "example": 500
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "basicAuth": [
        "control-plane:organization:view"
      ]
    }
  ],
  "tags": [
    "Organization"
  ],
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

organization_byoc_infrastructure_progress_get

GET /v1/organizations/{organizationId}/byocInfrastructure/{byocInfrastructureId}/progress

Get BYOC infrastructure provisioning progress

Operation spec JSON
{
  "summary": "Get BYOC infrastructure provisioning progress",
  "description": "**Disclaimer:** This beta endpoint is evolving; the API contract may change. <br /><br /> Returns the stage-by-stage provisioning progress of a BYOC infrastructure, more granular than the `state` field: overall status plus a tree of provisioning stages down to individual cloud resources.",
  "operationId": "organizationByocInfrastructureProgressGet",
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "description": "ID of the requested organization.",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    },
    {
      "in": "path",
      "name": "byocInfrastructureId",
      "description": "ID of the requested BYOC Infrastructure",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful response",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 200
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              },
              "result": {
                "$ref": "#/components/schemas/ByocInfrastructureProgress"
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 400
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "integer",
                "description": "HTTP status code.",
                "example": 500
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "basicAuth": [
        "control-plane:organization:view"
      ]
    }
  ],
  "tags": [
    "Organization"
  ],
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

organization_byoc_infrastructure_tags_get

GET /v1/organizations/{organizationId}/byocInfrastructure/{byocInfrastructureId}/tags

Get BYOC infrastructure tags

Operation spec JSON
{
  "summary": "Get BYOC infrastructure tags",
  "description": "**This endpoint is in beta.** API contract is stable, and no breaking changes are expected in the future. <br /><br /> Returns the additional tags currently applied to the cloud resources of the BYOC infrastructure. Tags are replaced as a whole through the infrastructure update endpoint.",
  "operationId": "organizationByocInfrastructureTagsGet",
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "description": "ID of the requested organization.",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    },
    {
      "in": "path",
      "name": "byocInfrastructureId",
      "description": "ID of the requested BYOC Infrastructure",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful response",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 200
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              },
              "result": {
                "$ref": "#/components/schemas/ByocInfrastructureTagsResponse"
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 400
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "integer",
                "description": "HTTP status code.",
                "example": 500
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "basicAuth": [
        "control-plane:organization:view"
      ]
    }
  ],
  "tags": [
    "Organization"
  ],
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

postgres_service_backup_get_list

GET /v1/organizations/{organizationId}/postgres/{postgresId}/backups

List of Postgres service backups

Operation spec JSON
{
  "summary": "List of Postgres service backups",
  "description": "**This endpoint is in beta.** API contract is stable, and no breaking changes are expected in the future. <br /><br /> Returns a list of the base backups retained for a Postgres service, ordered by last modified date, newest first. Results are capped at `limit` (default and maximum 100) per page. Every response carries `limit`, `totalCount` and `nextCursor`; pass `nextCursor` as the `cursor` query parameter to fetch the next page, repeating until it is null. A Postgres service is recovered to a point in time rather than to a single backup, so restore it with the restore endpoint and a timestamp rather than with a backup key from this list.",
  "operationId": "postgresServiceBackupGetList",
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "description": "ID of the organization that owns the Postgres service.",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    },
    {
      "in": "path",
      "name": "postgresId",
      "description": "ID of the Postgres service the backups were created from.",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    },
    {
      "in": "query",
      "name": "limit",
      "description": "Maximum number of results to return.",
      "schema": {
        "type": "integer",
        "minimum": 1,
        "maximum": 100,
        "default": 100
      }
    },
    {
      "in": "query",
      "name": "cursor",
      "description": "Opaque cursor from a previous response's `nextCursor`, marking where to resume the list.",
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful response",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 200
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              },
              "result": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostgresBackup"
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of results returned in this page."
              },
              "totalCount": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Total number of results across all pages. It has only informative value, thus is not guaranteed and it is provided on a best-effort basis. Null if the total count is unknown."
              },
              "nextCursor": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Cursor for the next page, to be sent as the `cursor` query parameter. Null on the last page."
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 400
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "integer",
                "description": "HTTP status code.",
                "example": 500
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "basicAuth": [
        "control-plane:postgres-service:view"
      ]
    }
  ],
  "tags": [
    "Postgres"
  ],
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

saved_query_list

GET /v1/organizations/{organizationId}/services/{serviceId}/saved-queries

List saved queries

Operation spec JSON
{
  "operationId": "savedQueryList",
  "summary": "List saved queries",
  "description": "**Disclaimer:** This beta endpoint is evolving; the API contract may change. <br /><br /> Returns saved queries for the service.",
  "tags": [
    "Saved queries"
  ],
  "security": [
    {
      "basicAuth": [
        "control-plane:service:view"
      ]
    }
  ],
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "schema": {
        "description": "ID of the requested organization.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
      },
      "required": true,
      "description": "ID of the requested organization."
    },
    {
      "in": "path",
      "name": "serviceId",
      "schema": {
        "description": "ID of the requested service.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
      },
      "required": true,
      "description": "ID of the requested service."
    },
    {
      "in": "query",
      "name": "cursor",
      "schema": {
        "description": "Cursor returned as `nextCursor` on the previous page.",
        "type": "string"
      },
      "description": "Cursor returned as `nextCursor` on the previous page."
    },
    {
      "in": "query",
      "name": "limit",
      "schema": {
        "description": "Maximum number of records to return per page. Defaults to 100. Maximum is 100.",
        "default": 100,
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 100
      },
      "description": "Maximum number of records to return per page. Defaults to 100. Maximum is 100."
    }
  ],
  "responses": {
    "200": {
      "description": "Successful response.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "result": {
                "description": "Saved queries for the service.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PublicSavedQueryListItem"
                }
              },
              "limit": {
                "description": "Maximum number of results returned in this page.",
                "type": "integer"
              },
              "totalCount": {
                "description": "Total number of results across all pages. It has only informative value, thus is not guaranteed and it is provided on a best-effort basis. Null if the total count is unknown.",
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "nextCursor": {
                "description": "Cursor for the next page, to be sent as the `cursor` query parameter. Null on the last page.",
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "description": "HTTP status code.",
                "example": 200,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "result",
              "limit",
              "totalCount",
              "nextCursor",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Error message.",
                "type": "string"
              },
              "issues": {
                "description": "Validation issues that caused the request to be rejected.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "path": {
                      "description": "Path to the invalid field.",
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      }
                    },
                    "code": {
                      "description": "Validation issue code.",
                      "type": "string"
                    },
                    "message": {
                      "description": "Human-readable description of the issue.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "path",
                    "code",
                    "message"
                  ],
                  "additionalProperties": false
                }
              },
              "status": {
                "description": "HTTP status code.",
                "example": 400,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "403": {
      "description": "The request is forbidden.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Human-readable error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 403,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "404": {
      "description": "Service not found.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Human-readable error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 404,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 500,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": {}
          }
        }
      }
    }
  },
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

saved_query_get

GET /v1/organizations/{organizationId}/services/{serviceId}/saved-queries/{queryId}

Get a saved query

Operation spec JSON
{
  "operationId": "savedQueryGet",
  "summary": "Get a saved query",
  "description": "**Disclaimer:** This beta endpoint is evolving; the API contract may change. <br /><br /> Returns a saved query.",
  "tags": [
    "Saved queries"
  ],
  "security": [
    {
      "basicAuth": [
        "control-plane:service:view"
      ]
    }
  ],
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "schema": {
        "description": "ID of the requested organization.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
      },
      "required": true,
      "description": "ID of the requested organization."
    },
    {
      "in": "path",
      "name": "serviceId",
      "schema": {
        "description": "ID of the requested service.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
      },
      "required": true,
      "description": "ID of the requested service."
    },
    {
      "in": "path",
      "name": "queryId",
      "schema": {
        "description": "ID of the requested saved query.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
      },
      "required": true,
      "description": "ID of the requested saved query."
    }
  ],
  "responses": {
    "200": {
      "description": "Successful response.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "description": "HTTP status code.",
                "example": 200,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              },
              "result": {
                "$ref": "#/components/schemas/PublicSavedQuery"
              }
            },
            "required": [
              "status",
              "requestId",
              "result"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Error message.",
                "type": "string"
              },
              "issues": {
                "description": "Validation issues that caused the request to be rejected.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "path": {
                      "description": "Path to the invalid field.",
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      }
                    },
                    "code": {
                      "description": "Validation issue code.",
                      "type": "string"
                    },
                    "message": {
                      "description": "Human-readable description of the issue.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "path",
                    "code",
                    "message"
                  ],
                  "additionalProperties": false
                }
              },
              "status": {
                "description": "HTTP status code.",
                "example": 400,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "403": {
      "description": "The request is forbidden.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Human-readable error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 403,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "404": {
      "description": "Saved query not found.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Human-readable error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 404,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": false
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "description": "Error message.",
                "type": "string"
              },
              "status": {
                "description": "HTTP status code.",
                "example": 500,
                "type": "integer"
              },
              "requestId": {
                "description": "Unique id assigned to every request. UUIDv4",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
              }
            },
            "required": [
              "error",
              "status",
              "requestId"
            ],
            "additionalProperties": {}
          }
        }
      }
    }
  },
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

whoami_get

GET /v1/whoami

Resolve the caller identity

Operation spec JSON
{
  "summary": "Resolve the caller identity",
  "description": "**Disclaimer:** This beta endpoint is evolving; the API contract may change. <br /><br /> Returns the identity of the authenticated caller. For a user (JWT or clickhousectl token) the result carries the user fields; for an organization API key it carries the key fields instead. Use `actorType` to tell the two apart.",
  "operationId": "whoamiGet",
  "parameters": [],
  "responses": {
    "200": {
      "description": "Successful response",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 200
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              },
              "result": {
                "$ref": "#/components/schemas/Whoami"
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 400
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "integer",
                "description": "HTTP status code.",
                "example": 500
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    }
  },
  "tags": [
    "User management"
  ],
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

organization_byoc_infrastructure_validate

POST /v1/organizations/{organizationId}/byocInfrastructure/validate

Validate BYOC infrastructure prerequisites

Operation spec JSON
{
  "summary": "Validate BYOC infrastructure prerequisites",
  "description": "**Disclaimer:** This beta endpoint is evolving; the API contract may change. <br /><br /> Preflight-validates that a cloud account is ready for BYOC infrastructure creation: simulates the cloud permissions ClickHouse needs (and, for BYO-VPC, checks the provided network resources) without creating anything. Takes the same parameters as infrastructure creation, so a payload that passes validation will not be rejected by create for the same inputs.",
  "operationId": "organizationByocInfrastructureValidate",
  "parameters": [
    {
      "in": "path",
      "name": "organizationId",
      "description": "ID of the requested organization.",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ByocInfrastructureValidatePostRequest"
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "Successful response",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 200
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              },
              "result": {
                "$ref": "#/components/schemas/ByocInfrastructureValidation"
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "The request cannot be processed due to a client error. Please verify your request parameters and try again.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "number",
                "description": "HTTP status code.",
                "example": 400
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    },
    "500": {
      "description": "An internal server error has occurred. If this issue persists, please contact ClickHouse Cloud support for assistance.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "status": {
                "type": "integer",
                "description": "HTTP status code.",
                "example": 500
              },
              "error": {
                "type": "string",
                "description": "Detailed error description."
              },
              "requestId": {
                "type": "string",
                "description": "Unique id assigned to every request. UUIDv4",
                "format": "uuid"
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "basicAuth": [
        "control-plane:organization:manage"
      ]
    }
  ],
  "tags": [
    "Organization"
  ],
  "x-badges": [
    {
      "name": "Beta",
      "position": "after"
    }
  ]
}

saved_query_create

POST /v1/organizations/{organizationId}/services/{serviceId}/saved-queries

Create a saved query


Report continues in the next comment.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    openapi-driftAutomated: live OpenAPI spec differs from the Rust library

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions