versioned_docs/version-0.8.0-incubating/open-api/catalogs.yaml (577 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:
/metalakes/{metalake}/catalogs:
parameters:
- $ref: "./openapi.yaml#/components/parameters/metalake"
get:
tags:
- catalog
summary: List catalogs (names)
operationId: listCatalogs
parameters:
- $ref: "#/components/parameters/details"
responses:
"200":
description: Returns the list of catalog objects if {details} is true, otherwise returns the list of catalog identifiers
content:
application/vnd.gravitino.v1+json:
schema:
oneOf:
- $ref: "#/components/schemas/CatalogListResponse"
- $ref: "#/components/schemas/CatalogInfoListResponse"
examples:
CatalogListResponse:
$ref: "#/components/examples/CatalogListResponse"
CatalogInfoListResponse:
$ref: "#/components/examples/CatalogInfoListResponse"
"400":
$ref: "./openapi.yaml#/components/responses/BadRequestErrorResponse"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
post:
tags:
- catalog
summary: Create catalog
operationId: createCatalog
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CatalogCreateRequest"
examples:
CatalogCreate:
$ref: "#/components/examples/CatalogCreate"
responses:
"200":
$ref: "#/components/responses/CatalogResponse"
"409":
description: Conflict - The target catalog already exists in the specified metalake
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "./openapi.yaml#/components/schemas/ErrorModel"
examples:
CatalogAlreadyExistsException:
$ref: "#/components/examples/CatalogAlreadyExistsException"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
/metalakes/{metalake}/catalogs/testConnection:
parameters:
- $ref: "./openapi.yaml#/components/parameters/metalake"
post:
tags:
- catalog
summary: Test catalog connection
operationId: testConnection
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CatalogCreateRequest"
examples:
CatalogCreate:
$ref: "#/components/examples/CatalogCreate"
responses:
"200":
description: Test connection completed
content:
application/vnd.gravitino.v1+json:
schema:
type: object
required:
- code
properties:
code:
type: integer
format: int32
description: Status code of the response
type:
type: string
description: Internal type definition of the exception
message:
type: string
description: The message of the exception
stack:
type: array
items:
type: string
description: The stack trace of the exception
examples:
TestConnectionSuccess:
value: {
"code": 0
}
TestConnectionFailed:
$ref: "#/components/examples/ConnectionFailedException"
CatalogAlreadyExists:
$ref: "#/components/examples/CatalogAlreadyExistsException"
MetalakeNotFound:
$ref: "./metalakes.yaml#/components/examples/NoSuchMetalakeException"
"400":
$ref: "./openapi.yaml#/components/responses/BadRequestErrorResponse"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
/metalakes/{metalake}/catalogs/{catalog}:
parameters:
- $ref: "./openapi.yaml#/components/parameters/metalake"
- $ref: "./openapi.yaml#/components/parameters/catalog"
get:
tags:
- catalog
summary: Get catalog
operationId: loadCatalog
description: Returns the specified catalog information in the specified metalake
responses:
"200":
$ref: "#/components/responses/CatalogResponse"
"404":
description: Not Found - The specified catalog does not exist in the specified metalake
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "./openapi.yaml#/components/schemas/ErrorModel"
examples:
NoSuchMetalakeException:
$ref: "./metalakes.yaml#/components/examples/NoSuchMetalakeException"
NoSuchCatalogException:
$ref: "#/components/examples/NoSuchCatalogException"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
put:
tags:
- catalog
summary: Update catalog
operationId: alterCatalog
description: Alters the specified catalog information in the specified metalake
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CatalogUpdatesRequest"
responses:
"200":
$ref: "#/components/responses/CatalogResponse"
"404":
description: Not Found - The specified catalog does not exist in the specified metalake
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "./openapi.yaml#/components/schemas/ErrorModel"
examples:
NoSuchMetalakeException:
$ref: "./metalakes.yaml#/components/examples/NoSuchMetalakeException"
NoSuchCatalogException:
$ref: "#/components/examples/NoSuchCatalogException"
"409":
description: Conflict - The target catalog already exists in the specified metalake
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "./openapi.yaml#/components/schemas/ErrorModel"
examples:
CatalogAlreadyExistsException:
$ref: "#/components/examples/CatalogAlreadyExistsException"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
patch:
tags:
- catalog
summary: set catalog in-use
operationId: setCatalog
description: Set a specific catalog in-use or not in-use
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CatalogSetRequest"
responses:
"200":
$ref: "./openapi.yaml#/components/responses/BaseResponse"
"404":
description: Not Found - The metalake does not exist
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "./openapi.yaml#/components/schemas/ErrorModel"
examples:
NoSuchMetalakeException:
$ref: "#/components/examples/NoSuchCatalogException"
"500":
description:
Internal server error. It is possible that the server
encountered a storage issue.
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "./openapi.yaml#/components/schemas/ErrorModel"
delete:
tags:
- catalog
summary: Drop catalog
operationId: dropCatalog
parameters:
- $ref: "./openapi.yaml#/components/parameters/force"
responses:
"200":
$ref: "./openapi.yaml#/components/responses/DropResponse"
"400":
$ref: "./openapi.yaml#/components/responses/BadRequestErrorResponse"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
components:
parameters:
details:
name: details
in: query
description: Include detailed information about the catalogs
required: false
schema:
type: boolean
default: false
schemas:
Catalog:
type: object
description: A catalog
required:
- name
- type
- provider
- audit
properties:
name:
type: string
description: The name of the catalog
type:
type: string
description: The type of the catalog
enum:
- relational
- fileset
- messaging
provider:
type: string
description: The provider of the catalog
enum:
- hive
- lakehouse-iceberg
- lakehouse-paimon
- lakehouse-hudi
- jdbc-mysql
- jdbc-postgresql
- jdbc-doris
- hadoop
- kafka
comment:
type: string
description: A comment about the catalog
nullable: true
audit:
$ref: "./openapi.yaml#/components/schemas/Audit"
properties:
type: object
description: Configured string to string map of properties for the catalog
default: { }
additionalProperties:
type: string
CatalogListResponse:
type: object
properties:
code:
type: integer
format: int32
description: Status code of the response
enum:
- 0
identifiers:
type: array
items:
$ref: "./openapi.yaml#/components/schemas/NameIdentifier"
CatalogInfoListResponse:
type: object
properties:
code:
type: integer
format: int32
description: Status code of the response
enum:
- 0
catalogs:
type: array
description: A list of catalog objects
items:
$ref: "#/components/schemas/Catalog"
CatalogCreateRequest:
type: object
required:
- name
- type
- provider
properties:
name:
type: string
description: The name of the catalog
type:
type: string
description: The type of the catalog
enum:
- relational
- fileset
- messaging
- model
provider:
type: string
description: The provider of the catalog
enum:
- hive
- lakehouse-iceberg
- lakehouse-paimon
- lakehouse-hudi
- jdbc-mysql
- jdbc-postgresql
- jdbc-doris
- jdbc-oceanbase
- hadoop
- kafka
comment:
type: string
description: A comment for the catalog
nullable: true
properties:
type: object
description: A map of properties for the catalog
nullable: true
default: { }
additionalProperties:
type: string
CatalogSetRequest:
type: object
required:
- inUse
properties:
inUse:
type: boolean
description: The in-use status of the catalog to set
example: {
"inUse": true
}
CatalogUpdatesRequest:
type: object
required:
- updates
properties:
updates:
type: array
items:
$ref: "#/components/schemas/CatalogUpdateRequest"
CatalogUpdateRequest:
oneOf:
- $ref: "#/components/schemas/RenameCatalogRequest"
- $ref: "#/components/schemas/UpdateCatalogCommentRequest"
- $ref: "#/components/schemas/SetCatalogPropertyRequest"
- $ref: "#/components/schemas/RemoveCatalogPropertyRequest"
discriminator:
propertyName: "@type"
mapping:
rename: "#/components/schemas/RenameCatalogRequest"
updateComment: "#/components/schemas/UpdateCatalogCommentRequest"
setProperty: "#/components/schemas/SetCatalogPropertyRequest"
removeProperty: "#/components/schemas/RemoveCatalogPropertyRequest"
RenameCatalogRequest:
type: object
required:
- "@type"
- newName
properties:
"@type":
type: string
enum:
- rename
newName:
type: string
description: The new name of the catalog
example: {
"@type": "rename",
"newName": "my_catalog_new"
}
UpdateCatalogCommentRequest:
type: object
required:
- "@type"
- newComment
properties:
"@type":
type: string
enum:
- updateComment
newComment:
type: string
description: The new comment of the catalog
example: {
"@type": "updateComment",
"newComment": "This is my new catalog comment"
}
SetCatalogPropertyRequest:
type: object
required:
- "@type"
- property
- value
properties:
"@type":
type: string
enum:
- setProperty
property:
type: string
description: The property to set
value:
type: string
description: The value to set
example: {
"@type": "setProperty",
"property": "key1",
"value": "value1"
}
RemoveCatalogPropertyRequest:
type: object
required:
- "@type"
- property
properties:
"@type":
type: string
enum:
- removeProperty
property:
type: string
description: The property to remove
example: {
"@type": "removeProperty",
"property": "key2"
}
responses:
CatalogResponse:
description: Returns included catalog object
content:
application/vnd.gravitino.v1+json:
schema:
type: object
properties:
code:
type: integer
format: int32
description: Status code of the response
enum:
- 0
catalog:
$ref: "#/components/schemas/Catalog"
examples:
CatalogResponse:
$ref: "#/components/examples/CatalogResponse"
examples:
CatalogListResponse:
value: {
"code": 0,
"identifiers": [
{
"namespace": [
"my_metalake"
],
"name": "my_hive_catalog"
}
]
}
CatalogInfoListResponse:
value: {
"code": 0,
"catalogs": [
{
"name": "my_hive_catalog",
"type": "relational",
"provider": "hive",
"comment": "This is my hive catalog",
"properties": {
"key1": "value1",
"gravitino.bypass.hive.metastore.client.capability.check": "false",
"metastore.uris": "thrift://127.0.0.1:9083"
},
"audit": {
"creator": "gravitino",
"createTime": "2023-12-08T03:41:25.595Z"
}
},
{
"name": "my_hadoop_catalog",
"type": "fileset",
"provider": "hadoop",
"comment": "This is my hadoop catalog",
"properties": {
"key2": "value2"
},
"audit": {
"creator": "gravitino",
"createTime": "2023-12-08T06:41:25.595Z"
}
}
]
}
CatalogCreate:
value: {
"name": "my_hive_catalog",
"type": "relational",
"provider": "hive",
"comment": "This is my hive catalog",
"properties": {
"metastore.uris": "thrift://127.0.0.1:9083",
"key1": "value1"
}
}
CatalogResponse:
value: {
"code": 0,
"catalog": {
"name": "my_hive_catalog",
"type": "relational",
"provider": "hive",
"comment": "This is my hive catalog",
"properties": {
"key1": "value1",
"gravitino.bypass.hive.metastore.client.capability.check": "false",
"metastore.uris": "thrift://127.0.0.1:9083"
},
"audit": {
"creator": "gravitino",
"createTime": "2023-12-08T03:41:25.595Z"
}
}
}
CatalogAlreadyExistsException:
value: {
"code": 1004,
"type": "CatalogAlreadyExistsException",
"message": "Failed to operate catalog(s) [my_catalog] operation [CREATE], reason [CatalogAlreadyExistsException]",
"stack": [
"org.apache.gravitino.exceptions.CatalogAlreadyExistsException: Catalog my_catalog already exists",
"..."
]
}
ConnectionFailedException:
value: {
"code": 1007,
"type": "ConnectionFailedException",
"message": "Failed to run getAllDatabases in Hive Metastore: Failed to connect to Hive Metastore",
"stack": [
"org.apache.gravitino.exceptions.ConnectionFailedException: Failed to run getAllDatabases in Hive Metastore: Failed to connect to Hive Metastore",
"..."
]
}
NoSuchCatalogException:
value: {
"code": 1003,
"type": "NoSuchCatalogException",
"message": "Failed to operate catalog(s) [test] operation [LOAD] under metalake [my_test_metalake], reason [NoSuchCatalogException]",
"stack": [
"org.apache.gravitino.exceptions.NoSuchCatalogException: Catalog my_test_metalake.test does not exist",
"..."
]
}