REST API v1
Note that: now the api version is v1 and the base uri is /api/v1.
Session Resource
GET /sessions
Get the list of all live sessions
Response Body
| Name | Description | Type | 
| identifier | The session identifier | String | 
| user | The user name that created the session | String | 
| ipAddr | The client IP address that created the session | String | 
| conf | The configuration of the session | Map | 
| createTime | The session that created at this timestamp | Long | 
| duration | The interval that last access time subtract created time | Long | 
| idleTime | The interval of no operation | Long | 
GET /sessions/${sessionHandle}
Get a session event
Response Body
The KyuubiSessionEvent.
GET /sessions/${sessionHandle}/info/${infoType}
Get an information detail of a session
Request Parameters
| Name | Description | Type | 
| infoType | The id of Hive Thrift GetInfo | Int | 
Response Body
| Name | Description | Type | 
| infoType | The type of session information | String | 
| infoValue | The value of session information | String | 
GET /sessions/count
Get the current open session count
Response Body
| Name | Description | Type | 
| openSessionCount | The count of opening session | Int | 
GET /sessions/execPool/statistic
Get statistic info of background executors
Response Body
| Name | Description | Type | 
| execPoolSize | The current number of threads in the pool | Int | 
| execPoolActiveCount | The approximate number of threads that are actively executing tasks | Int | 
POST /sessions
Create a session
Request Parameters
| Name | Description | Type | 
| configs | The configuration of the session | Map | 
Response Body
| Name | Description | Type | 
| identifier | The session handle identifier | String | 
| kyuubiInstance | The Kyuubi instance that holds the session and to call for the following operations in the session | String | 
DELETE /sessions/${sessionHandle}
Close a session.
POST /sessions/${sessionHandle}/operations/statement
Create an operation with EXECUTE_STATEMENT type
Request Body
| Name | Description | Type | 
| statement | The SQL statement that you execute | String | 
| runAsync | The flag indicates whether the query runs synchronously or not | Boolean | 
| queryTimeout | The interval of query time out | Long | 
| confOverlay | The conf to overlay only for current operation | Map of key=val | 
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/typeInfo
Create an operation with GET_TYPE_INFO type
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/catalogs
Create an operation with GET_CATALOGS type
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/schemas
Create an operation with GET_SCHEMAS type
Request Body
| Name | Description | Type | 
| catalogName | The catalog name | String | 
| schemaName | The schema name | String | 
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/tables
Request Body
| Name | Description | Type | 
| catalogName | The catalog name | String | 
| schemaName | The schema name | String | 
| tableName | The table name | String | 
| tableTypes | The type of table, for example: TABLE or VIEW | String | 
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/tableTypes
Request Parameters
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/columns
Request Body
| Name | Description | Type | 
| catalogName | The catalog name | String | 
| schemaName | The schema name | String | 
| tableName | The table name | String | 
| columnName | The column name | String | 
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/functions
Request Body
| Name | Description | Type | 
| catalogName | The catalog name | String | 
| schemaName | The schema name | String | 
| functionName | The function name | String | 
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/primaryKeys
Request Parameters
| Name | Description | Type | 
| catalogName | The catalog name | String | 
| schemaName | The schema name | String | 
| tableName | The table name | String | 
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
POST /sessions/${sessionHandle}/operations/crossReference
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
Request Body
| Name | Description | Type | 
| primaryCatalog | The primary catalog name | String | 
| primarySchema | The primary schema name | String | 
| primaryTable | The primary table name | String | 
| foreignCatalog | The foreign catalog name | String | 
| foreignSchema | The foreign schema name | String | 
| foreignTable | The foreign table name | String | 
Response Body
| Name | Description | Type | 
| identifier | The identifier of operation | String | 
Operation Resource
GET /operations/${operationHandle}/event
Get the current event of the operation by the specified operation handle.
Response Body
The KyuubiOperationEvent.
PUT /operations/${operationHandle}
Perform an action to the pending or running operation.
Request Body
| Name | Description | Type | 
| action | The action that is performed to the operation. Currently, supported actions are ‘cancel’ and ‘close’. Cancel: to cancel the operation, which means the operation and its corresponding background task will be stopped, and its state will be switched to CANCELED. A CANCELED operation’s status can still be fetched by client requests.Close: to close the operation, which means the operation and its corresponding background task will be stopped, and its state will be switched to CLOSED. A CLOSED operation’s status will be removed on the server side and can not be fetched anymore.
 | String | 
Get the result set schema of the operation by the specified operation handle.
Response Body
| Name | Description | Type | 
| columns | The descriptions of columns | List of ColumnDesc | 
GET /operations/${operationHandle}/log
Get a list of operation log lines of the running operation by the specified operation handle.
Request Parameters
| Name | Description | Type | 
| maxrows | The max row that are pulled each time | Int | 
Response Body
| Name | Description | Type | 
| logRowSet | The set of log set | List of Strings | 
| rowCount | The count of log row set | Int | 
GET /operations/${operationHandle}/rowset
Get the operation result as a list of rows by the specified operation handle.
Request Parameters
| Name | Description | Type | 
| maxrows | The max rows that are pulled each time | Int | 
| fetchorientation | The orientation of fetch, for example FETCH_NEXT, FETCH_PRIOR, FETCH_FIRST, FETCH_LAST, FETCH_RELATIVE, FETCH_ABSOLUTE | String | 
Response Body
| Name | Description | Type | 
| rows | The list of rows | List of Rows | 
| rowCount | The count of rows | Int | 
Batch Resource
GET /batches
Returns all the batches.
Request Parameters
| Name | Description | Type | 
| batchType | The batch type, such as spark/flink, if no batchType is specified, return all types
 | String | 
| batchState | The valid batch state can be one of the following: PENDING, RUNNING, FINISHED, ERROR, CANCELED
 | String | 
| batchUser | The user name that created the batch | String | 
| createTime | Return the batch that created after this timestamp | Long | 
| endTime | Return the batch that ended before this timestamp | Long | 
| from | The start index to fetch batches | Int | 
| size | Number of batches to fetch, 100 by default | Int | 
Response Body
| Name | Description | Type | 
| from | The start index of fetched batches | Int | 
| total | Number of batches fetched | Int | 
| batches | Batch List | List | 
POST /batches
Create a new batch.
Request Body
- Media type: application-json
- JSON structure:
| Name | Description | Type | 
| batchType | The batch type, such as Spark, Flink | String | 
| resource | The resource containing the application to execute | Path (required) | 
| className | Application main class | String(required) | 
| name | The name of this batch. | String | 
| conf | Configuration properties | Map of key=val | 
| args | Command line arguments for the application | List of Strings | 
Response Body
The created Batch object.
POST /batches (with uploading resource)
Create a new batch with uploading resource file.
Example of using curl command to send POST request to /v1/batches in multipart-formdata media type with uploading resource file from local path.
- curl --location --request POST 'http://localhost:10099/api/v1/batches' \
- --form 'batchRequest="{\"batchType\":\"SPARK\",\"className\":\"org.apache.spark.examples.SparkPi\",\"name\":\"Spark Pi\"}";type=application/json' \
- --form 'resourceFile=@"/local_path/example.jar"'
Request Body
- Media type: multipart-formdata
- Request body structure in multiparts:
| Name | Description | Media Type | 
| batchRequest | The batch request in JSON format as request body requried in POST /batches | application/json | 
| resourceFile | The resource to upload and execute, which will be cached on server and cleaned up after execution | File | 
Response Body
The created Batch object.
GET /batches/${batchId}
Returns the batch information.
Response Body
The Batch.
DELETE /batches/${batchId}
Kill the batch if it is still running.
Response Body
| Name | Description | Type | 
| success | Whether killed the batch successfully | Boolean | 
| msg | The kill batch message | String | 
GET /batches/${batchId}/localLog
Gets the local log lines from this batch.
Request Parameters
| Name | Description | Type | 
| from | Offset | Int | 
| size | Max number of log lines to return, 100 by default | Int | 
Response Body
| Name | Description | Type | 
| logRowSet | The log lines | List of Strings | 
| rowCount | The log row count | Int | 
Admin Resource
POST /admin/refresh/hadoop_conf
Refresh the Hadoop configurations of the Kyuubi server.
POST /admin/refresh/user_defaults_conf
Refresh the user defaults configs with key in format in the form of ___{username}___.{config key} from default property file.
POST /admin/refresh/kubernetes_conf
Refresh the kubernetes configs with key prefixed with kyuubi.kubernetes from default property file.
It is helpful if you need to support multiple kubernetes contexts and namespaces, see KYUUBI #4843.
DELETE /admin/engine
Delete the specified engine.
Request Parameters
| Name | Description | Type | 
| type | the engine type | String(optional) | 
| sharelevel | the engine share level | String(optional) | 
| subdomain | the engine subdomain | String(optional) | 
| proxyUser | the proxy user to impersonate | String(optional) | 
| hive.server2.proxy.user | the proxy user to impersonate | String(optional) | 
proxyUser is an alternative to hive.server2.proxy.user, and the current behavior is consistent with
hive.server2.proxy.user. When both parameters are set, proxyUser takes precedence.
GET /admin/engine
Get a list of satisfied engines.
Request Parameters
| Name | Description | Type | 
| type | the engine type | String(optional) | 
| sharelevel | the engine share level | String(optional) | 
| subdomain | the engine subdomain | String(optional) | 
| proxyUser | the proxy user to impersonate | String(optional) | 
| hive.server2.proxy.user | the proxy user to impersonate | String(optional) | 
proxyUser is an alternative to hive.server2.proxy.user, and the current behavior is consistent with
hive.server2.proxy.user. When both parameters are set, proxyUser takes precedence.
Response Body
The Engine List.
REST Objects
Batch
| Name | Description | Type | 
| id | The batch id | String | 
| user | The user created the batch | String | 
| batchType | The batch type | String | 
| name | The batch name | String | 
| appStartTime | The batch application start time | Long | 
| appId | The batch application Id | String | 
| appUrl | The batch application tracking url | String | 
| appState | The batch application state | String | 
| appDiagnostic | The batch application diagnostic | String | 
| kyuubiInstance | The kyuubi instance that created the batch | String | 
| state | The kyuubi batch operation state | String | 
| createTime | The batch create time | Long | 
| endTime | The batch end time, if it has not been terminated, the value is 0 | Long | 
KyuubiSessionEvent
| Name | Description | Type | 
| sessionId | The session id | String | 
| clientVersion | The client version | Int | 
| sessionType | The session type | String | 
| sessionName | The session name, if user not specify it, we use empty string instead | String | 
| user | The session user name | String | 
| clientIP | The client ip address | String | 
| serverIP | A unique Kyuubi server id, e.g. kyuubi server ip address and port, it is useful if has multi-instance Kyuubi Server | String | 
| conf | The session config | Map | 
| startTime | The session create time | Long | 
| remoteSessionId | The remote engine session id | String | 
| engineId | The engine id. For engine on yarn, it is applicationId | String | 
| openedTime | The session opened time | Long | 
| endTime | The session end time | Long | 
| totalOperations | How many queries and meta calls | Int | 
| exception | The session exception, such as the exception that occur when opening session | Throwable | 
| eventType | The type of session event | String | 
KyuubiOperationEvent
| Name | Description | Type | 
| statementId | The unique identifier of a single operation | String | 
| remoteId | The unique identifier of a single operation at engine side | String | 
| statement | The sql that you execute | String | 
| shouldRunAsync | The flag indicating whether the query runs synchronously or not | Boolean | 
| state | The current operation state | String | 
| eventTime | The time when the event created & logged | Long | 
| createTime | The time for changing to the current operation state | Long | 
| startTime | The time the query start to time of this operation | Long | 
| completeTime | Time time the query ends | Long | 
| exception | Caught exception if have | Throwable | 
| sessionId | The identifier of the parent session | String | 
| sessionUser | The authenticated client user | String | 
ColumnDesc
| Name | Description | Type | 
| columnName | The name of the column | String | 
| dataType | The type descriptor for this column | String | 
| columnIndex | The index of this column in the schema | Int | 
| precision | The precision of the column | Int | 
| scale | The scale of the column | Int | 
| comment | The comment of the column | String | 
Row
| Name | Description | Type | 
| fields | The fields of row | List of Fields | 
Field
| Name | Description | Type | 
| dataType | The type of column | String | 
| value | The value of column | Object | 
Engine
| Name | Description | Type | 
| version | The version of the Kyuubi server that creates this engine instance | String | 
| user | The user created the engine | String | 
| engineType | The engine type | String | 
| sharelevel | The engine share level | String | 
| subdomain | The engine subdomain | String | 
| instance | host:port for the engine node | String | 
| namespace | The namespace used to expose the engine to KyuubiServers | String |