spec/polaris-catalog-apis/generic-tables-api.yaml (232 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.
#
---
paths:
/polaris/v1/{prefix}/namespaces/{namespace}/generic-tables:
parameters:
- $ref: '../iceberg-rest-catalog-open-api.yaml#/components/parameters/prefix'
- $ref: '../iceberg-rest-catalog-open-api.yaml#/components/parameters/namespace'
get:
tags:
- Generic Table API
summary: List all generic tables identifiers underneath a given namespace
description: Return all generic table identifiers under this namespace
operationId: listGenericTables
parameters:
- $ref: '../iceberg-rest-catalog-open-api.yaml#/components/parameters/page-token'
- $ref: '../iceberg-rest-catalog-open-api.yaml#/components/parameters/page-size'
responses:
200:
$ref: '#/components/responses/ListGenericTablesResponse'
400:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/BadRequestErrorResponse'
401:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/UnauthorizedResponse'
403:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ForbiddenResponse'
404:
description: Not Found - The namespace specified does not exist
content:
application/json:
schema:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/schemas/IcebergErrorResponse'
examples:
NamespaceNotFound:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/examples/NoSuchNamespaceError'
503:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ServiceUnavailableResponse'
5XX:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ServerErrorResponse'
post:
tags:
- Generic Table API
summary: Create a generic table under the given namespace
description:
Create a generic table under the given namespace, and return the created table information as a response.
operationId: createGenericTable
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGenericTableRequest'
responses:
200:
$ref: '#/components/responses/CreateGenericTableResponse'
400:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/BadRequestErrorResponse'
401:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/UnauthorizedResponse'
403:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ForbiddenResponse'
404:
description: Not Found - The namespace specified does not exist
content:
application/json:
schema:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/schemas/IcebergErrorResponse'
examples:
NamespaceNotFound:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/examples/NoSuchNamespaceError'
409:
description: Conflict - The table already exists under the given namespace
content:
application/json:
schema:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/schemas/IcebergErrorResponse'
examples:
TableAlreadyExists:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/examples/TableAlreadyExistsError'
503:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ServiceUnavailableResponse'
5XX:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ServerErrorResponse'
/polaris/v1/{prefix}/namespaces/{namespace}/generic-tables/{generic-table}:
parameters:
- $ref: '../iceberg-rest-catalog-open-api.yaml#/components/parameters/prefix'
- $ref: '../iceberg-rest-catalog-open-api.yaml#/components/parameters/namespace'
- $ref: '#/components/parameters/generic-table'
get:
tags:
- Generic Table API
summary: Load a generic table under the given namespace from the catalog
operationId: loadGenericTable
description:
Load a generic table from the catalog under the given namespace.
The response contains all table information passed during create.
responses:
200:
$ref: '#/components/responses/LoadGenericTableResponse'
400:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/BadRequestErrorResponse'
401:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/UnauthorizedResponse'
403:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ForbiddenResponse'
404:
description:
Not Found - NoSuchTableError, generic table to load does not exist
content:
application/json:
schema:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/schemas/IcebergErrorResponse'
examples:
TableToLoadDoesNotExist:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/examples/NoSuchTableError'
503:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ServiceUnavailableResponse'
5XX:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ServerErrorResponse'
delete:
tags:
- Generic Table API
summary: Drop a generic table under the given namespace from the catalog
operationId: dropGenericTable
description: Remove a table under the given namespace from the catalog
responses:
204:
description: Success, no content
400:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/BadRequestErrorResponse'
401:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/UnauthorizedResponse'
403:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ForbiddenResponse'
404:
description:
Not Found - NoSuchTableError, Generic table to drop does not exist
content:
application/json:
schema:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/schemas/IcebergErrorResponse'
examples:
TableToDeleteDoesNotExist:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/examples/NoSuchTableError'
503:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ServiceUnavailableResponse'
5XX:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/responses/ServerErrorResponse'
components:
parameters:
generic-table:
name: generic-table
in: path
description: A generic table name
required: true
schema:
type: string
example: "sales"
schemas:
CreateGenericTableRequest:
type: object
required:
- name
- format
properties:
name:
type: string
format:
type: string
doc:
type: string
properties:
type: object
additionalProperties:
type: string
GenericTable:
type: object
description: >
Generic Table information.
- `name` name for the generic table
- `format` format for the generic table, i.e. "delta", "csv"
- `properties` properties for the generic table passed on creation
- `doc` comment or description for the generic table
required:
- name
- format
properties:
name:
type: string
format:
type: string
doc:
type: string
properties:
type: object
additionalProperties:
type: string
LoadGenericTableResponse:
description: Result used when a table is successfully loaded.
type: object
required:
- table
properties:
table:
$ref: '#/components/schemas/GenericTable'
ListGenericTablesResponse:
type: object
properties:
next-page-token:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/schemas/PageToken'
identifiers:
type: array
uniqueItems: true
items:
$ref: '../iceberg-rest-catalog-open-api.yaml#/components/schemas/TableIdentifier'
responses:
LoadGenericTableResponse:
description: Table result if successfully load a generic table.
content:
application/json:
schema:
$ref: '#/components/schemas/LoadGenericTableResponse'
CreateGenericTableResponse:
description: Table result if successfully created a generic table.
content:
application/json:
schema:
$ref: '#/components/schemas/LoadGenericTableResponse'
ListGenericTablesResponse:
description: List of generic table identifiers.
content:
application/json:
schema:
$ref: '#/components/schemas/ListGenericTablesResponse'