paimon-open-api/rest-catalog-open-api.yaml (2,136 lines of code) (raw):
#
# 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 Databases
operationId: createDatabases
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}/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 (% and _) for table names.
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 (% and _) for table names.
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}/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}/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}/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 (% and _) for partition names.
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 (% and _) for view names.
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 (% and _) for view names.
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}/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'
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
}
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
}
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
}
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
CreatePartitionsRequest:
type: object
properties:
specs:
type: array
items:
type: object
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'
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'
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/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'
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
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:
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'
AlterDatabaseRequest:
type: object
properties:
removals:
type: array
items:
type: string
updates:
type: object
additionalProperties:
type: string
AlterPartitionsRequest:
type: object
properties:
partitions:
type: array
items:
$ref: '#/components/schemas/Partition'
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
nextPageToken:
type: string
ListTableDetailsResponse:
type: object
properties:
tableDetails:
type: array
items:
$ref: '#/components/schemas/GetTableResponse'
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
nextPageToken:
type: string
ListViewDetailsResponse:
type: object
properties:
viewDetails:
type: array
items:
$ref: '#/components/schemas/GetViewResponse'
nextPageToken:
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