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 |