Protocol Documentation
January 16, 2018 · View on GitHub
Table of Contents
- ServerSideExtension.proto
- BundledRows
- Capabilities
- CommonRequestHeader
- Dual
- Empty
- FieldDescription
- FunctionDefinition
- FunctionRequestHeader
- Parameter
- Row
- ScriptRequestHeader
- TableDescription
- DataType
- FunctionType
- Connector
- Scalar Value Types
ServerSideExtension.proto
BundledRows
A number of rows collected in one message. The actual number will depend on the size of each row and is adjusted to optimize throughput.
| Field | Type | Label | Description |
|---|---|---|---|
| rows | Row | repeated |
Capabilities
A full description of the plugin, sent to the Qlik engine, listing all functions available and indicating whether script evaluation is allowed.
| Field | Type | Label | Description |
|---|---|---|---|
| allowScript | bool | optional | When true, the Qlik engine allows scripts to be sent to the plugin. |
| functions | FunctionDefinition | repeated | The definitions of all available functions. |
| pluginIdentifier | string | optional | The ID or name of the plugin. |
| pluginVersion | string | optional | The version of the plugin. |
CommonRequestHeader
A header sent at the start of both an EvaluateScript request and an ExecuteFunction request under the key "qlik-commonrequestheader-bin".
| Field | Type | Label | Description |
|---|---|---|---|
| appId | string | optional | The ID of the app the request was executed in. |
| userId | string | optional | The ID of the user the request was executed by. |
| cardinality | int64 | optional | The cardinality of the parameters. |
Dual
The basic data type for the data stream. Can contain double, string, or both.
| Field | Type | Label | Description |
|---|---|---|---|
| numData | double | optional | Numeric value as double. |
| strData | string | optional | String. |
Empty
An empty message used when nothing is to be passed in a call.
| Field | Type | Label | Description |
|---|
FieldDescription
Field definition for function and script calls.
| Field | Type | Label | Description |
|---|---|---|---|
| dataType | DataType | optional | The data type of the field. |
| name | string | optional | The name of the field. |
| tags | string | repeated | The tags of the field. |
FunctionDefinition
The definition of a function, which informs the Qlik engine how to use it.
| Field | Type | Label | Description |
|---|---|---|---|
| name | string | optional | The name of the function. |
| functionType | FunctionType | optional | The type of the function. |
| returnType | DataType | optional | The return type of the function. |
| params | Parameter | repeated | The parameters the function takes. |
| functionId | int32 | optional | A unique ID number for the function, set by the plugin, to be used in calls from the Qlik engine to the plugin. |
FunctionRequestHeader
A header sent at the start of an ExecuteFunction request under the key "qlik-functionrequestheader-bin".
| Field | Type | Label | Description |
|---|---|---|---|
| functionId | int32 | optional | The ID of the function to be executed. |
| version | string | optional | A dummy variable as a workaround for an issue. |
Parameter
Parameter definition for functions and script calls.
| Field | Type | Label | Description |
|---|---|---|---|
| dataType | DataType | optional | The data type of the parameter. |
| name | string | optional | The name of the parameter. |
Row
A row of duals.
| Field | Type | Label | Description |
|---|---|---|---|
| duals | Dual | repeated | Row of duals. |
ScriptRequestHeader
A header sent at the start of an EvaluateScript request under the key "qlik-scriptrequestheader-bin".
| Field | Type | Label | Description |
|---|---|---|---|
| script | string | optional | The script to be executed. |
| functionType | FunctionType | optional | The function type of the script evaluation: scalar, aggregation or tensor. |
| returnType | DataType | optional | The return type from the script evaluation: numeric, string or both. |
| params | Parameter | repeated | The parameters names and types passed to the script. |
TableDescription
A header sent before returning data to Qlik, under the key "qlik-tabledescription-bin".
| Field | Type | Label | Description |
|---|---|---|---|
| fields | FieldDescription | repeated | The fields of the table. |
| name | string | optional | The name of the table. |
| numberOfRows | int64 | optional | Number of rows in table. |
DataType
Data types of the parameters and return values.
| Name | Number | Description |
|---|---|---|
| STRING | 0 | Contains only string. |
| NUMERIC | 1 | Contains only double. |
| DUAL | 2 | Contains both a string and a double. |
FunctionType
Types of functions (determined by their return values).
| Name | Number | Description |
|---|---|---|
| SCALAR | 0 | The return value is a scalar per row. |
| AGGREGATION | 1 | All rows are aggregated into a single scalar. |
| TENSOR | 2 | Multiple rows in, multiple rows out. |
Connector
The communication service provided between the Qlik engine and the plugin.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| GetCapabilities | Empty | Capabilities | A handshake call for the Qlik engine to retrieve the capability of the plugin. |
| ExecuteFunction | BundledRows | BundledRows | Requests a function to be executed as specified in the header. |
| EvaluateScript | BundledRows | BundledRows | Requests a script to be evaluated as specified in the header. |
Scalar Value Types
| .proto Type | Notes | C++ Type | Java Type | Python Type |
|---|---|---|---|---|
| double | double | double | float | |
| float | float | float | float | |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int |
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long |
| uint32 | Uses variable-length encoding. | uint32 | int | int/long |
| uint64 | Uses variable-length encoding. | uint64 | long | int/long |
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int |
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long |
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than . | uint32 | int | int |
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than . | uint64 | long | int/long |
| sfixed32 | Always four bytes. | int32 | int | int |
| sfixed64 | Always eight bytes. | int64 | long | int/long |
| bool | bool | boolean | boolean | |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode |
| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str |