blob: 7f6680721e1e77de9121b047501801d68a7b5815 [file] [log] [blame]
openapi: 3.0.1
info:
title: Flink SQL Gateway REST API
contact:
email: user@flink.apache.org
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
version: v4/2.0-SNAPSHOT
paths:
/api_versions:
get:
description: Get the current available versions for the Rest Endpoint. The client
can choose one of the return version as the protocol for later communicate.
operationId: getApiVersion
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiVersionResponseBody'
/info:
get:
description: Get meta data for this cluster.
operationId: getInfo
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/GetInfoResponseBody'
/sessions:
post:
description: Opens a new session with specific properties. Specific properties
can be given for current session which will override the default properties
of gateway.
operationId: openSession
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OpenSessionRequestBody'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/OpenSessionResponseBody'
/sessions/{session_handle}:
get:
description: Get the session configuration.
operationId: getSessionConfig
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/GetSessionConfigResponseBody'
delete:
description: Closes the specific session.
operationId: closeSession
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/CloseSessionResponseBody'
/sessions/{session_handle}/complete-statement:
get:
description: Get the completion hints for the given statement at the given position.
operationId: completeStatement
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CompleteStatementRequestBody'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/CompleteStatementResponseBody'
/sessions/{session_handle}/configure-session:
post:
description: |-
Configures the session with the statement which could be:
CREATE TABLE, DROP TABLE, ALTER TABLE, CREATE DATABASE, DROP DATABASE, ALTER DATABASE, CREATE FUNCTION, DROP FUNCTION, ALTER FUNCTION, CREATE CATALOG, DROP CATALOG, USE CATALOG, USE [CATALOG.]DATABASE, CREATE VIEW, DROP VIEW, LOAD MODULE, UNLOAD MODULE, USE MODULE, ADD JAR.
operationId: configureSession
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigureSessionRequestBody'
responses:
"200":
description: The request was successful.
/sessions/{session_handle}/heartbeat:
post:
description: "Trigger heartbeat to tell the server that the client is active,\
\ and to keep the session alive as long as configured timeout value."
operationId: triggerSession
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
responses:
"200":
description: The request was successful.
/sessions/{session_handle}/operations/{operation_handle}/cancel:
post:
description: Cancel the operation.
operationId: cancelOperation
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
- name: operation_handle
in: path
description: The OperationHandle that identifies a operation.
required: true
schema:
$ref: '#/components/schemas/OperationHandle'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/OperationStatusResponseBody'
/sessions/{session_handle}/operations/{operation_handle}/close:
delete:
description: Close the operation.
operationId: closeOperation
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
- name: operation_handle
in: path
description: The OperationHandle that identifies a operation.
required: true
schema:
$ref: '#/components/schemas/OperationHandle'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/OperationStatusResponseBody'
/sessions/{session_handle}/operations/{operation_handle}/result/{token}:
get:
description: Fetch results of Operation.
operationId: fetchResults
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
- name: operation_handle
in: path
description: The OperationHandle that identifies a operation.
required: true
schema:
$ref: '#/components/schemas/OperationHandle'
- name: token
in: path
description: The token that identifies which batch of data to fetch.
required: true
schema:
type: integer
format: int64
- name: rowFormat
in: query
description: The row format to serialize the RowData.
required: true
style: form
schema:
$ref: '#/components/schemas/RowFormat'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/FetchResultsResponseBody'
/sessions/{session_handle}/operations/{operation_handle}/status:
get:
description: Get the status of operation.
operationId: getOperationStatus
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
- name: operation_handle
in: path
description: The OperationHandle that identifies a operation.
required: true
schema:
$ref: '#/components/schemas/OperationHandle'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/OperationStatusResponseBody'
/sessions/{session_handle}/scripts:
post:
description: Deploy the script in application mode
operationId: deployScript
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeployScriptRequestBody'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/DeployScriptResponseBody'
/sessions/{session_handle}/statements:
post:
description: Execute a statement.
operationId: executeStatement
parameters:
- name: session_handle
in: path
description: The SessionHandle that identifies a session.
required: true
schema:
$ref: '#/components/schemas/SessionHandle'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteStatementRequestBody'
responses:
"200":
description: The request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteStatementResponseBody'
components:
schemas:
CloseSessionResponseBody:
type: object
properties:
status:
type: string
Column:
type: object
properties:
comment:
type: string
dataType:
$ref: '#/components/schemas/DataType'
name:
type: string
persisted:
type: boolean
physical:
type: boolean
ColumnInfo:
type: object
properties:
comment:
type: string
logicalType:
$ref: '#/components/schemas/LogicalType'
name:
type: string
CompleteStatementRequestBody:
type: object
properties:
position:
type: integer
format: int32
statement:
type: string
CompleteStatementResponseBody:
type: object
properties:
candidates:
type: array
items:
type: string
ConfigureSessionRequestBody:
type: object
properties:
executionTimeout:
type: integer
format: int64
statement:
type: string
ConstraintType:
type: string
enum:
- PRIMARY_KEY
- UNIQUE_KEY
DataType:
type: object
properties:
children:
type: array
items:
$ref: '#/components/schemas/DataType'
logicalType:
$ref: '#/components/schemas/LogicalType'
DeployScriptRequestBody:
type: object
properties:
executionConfig:
type: object
additionalProperties:
type: string
script:
type: string
scriptUri:
type: string
DeployScriptResponseBody:
type: object
properties:
clusterID:
type: string
ExecuteStatementRequestBody:
type: object
properties:
executionConfig:
type: object
additionalProperties:
type: string
executionTimeout:
type: integer
format: int64
statement:
type: string
ExecuteStatementResponseBody:
type: object
properties:
operationHandle:
type: string
Expression:
type: object
FetchResultsResponseBody:
type: object
properties:
jobID:
$ref: '#/components/schemas/JobID'
nextResultUri:
type: string
queryResult:
type: boolean
resultKind:
$ref: '#/components/schemas/ResultKind'
resultType:
$ref: '#/components/schemas/ResultType'
results:
$ref: '#/components/schemas/ResultInfo'
FieldGetter:
type: object
GetApiVersionResponseBody:
type: object
properties:
versions:
type: array
items:
type: string
GetInfoResponseBody:
type: object
properties:
productName:
type: string
version:
type: string
GetSessionConfigResponseBody:
type: object
properties:
properties:
type: object
additionalProperties:
type: string
IntermediateDataSetID:
pattern: "[0-9a-f]{32}"
type: string
JobID:
pattern: "[0-9a-f]{32}"
type: string
JobVertexID:
pattern: "[0-9a-f]{32}"
type: string
LogicalType:
type: object
properties:
children:
type: array
items:
$ref: '#/components/schemas/LogicalType'
nullable:
type: boolean
typeRoot:
$ref: '#/components/schemas/LogicalTypeRoot'
LogicalTypeRoot:
type: string
enum:
- CHAR
- VARCHAR
- BOOLEAN
- BINARY
- VARBINARY
- DECIMAL
- TINYINT
- SMALLINT
- INTEGER
- BIGINT
- FLOAT
- DOUBLE
- DATE
- TIME_WITHOUT_TIME_ZONE
- TIMESTAMP_WITHOUT_TIME_ZONE
- TIMESTAMP_WITH_TIME_ZONE
- TIMESTAMP_WITH_LOCAL_TIME_ZONE
- INTERVAL_YEAR_MONTH
- INTERVAL_DAY_TIME
- ARRAY
- MULTISET
- MAP
- ROW
- DISTINCT_TYPE
- STRUCTURED_TYPE
- "NULL"
- RAW
- SYMBOL
- UNRESOLVED
OpenSessionRequestBody:
type: object
properties:
properties:
type: object
additionalProperties:
type: string
sessionName:
type: string
OpenSessionResponseBody:
type: object
properties:
sessionHandle:
type: string
OperationHandle:
type: object
properties:
identifier:
type: string
format: uuid
OperationStatusResponseBody:
type: object
properties:
status:
type: string
RefreshMaterializedTableRequestBody:
type: object
properties:
dynamicOptions:
type: object
additionalProperties:
type: string
executionConfig:
type: object
additionalProperties:
type: string
isPeriodic:
type: boolean
periodic:
type: boolean
scheduleTime:
type: string
staticPartitions:
type: object
additionalProperties:
type: string
RefreshMaterializedTableResponseBody:
type: object
properties:
operationHandle:
type: string
ResolvedExpression:
type: object
properties:
children:
type: array
items:
$ref: '#/components/schemas/Expression'
outputDataType:
$ref: '#/components/schemas/DataType'
resolvedChildren:
type: array
items:
$ref: '#/components/schemas/ResolvedExpression'
ResolvedSchema:
type: object
properties:
columnCount:
type: integer
format: int32
columnDataTypes:
type: array
items:
$ref: '#/components/schemas/DataType'
columnNames:
type: array
items:
type: string
columns:
type: array
items:
$ref: '#/components/schemas/Column'
primaryKey:
$ref: '#/components/schemas/UniqueConstraint'
primaryKeyIndexes:
type: array
items:
type: integer
format: int32
watermarkSpecs:
type: array
items:
$ref: '#/components/schemas/WatermarkSpec'
ResourceID:
pattern: "[0-9a-f]{32}"
type: string
ResultInfo:
type: object
properties:
columnInfos:
type: array
items:
$ref: '#/components/schemas/ColumnInfo'
data:
type: array
items:
$ref: '#/components/schemas/RowData'
fieldGetters:
type: array
items:
$ref: '#/components/schemas/FieldGetter'
resultSchema:
$ref: '#/components/schemas/ResolvedSchema'
rowFormat:
$ref: '#/components/schemas/RowFormat'
ResultKind:
type: string
enum:
- SUCCESS
- SUCCESS_WITH_CONTENT
ResultType:
type: string
enum:
- NOT_READY
- PAYLOAD
- EOS
RowData:
type: object
properties:
arity:
type: integer
format: int32
rowKind:
$ref: '#/components/schemas/RowKind'
RowFormat:
type: string
enum:
- JSON
- PLAIN_TEXT
RowKind:
type: string
enum:
- INSERT
- UPDATE_BEFORE
- UPDATE_AFTER
- DELETE
SerializedThrowable:
type: object
properties:
serialized-throwable:
type: string
format: binary
SessionHandle:
type: object
properties:
identifier:
type: string
format: uuid
TriggerId:
pattern: "[0-9a-f]{32}"
type: string
UniqueConstraint:
type: object
properties:
columns:
type: array
items:
type: string
enforced:
type: boolean
name:
type: string
type:
$ref: '#/components/schemas/ConstraintType'
WatermarkSpec:
type: object
properties:
rowtimeAttribute:
type: string
watermarkExpression:
$ref: '#/components/schemas/ResolvedExpression'