blob: 9bfc7cbdfb1d95013e19dc8bc32ca510d429651d [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
---
openapi: 3.1.1
info:
title: REST Catalog API
description: This API exposes endpoints to RESTCatalog.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
version: "1.0"
servers:
- url: http://localhost:8080
description: Server URL in Development environment
paths:
/v1/config:
get:
tags:
- config
summary: Get Config
operationId: getConfig
parameters:
- name: warehouse
in: query
required: false
schema:
type: string
description: Warehouse location or identifier to request from the service
responses:
"200":
description: Config defined in the server
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigResponse'
example: {
"overrides": {
"key": "value"
},
"defaults": {
"prefix": "prefix"
}
}
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases:
get:
tags:
- database
summary: List Databases
operationId: listDatabases
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
responses:
"200":
description: List of database name
content:
application/json:
schema:
$ref: '#/components/schemas/ListDatabasesResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- database
summary: Create Database
operationId: createDatabase
parameters:
- name: prefix
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDatabaseRequest'
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"409":
$ref: '#/components/responses/DatabaseAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}:
get:
tags:
- database
summary: Get Database
operationId: getDatabases
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
responses:
"200":
description: Get a database by database name.
content:
application/json:
schema:
$ref: '#/components/schemas/GetDatabaseResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
delete:
tags:
- database
summary: Drop Database
operationId: dropDatabase
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- database
summary: Alter Database
operationId: alterDatabase
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AlterDatabaseRequest'
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AlterDatabaseResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/register:
post:
tags:
- table
summary: Register table
operationId: RegisterTable
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterTableRequest'
responses:
"200":
description: Success, no content
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"409":
$ref: '#/components/responses/TableAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables:
get:
tags:
- table
summary: List tables
operationId: listTables
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
- name: tableNamePattern
description: A sql LIKE pattern (%) for table names. Currently, only prefix matching is supported.
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListTablesResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- table
summary: Create table
operationId: createTable
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTableRequest'
responses:
"200":
description: Success, no content
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"409":
$ref: '#/components/responses/TableAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/table-details:
get:
tags:
- table
summary: List table details
operationId: listTableDetails
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
- name: tableNamePattern
description: A sql LIKE pattern (%) for table names. Currently, only prefix matching is supported.
in: query
schema:
type: string
- name: tableType
description: Filter tables by table type. All table types will be returned if not set or empty.
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListTableDetailsResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/tables:
get:
tags:
- table
summary: List tables globally
operationId: ListTablesGlobally
description: list tables paged globally which matches the given database name pattern and table name pattern both.
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: databaseNamePattern
description: A sql LIKE pattern (%) for database names. All databases will be returned if not set or empty. Currently, only prefix matching is supported.
in: path
schema:
type: string
- name: tableNamePattern
description: A sql LIKE pattern (%) for table names. All tables will be returned if not set or empty. Currently, only prefix matching is supported.
in: query
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListTablesGloballyResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}:
get:
tags:
- table
summary: Get table
operationId: getTable
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetTableResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- table
summary: Alter table
operationId: alterTable
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AlterTableRequest'
responses:
"200":
description: Success, no content
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"409":
$ref: '#/components/responses/TableAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
delete:
tags:
- table
summary: Drop table
operationId: dropTable
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/tables/rename:
post:
tags:
- table
summary: Rename table
operationId: renameTable
parameters:
- name: prefix
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RenameTableRequest'
responses:
"200":
description: Success, no content
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"409":
$ref: '#/components/responses/TableAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/commit:
post:
tags:
- table
summary: Commit table
operationId: commitTable
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CommitTableRequest'
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CommitTableResponse'
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/rollback:
post:
tags:
- table
summary: Rollback table
operationId: rollbackTable
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RollbackTableRequest'
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
404:
description:
Not Found
- TableNotExistException, table does not exist
- SnapshotNotExistException, the rollback snapshot does not exist
- TagNotExistException, the rollback tag does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
examples:
TableNotExist:
$ref: '#/components/examples/TableNotExistError'
SnapshotNotExist:
$ref: '#/components/examples/SnapshotNotExistError'
TagNotExist:
$ref: '#/components/examples/TagNotExistError'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/token:
get:
tags:
- table
summary: Get table token
operationId: getTableToken
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
responses:
"200":
description: DataToken for visit data.
content:
application/json:
schema:
$ref: '#/components/schemas/GetTableDataTokenResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/auth:
post:
tags:
- table
summary: Auth table query
operationId: authTableQuery
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AuthTableQueryRequest'
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AuthTableQueryResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"403":
$ref: '#/components/responses/ForbiddenErrorResponse'
404:
description:
Not Found
- TableNotExistException, table does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
examples:
TableNotExist:
$ref: '#/components/examples/TableNotExistError'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/snapshot:
get:
tags:
- table
summary: Get table snapshot
operationId: getTableSnapshot
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetTableSnapshotResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
404:
description:
Not Found
- TableNotExistException, table does not exist
- SnapshotNotExistException, the requested snapshot does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
examples:
TableNotExist:
$ref: '#/components/examples/TableNotExistError'
SnapshotNotExist:
$ref: '#/components/examples/SnapshotNotExistError'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/snapshots/{version}:
get:
tags:
- table
summary: Get version snapshot
operationId: getVersionSnapshot
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
- name: version
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetVersionSnapshotResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
404:
description:
Not Found
- TableNotExistException, table does not exist
- SnapshotNotExistException, the requested snapshot does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
examples:
TableNotExist:
$ref: '#/components/examples/TableNotExistError'
SnapshotNotExist:
$ref: '#/components/examples/SnapshotNotExistError'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/snapshots:
get:
tags:
- table
summary: List snapshots
operationId: listSnapshots
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListSnapshotsResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/partitions:
get:
tags:
- partition
summary: List partitions
operationId: listPartitions
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
- name: partitionNamePattern
description: A sql LIKE pattern (%) for partition names. Currently, only prefix matching is supported.
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListPartitionsResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/partitions/mark:
post:
tags:
- partition
summary: MarkDone partitions
operationId: markDonePartitions
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MarkDonePartitionsRequest'
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/branches:
get:
tags:
- branch
summary: List branches
operationId: listBranches
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListBranchesResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/TableNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- branch
summary: Create branch
operationId: createBranch
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBranchRequest'
responses:
"200":
description: Success, no content
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
description:
Not Found
- TableNotExistException, table does not exist
- TagNotExistException, the requested tag does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
examples:
TableNotExist:
$ref: '#/components/examples/TableNotExistError'
TagNotExist:
$ref: '#/components/examples/TagNotExistError'
"409":
$ref: '#/components/responses/BranchAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/branches/{branch}:
delete:
tags:
- branch
summary: Drop branch
operationId: dropBranch
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
- name: branch
in: path
required: true
schema:
type: string
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/BranchNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/tables/{table}/branches/{branch}/forward:
post:
tags:
- branch
summary: forward branch
operationId: forwardBranch
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: table
in: path
required: true
schema:
type: string
- name: branch
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ForwardBranchRequest'
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/BranchNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/views:
get:
tags:
- view
summary: List views
operationId: listViews
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
- name: viewNamePattern
description: A sql LIKE pattern (%) for view names. Currently, only prefix matching is supported.
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListViewsResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- view
summary: Create view
operationId: createView
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateViewRequest'
responses:
"200":
description: Success, no content
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"409":
$ref: '#/components/responses/ViewAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/view-details:
get:
tags:
- view
summary: List view details
operationId: listViewDetails
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
- name: viewNamePattern
description: A sql LIKE pattern (%) for view names. Currently, only prefix matching is supported.
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListViewDetailsResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/views:
get:
tags:
- view
summary: List views globally
operationId: listViewsGlobally
description: List views globally which matches the given database name pattern and view name pattern both.
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: databaseNamePattern
description: A sql LIKE pattern (%) for database names. All databases will be returned if not set or empty. Currently, only prefix matching is supported.
in: path
schema:
type: string
- name: viewNamePattern
description: A sql LIKE pattern (%) for view names. All views will be returned if not set or empty. Currently, only prefix matching is supported.
in: query
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListViewsGloballyResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/views/{view}:
get:
tags:
- view
summary: Get view
operationId: getView
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: view
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetViewResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/ViewNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- view
summary: Alter view
operationId: alterView
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: view
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AlterViewRequest'
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/ViewNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
delete:
tags:
- view
summary: Drop view
operationId: dropView
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: view
in: path
required: true
schema:
type: string
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/ViewNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/views/rename:
post:
tags:
- view
summary: Rename view
operationId: renameView
parameters:
- name: prefix
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RenameTableRequest'
responses:
"200":
description: Success, no content
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/ViewNotExistErrorResponse'
"409":
$ref: '#/components/responses/ViewAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/functions:
get:
tags:
- function
summary: List functions
operationId: listFunctions
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
- name: functionNamePattern
description: A sql LIKE pattern (%) for function names. Currently, only prefix matching is supported.
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListFunctionsResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- function
summary: Create function
operationId: createFunction
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFunctionRequest'
responses:
"200":
description: Success, no content
"400":
$ref: '#/components/responses/BadRequestErrorResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"409":
$ref: '#/components/responses/FunctionAlreadyExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/function-details:
get:
tags:
- function
summary: List function details
operationId: listFunctionDetails
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
- name: functionNamePattern
description: A sql LIKE pattern (%) for function names. Currently, only prefix matching is supported.
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListFunctionDetailsResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/DatabaseNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/functions:
get:
tags:
- function
summary: List functions globally
operationId: listFunctionsGlobally
description: List functions globally which matches the given database name pattern and function name pattern both.
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: databaseNamePattern
description: A sql LIKE pattern (%) for database names. All databases will be returned if not set or empty. Currently, only prefix matching is supported.
in: path
schema:
type: string
- name: functionNamePattern
description: A sql LIKE pattern (%) for function names. All functions will be returned if not set or empty. Currently, only prefix matching is supported.
in: query
schema:
type: string
- name: maxResults
in: query
schema:
type: integer
format: int32
- name: pageToken
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListFunctionsGloballyResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
/v1/{prefix}/databases/{database}/functions/{function}:
get:
tags:
- function
summary: Get function
operationId: getFunction
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: function
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetFunctionResponse'
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/FunctionNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
post:
tags:
- function
summary: Alter function
operationId: alterFunction
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: function
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AlterFunctionRequest'
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/FunctionNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
delete:
tags:
- function
summary: Drop function
operationId: dropFunction
parameters:
- name: prefix
in: path
required: true
schema:
type: string
- name: database
in: path
required: true
schema:
type: string
- name: function
in: path
required: true
schema:
type: string
responses:
"200":
description: Success, no content
"401":
$ref: '#/components/responses/UnauthorizedErrorResponse'
"404":
$ref: '#/components/responses/FunctionNotExistErrorResponse'
"500":
$ref: '#/components/responses/ServerErrorResponse'
components:
#############################
# Reusable Response Objects #
#############################
responses:
BadRequestErrorResponse:
description:
Used for 400 errors, means illegal request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example: {
"message": "Malformed request",
"code": 400
}
UnauthorizedErrorResponse:
description:
Used for 401 errors.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example: {
"message": "No auth for this resource",
"code": 401
}
ForbiddenErrorResponse:
description:
Used for 403 errors.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example: {
"message": "Table has no permission",
"code": 403
}
ResourceNotExistErrorResponse:
description:
Used for 404 errors, which means the resource does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example: {
"message": "Resource is not exist",
"resourceType": "TABLE",
"resourceName": "user",
"code": 404
}
DatabaseNotExistErrorResponse:
description:
Not Found - DatabaseNotExistException, the database does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
example:
{
"message": "The given database does not exist",
"resourceType": "DATABASE",
"resourceName": "db",
"code": 404
}
TableNotExistErrorResponse:
description:
Not Found - TableNotExistException, the table does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
example:
{
"message": "The given table does not exist",
"resourceType": "TABLE",
"resourceName": "table",
"code": 404
}
SnapshotNotExistErrorResponse:
description:
Not Found - SnapshotNotExistException, the snapshot does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
example:
{
"message": "The given snapshot does not exist",
"resourceType": "SNAPSHOT",
"resourceName": "1",
"code": 404
}
BranchNotExistErrorResponse:
description:
Not Found - BranchNotExistException, the branch does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
example:
{
"message": "The given branch does not exist",
"resourceType": "BRANCH",
"resourceName": "branch",
"code": 404
}
ViewNotExistErrorResponse:
description:
Not Found - ViewNotExistException, the view does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
example:
{
"message": "The given view does not exist",
"resourceType": "VIEW",
"resourceName": "view",
"code": 404
}
FunctionNotExistErrorResponse:
description:
Not Found - FunctionNotExistException, the function does not exist
content:
application/json:
schema:
$ref: '#/components/responses/ResourceNotExistErrorResponse'
example:
{
"message": "The given function does not exist",
"resourceType": "FUNCTION",
"resourceName": "function",
"code": 404
}
ResourceAlreadyExistErrorResponse:
description:
Used for 409 errors.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example: {
"message": "Resource has exist",
"resourceType": "TABLE",
"resourceName": "account",
"code": 409
}
DatabaseAlreadyExistErrorResponse:
description: Conflict - The database already exists
content:
application/json:
schema:
$ref: '#/components/responses/ResourceAlreadyExistErrorResponse'
example:
{
"message": "The given database already exists",
"resourceType": "DATABASE",
"resourceName": "db",
"code": 409
}
TableAlreadyExistErrorResponse:
description: Conflict - The table already exists
content:
application/json:
schema:
$ref: '#/components/responses/ResourceAlreadyExistErrorResponse'
example:
{
"message": "The given table already exists",
"resourceType": "TABLE",
"resourceName": "table",
"code": 409
}
BranchAlreadyExistErrorResponse:
description: Conflict - The branch already exists
content:
application/json:
schema:
$ref: '#/components/responses/ResourceAlreadyExistErrorResponse'
example:
{
"message": "The given branch already exists",
"resourceType": "BRANCH",
"resourceName": "branch",
"code": 409
}
ViewAlreadyExistErrorResponse:
description: Conflict - The view already exists
content:
application/json:
schema:
$ref: '#/components/responses/ResourceAlreadyExistErrorResponse'
example:
{
"message": "The given view already exists",
"resourceType": "VIEW",
"resourceName": "view",
"code": 409
}
FunctionAlreadyExistErrorResponse:
description: Conflict - The view already exists
content:
application/json:
schema:
$ref: '#/components/responses/ResourceAlreadyExistErrorResponse'
example:
{
"message": "The given function already exists",
"resourceType": "FUNCTION",
"resourceName": "function",
"code": 409
}
ServerErrorResponse:
description:
Used for server 5xx errors.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example: {
"message": "Internal Server Error",
"code": 500
}
schemas:
CreateDatabaseRequest:
type: object
properties:
name:
type: string
options:
type: object
additionalProperties:
type: string
DropPartitionsRequest:
type: object
properties:
specs:
type: array
items:
type: object
AlterTableRequest:
type: object
properties:
changes:
type: array
items:
$ref: '#/components/schemas/SchemaChange'
MarkDonePartitionsRequest:
type: object
properties:
specs:
type: array
items:
type: object
CreateDatabaseResponse:
type: object
properties:
name:
type: string
options:
type: object
additionalProperties:
type: string
ErrorResponse:
type: object
properties:
message:
type: string
resourceType:
type: string
nullable: true
enum: [ "DATABASE", "TABLE", "COLUMN", "SNAPSHOT", "BRANCH", "TAG", "VIEW", "DIALECT", "UNKNOWN" ]
resourceName:
type: string
nullable: true
code:
type: integer
format: int32
CreateTableRequest:
type: object
properties:
identifier:
$ref: '#/components/schemas/Identifier'
schema:
$ref: '#/components/schemas/Schema'
RegisterTableRequest:
type: object
properties:
identifier:
$ref: '#/components/schemas/Identifier'
path:
type: string
CreateViewRequest:
type: object
properties:
identifier:
$ref: '#/components/schemas/Identifier'
schema:
$ref: '#/components/schemas/ViewSchema'
AlterViewRequest:
type: object
properties:
changes:
type: array
items:
$ref: '#/components/schemas/ViewChange'
CreateFunctionRequest:
type: object
properties:
name:
type: string
inputParams:
type: array
items:
$ref: '#/components/schemas/DataField'
returnParams:
type: array
items:
$ref: '#/components/schemas/DataField'
deterministic:
type: boolean
definitions:
type: object
additionalProperties:
$ref: "#/components/schemas/FunctionDefinition"
comment:
type: string
options:
type: object
additionalProperties:
type: string
AlterFunctionRequest:
type: object
properties:
changes:
type: array
items:
$ref: '#/components/schemas/FunctionChange'
FunctionChange:
anyOf:
- $ref: '#/components/schemas/SetFunctionOption'
- $ref: '#/components/schemas/RemoveFunctionOption'
- $ref: '#/components/schemas/UpdateFunctionComment'
- $ref: '#/components/schemas/AddDefinition'
- $ref: '#/components/schemas/UpdateDefinition'
- $ref: '#/components/schemas/DropDefinition'
BaseFunctionChange:
discriminator:
propertyName: action
mapping:
setOption: '#/components/schemas/SetFunctionOption'
removeOption: '#/components/schemas/RemoveFunctionOption'
updateComment: '#/components/schemas/UpdateFunctionComment'
addDefinition: '#/components/schemas/AddDefinition'
updateDefinition: '#/components/schemas/UpdateDefinition'
dropDefinition: '#/components/schemas/DropDefinition'
type: object
required:
- action
properties:
action:
type: string
SetFunctionOption:
allOf:
- $ref: '#/components/schemas/BaseFunctionChange'
properties:
action:
type: string
const: "setOption"
key:
type: string
value:
type: string
RemoveFunctionOption:
allOf:
- $ref: '#/components/schemas/BaseFunctionChange'
properties:
action:
type: string
const: "removeOption"
key:
type: string
UpdateFunctionComment:
allOf:
- $ref: '#/components/schemas/BaseFunctionChange'
properties:
action:
type: string
const: "updateComment"
comment:
type: string
AddDefinition:
allOf:
- $ref: '#/components/schemas/BaseFunctionChange'
properties:
action:
type: string
const: "addDefinition"
name:
type: string
definition:
$ref: "#/components/schemas/FunctionDefinition"
UpdateDefinition:
allOf:
- $ref: '#/components/schemas/BaseFunctionChange'
properties:
action:
type: string
const: "updateDefinition"
name:
type: string
definition:
$ref: "#/components/schemas/FunctionDefinition"
DropDefinition:
allOf:
- $ref: '#/components/schemas/BaseFunctionChange'
properties:
action:
type: string
const: "dropDefinition"
name:
type: string
FunctionDefinition:
anyOf:
- $ref: '#/components/schemas/FileFunctionDefinition'
- $ref: '#/components/schemas/SQLFunctionDefinition'
- $ref: '#/components/schemas/LambdaFunctionDefinition'
BaseFunctionDefinition:
discriminator:
propertyName: type
mapping:
file: '#/components/schemas/FileFunctionDefinition'
sql: '#/components/schemas/SQLFunctionDefinition'
lambda: '#/components/schemas/LambdaFunctionDefinition'
type: object
required:
- type
properties:
type:
type: string
SQLFunctionDefinition:
allOf:
- $ref: '#/components/schemas/BaseFunctionDefinition'
properties:
type:
type: string
const: "sql"
definition:
type: string
FileFunctionDefinition:
allOf:
- $ref: '#/components/schemas/BaseFunctionDefinition'
properties:
type:
type: string
const: "file"
fileResources:
type: array
items:
$ref: '#/components/schemas/FunctionFileResource'
language:
type: string
className:
type: string
functionName:
type: string
LambdaFunctionDefinition:
allOf:
- $ref: '#/components/schemas/BaseFunctionDefinition'
properties:
type:
type: string
const: "lambda"
definition:
type: string
language:
type: string
FunctionFileResource:
type: object
properties:
resourceType:
type: string
uri:
type: string
ViewChange:
anyOf:
- $ref: '#/components/schemas/SetViewOption'
- $ref: '#/components/schemas/RemoveViewOption'
- $ref: '#/components/schemas/UpdateViewComment'
- $ref: '#/components/schemas/AddDialect'
- $ref: '#/components/schemas/UpdateDialect'
- $ref: '#/components/schemas/DropDialect'
BaseViewChange:
discriminator:
propertyName: action
mapping:
setOption: '#/components/schemas/SetViewOption'
removeOption: '#/components/schemas/RemoveViewOption'
updateComment: '#/components/schemas/UpdateViewComment'
addDialect: '#/components/schemas/AddDialect'
updateDialect: '#/components/schemas/UpdateDialect'
dropDialect: '#/components/schemas/DropDialect'
type: object
required:
- action
properties:
action:
type: string
SetViewOption:
allOf:
- $ref: '#/components/schemas/BaseViewChange'
properties:
action:
type: string
const: "setOption"
key:
type: string
value:
type: string
RemoveViewOption:
allOf:
- $ref: '#/components/schemas/BaseViewChange'
properties:
action:
type: string
const: "removeOption"
key:
type: string
UpdateViewComment:
allOf:
- $ref: '#/components/schemas/BaseViewChange'
properties:
action:
type: string
const: "updateComment"
key:
type: string
AddDialect:
allOf:
- $ref: '#/components/schemas/BaseViewChange'
properties:
action:
type: string
const: "addDialect"
dialect:
type: string
query:
type: string
UpdateDialect:
allOf:
- $ref: '#/components/schemas/BaseViewChange'
properties:
action:
type: string
const: "updateDialect"
dialect:
type: string
query:
type: string
DropDialect:
allOf:
- $ref: '#/components/schemas/BaseViewChange'
properties:
action:
type: string
const: "dropDialect"
dialect:
type: string
DataField:
type: object
properties:
id:
type: integer
format: int32
name:
type: string
type:
$ref: '#/components/schemas/DataType'
description:
type: string
DataType:
oneOf:
- $ref: '#/components/schemas/PrimitiveType'
- $ref: '#/components/schemas/ArrayType'
- $ref: '#/components/schemas/MultisetType'
- $ref: '#/components/schemas/MapType'
- $ref: '#/components/schemas/RowType'
PrimitiveType:
type: string
ArrayType:
type: object
properties:
type:
type: string
pattern: ^ARRAY.*
example: ARRAY
element:
$ref: '#/components/schemas/DataType'
MultisetType:
type: object
properties:
type:
type: string
pattern: ^MULTISET.*
example: MULTISET
element:
$ref: '#/components/schemas/DataType'
MapType:
type: object
properties:
type:
type: string
pattern: ^MAP.*
example: MAP
key:
$ref: '#/components/schemas/DataType'
value:
$ref: '#/components/schemas/DataType'
RowType:
type: object
properties:
type:
type: string
pattern: ^ROW.*
example: ROW
fields:
type: array
items:
$ref: '#/components/schemas/DataField'
Identifier:
type: object
properties:
database:
type: string
object:
type: string
Schema:
type: object
properties:
fields:
type: array
items:
$ref: '#/components/schemas/DataField'
partitionKeys:
type: array
items:
type: string
primaryKeys:
type: array
items:
type: string
options:
type: object
additionalProperties:
type: string
comment:
type: string
GetTableResponse:
type: object
properties:
id:
type: string
name:
type: string
path:
type: string
isExternal:
type: boolean
schemaId:
type: integer
format: int64
schema:
$ref: '#/components/schemas/Schema'
owner:
type: string
createdAt:
format: int64
createdBy:
type: string
updatedAt:
format: int64
updatedBy:
type: string
SchemaChange:
anyOf:
- $ref: '#/components/schemas/SetOption'
- $ref: '#/components/schemas/RemoveOption'
- $ref: '#/components/schemas/UpdateComment'
- $ref: '#/components/schemas/AddColumn'
- $ref: '#/components/schemas/RenameColumn'
- $ref: '#/components/schemas/DropColumn'
- $ref: '#/components/schemas/UpdateColumnComment'
- $ref: '#/components/schemas/UpdateColumnDefaultValue'
- $ref: '#/components/schemas/UpdateColumnType'
- $ref: '#/components/schemas/UpdateColumnPosition'
- $ref: '#/components/schemas/UpdateColumnNullability'
BaseSchemaChange:
discriminator:
propertyName: action
mapping:
setOption: '#/components/schemas/SetOption'
removeOption: '#/components/schemas/RemoveOption'
updateComment: '#/components/schemas/UpdateComment'
addColumn: '#/components/schemas/AddColumn'
renameColumn: '#/components/schemas/RenameColumn'
dropColumn: '#/components/schemas/DropColumn'
updateColumnComment: '#/components/schemas/UpdateColumnComment'
updateColumnDefaultValue: '#/components/schemas/UpdateColumnDefaultValue'
updateColumnType: '#/components/schemas/UpdateColumnType'
updateColumnPosition: '#/components/schemas/UpdateColumnPosition'
updateColumnNullability: '#/components/schemas/UpdateColumnNullability'
type: object
required:
- action
properties:
action:
type: string
SetOption:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "setOption"
key:
type: string
value:
type: string
RemoveOption:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "removeOption"
key:
type: string
UpdateComment:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "updateComment"
comment:
type: string
AddColumn:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "addColumn"
fieldNames:
type: array
items:
type: string
dataType:
$ref: '#/components/schemas/DataType'
comment:
type: string
move:
$ref: '#/components/schemas/Move'
RenameColumn:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "renameColumn"
fieldNames:
type: array
items:
type: string
newName:
type: string
DropColumn:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "dropColumn"
fieldNames:
type: array
items:
type: string
UpdateColumnComment:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "updateColumnComment"
fieldNames:
type: array
items:
type: string
newComment:
type: string
UpdateColumnDefaultValue:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "updateColumnDefaultValue"
fieldNames:
type: array
items:
type: string
newDefaultValue:
type: string
UpdateColumnType:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "updateColumnType"
fieldNames:
type: array
items:
type: string
newDataType:
$ref: '#/components/schemas/DataType'
keepNullability:
type: boolean
UpdateColumnPosition:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "updateColumnPosition"
move:
$ref: '#/components/schemas/Move'
UpdateColumnNullability:
allOf:
- $ref: '#/components/schemas/BaseSchemaChange'
properties:
action:
type: string
const: "updateColumnNullability"
fieldNames:
type: array
items:
type: string
newNullability:
type: boolean
Move:
type: object
properties:
fieldName:
type: string
referenceFieldName:
type: string
type:
type: string
RenameTableRequest:
type: object
properties:
source:
$ref: '#/components/schemas/Identifier'
destination:
$ref: '#/components/schemas/Identifier'
CommitTableRequest:
type: object
properties:
tableId:
type: string
snapshot:
$ref: '#/components/schemas/Snapshot'
statistics:
type: array
items:
$ref: '#/components/schemas/PartitionStatistics'
RollbackTableRequest:
type: object
properties:
instant:
$ref: '#/components/schemas/Instant'
Instant:
anyOf:
- $ref: '#/components/schemas/SnapshotInstant'
- $ref: '#/components/schemas/TagInstant'
BaseInstant:
discriminator:
propertyName: action
mapping:
snapshot: '#/components/schemas/SnapshotInstant'
tag: '#/components/schemas/TagInstant'
type: object
required:
- type
properties:
type:
type: string
SnapshotInstant:
allOf:
- $ref: '#/components/schemas/BaseInstant'
properties:
type:
type: string
const: "snapshot"
snapshotId:
type: integer
format: int64
TagInstant:
allOf:
- $ref: '#/components/schemas/BaseInstant'
properties:
type:
type: string
const: "tag"
tagName:
type: string
Snapshot:
type: object
properties:
version:
type: integer
format: int32
nullable: true
id:
type: integer
format: int64
schemaId:
type: integer
format: int64
baseManifestList:
type: string
deltaManifestList:
type: string
changelogManifestList:
type: string
nullable: true
indexManifest:
type: string
commitUser:
type: string
commitIdentifier:
type: string
commitKind:
type: string
enum: [ "APPEND", "COMPACT", "OVERWRITE", "ANALYZE" ]
timeMillis:
type: integer
format: int64
logOffsets:
type: object
additionalProperties:
type: integer
format: int64
totalRecordCount:
type: integer
format: int64
deltaRecordCount:
type: integer
format: int64
changelogRecordCount:
type: integer
format: int64
watermark:
type: integer
format: int64
statistics:
type: string
TableSnapshot:
type: object
properties:
snapshot:
$ref: '#/components/schemas/Snapshot'
recordCount:
type: integer
format: int64
fileSizeInBytes:
type: integer
format: int64
fileCount:
type: integer
format: int64
lastFileCreationTime:
type: integer
format: int64
CommitTableResponse:
type: object
properties:
success:
type: boolean
GetTableDataTokenResponse:
type: object
properties:
token:
type: object
additionalProperties:
type: string
expiresAt:
type: integer
format: int64
GetTableSnapshotResponse:
type: object
properties:
snapshot:
$ref: '#/components/schemas/TableSnapshot'
GetVersionSnapshotResponse:
type: object
properties:
snapshot:
$ref: '#/components/schemas/Snapshot'
ListSnapshotsResponse:
type: object
properties:
snapshots:
type: array
items:
$ref: '#/components/schemas/Snapshot'
nextPageToken:
type: string
AuthTableQueryRequest:
type: object
properties:
select:
type: array
items:
type: string
AuthTableQueryResponse:
type: object
properties:
filter:
type: array
items:
type: string
AlterDatabaseRequest:
type: object
properties:
removals:
type: array
items:
type: string
updates:
type: object
additionalProperties:
type: string
AlterDatabaseResponse:
type: object
properties:
removed:
type: array
items:
type: string
updated:
type: array
items:
type: string
missing:
type: array
items:
type: string
ListDatabasesResponse:
type: object
properties:
databases:
type: array
items:
type: string
nextPageToken:
type: string
GetDatabaseResponse:
type: object
properties:
id:
type: string
name:
type: string
location:
type: string
options:
type: object
additionalProperties:
type: string
owner:
type: string
createdAt:
format: int64
createdBy:
type: string
updatedAt:
format: int64
updatedBy:
type: string
ListTablesResponse:
type: object
properties:
tables:
type: array
items:
type: string
description: table name of the table.
nextPageToken:
type: string
ListTableDetailsResponse:
type: object
properties:
tableDetails:
type: array
items:
$ref: '#/components/schemas/GetTableResponse'
nextPageToken:
type: string
ListTablesGloballyResponse:
type: object
properties:
tables:
type: array
items:
identifier:
$ref: '#/components/schemas/Identifier'
nextPageToken:
type: string
ConfigResponse:
type: object
properties:
defaults:
type: object
additionalProperties:
type: string
overrides:
type: object
additionalProperties:
type: string
ListPartitionsResponse:
type: object
properties:
partitions:
type: array
items:
$ref: '#/components/schemas/Partition'
nextPageToken:
type: string
CreateBranchRequest:
type: object
properties:
branch:
type: string
fromTag:
nullable: true
type: string
ForwardBranchRequest:
type: object
properties:
branch:
type: string
ListBranchesResponse:
type: object
properties:
branches:
type: array
items:
type: string
GetViewResponse:
type: object
properties:
id:
type: string
name:
type: string
schema:
$ref: '#/components/schemas/ViewSchema'
owner:
type: string
createdAt:
format: int64
createdBy:
type: string
updatedAt:
format: int64
updatedBy:
type: string
ListViewsResponse:
type: object
properties:
views:
type: array
items:
type: string
description: view name of the view.
nextPageToken:
type: string
ListViewDetailsResponse:
type: object
properties:
viewDetails:
type: array
items:
$ref: '#/components/schemas/GetViewResponse'
nextPageToken:
type: string
ListFunctionsGloballyResponse:
type: object
properties:
functions:
type: array
items:
$ref: '#/components/schemas/Identifier'
ListViewsGloballyResponse:
type: object
properties:
tables:
type: array
items:
identifier:
$ref: '#/components/schemas/Identifier'
nextPageToken:
type: string
ListFunctionsResponse:
type: object
properties:
functions:
type: array
items:
type: string
nextPageToken:
type: string
ListFunctionDetailsResponse:
type: object
properties:
functionDetails:
type: array
items:
$ref: '#/components/schemas/GetFunctionResponse'
nextPageToken:
type: string
GetFunctionResponse:
type: object
properties:
name:
type: string
inputParams:
type: array
items:
$ref: '#/components/schemas/DataField'
returnParams:
type: array
items:
$ref: '#/components/schemas/DataField'
deterministic:
type: boolean
definitions:
type: object
additionalProperties:
$ref: "#/components/schemas/FunctionDefinition"
comment:
type: string
options:
type: object
additionalProperties:
type: string
owner:
type: string
createdAt:
format: int64
createdBy:
type: string
updatedAt:
format: int64
updatedBy:
type: string
ViewSchema:
type: object
properties:
fields:
type: array
items:
$ref: '#/components/schemas/DataField'
query:
type: string
dialects:
type: object
additionalProperties:
type: string
comment:
type: string
options:
type: object
additionalProperties:
type: string
Partition:
type: object
properties:
spec:
type: object
recordCount:
type: integer
format: int64
fileSizeInBytes:
type: integer
format: int64
fileCount:
type: integer
format: int64
lastFileCreationTime:
type: integer
format: int64
done:
type: boolean
PartitionStatistics:
type: object
properties:
spec:
type: object
recordCount:
type: integer
format: int64
fileSizeInBytes:
type: integer
format: int64
fileCount:
type: integer
format: int64
lastFileCreationTime:
type: integer
format: int64
#######################################
# Examples of different values #
#######################################
examples:
TableNotExistError:
summary: The requested table does not exist
value: {
"message": "The given table does not exist",
"resourceType": "TABLE",
"resourceName": "table",
"code": 404
}
SnapshotNotExistError:
summary: The requested snapshot does not exist
value: {
"message": "The given snapshot does not exist",
"resourceType": "SNAPSHOT",
"resourceName": "1",
"code": 404
}
TagNotExistError:
summary: The requested tag does not exist
value: {
"message": "The given tag does not exist",
"resourceType": "TAG",
"resourceName": "tag1",
"code": 404
}
securitySchemes:
BearerAuth:
type: http
scheme: bearer