Спецификация OpenAPI
Полная спецификация REST API доступна по ссылке, а также приведена ниже.
openapi: 3.0.0
info:
title: ProstorePublicAPI
version: 1.0.4
description: Prostore public Rest API
contact:
name: Alexander Senko
servers:
- url: 'http://{host}:{port}'
variables:
host:
default: localhost
port:
default: '9090'
paths:
/api/v1/datamarts/query:
post:
summary: Execute Query based on SQL+ command
operationId: post-query-execute
responses:
'200':
$ref: '#/components/responses/query'
'500':
$ref: '#/components/responses/500'
description: Execute a query in simple or prepared modes. The query can be any supported SQL+ command.
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/query-format'
- $ref: '#/components/parameters/x-request-id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/query-request'
examples:
simple query:
value:
query: 'SELECT id, data FROM test_db.test_table WHERE id > 3 AND id < 6 AND (data = ''data'' OR data IS null) ORDER BY id DATASOURCE_TYPE = ''adb'''
queryId: '12345'
maxRowsToRead: 10
prepared query (async):
value:
query: 'INSERT INTO test_db.test_table (id, data) values (?, ?), (?, ?), (?, ?)'
async: true
params:
- value: 4
type: INTEGER
- value: data
type: VARCHAR
- value: 5
type: INTEGER
- value: null
type: VARCHAR
- value: 6
type: INTEGER
- value: null
type: VARCHAR
description: |-
- If the optional <b>parameter "params" is not specified</b>, the request is executed as <b>simple query</b>, when all parameter values are passed in the query string itself.
- If the optional <b>parameter "params" is specified</b>, the request is executed as <b>prepared query</b>. In this case, all values within the query string, represented as a "?", are replaced with the corresponding value from the "params" array.
Datamart should be specified inside of query text.
parameters: []
'/api/v1/datamarts/{datamart}/query':
post:
summary: Execute Query based on SQL+ command
operationId: post-query-datamart-execute
responses:
'200':
$ref: '#/components/responses/query'
'500':
$ref: '#/components/responses/500'
description: Execute a query in simple or prepared modes based on specified datamart. The query can be any supported SQL+ command.
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/query-format'
- $ref: '#/components/parameters/x-request-id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/query-request'
examples:
prepared query:
value:
query: 'INSERT INTO test_table (id, data) values (?, ?), (?, ?), (?, ?)'
queryId: '12345'
maxRowsToRead: 10
params:
- value: 4
type: INTEGER
- value: data
type: VARCHAR
- value: 5
type: INTEGER
- value: null
type: VARCHAR
- value: 6
type: INTEGER
- value: null
type: VARCHAR
description: |-
- If the optional <b>parameter "params" is not specified</b>, the request is executed as <b>simple query</b>, when all parameter values are passed in the query string itself.
- If the optional <b>parameter "params" is specified</b>, the request is executed as <b>prepared query</b>. In this case, all values within the query string, represented as a "?", are replaced with the corresponding value from the "params" array.
parameters:
- $ref: '#/components/parameters/datamart'
'/api/v1/datamarts/query/{requestId}':
parameters:
- $ref: '#/components/parameters/requestId'
get:
summary: Get status of async query by requestId
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
$ref: '#/components/responses/async-query-status'
'404':
$ref: '#/components/responses/async-query-status-404'
'500':
$ref: '#/components/responses/500'
operationId: get-async-query-status
description: Get status of async query by requestId. Status 0 - running; status 2 - error.
post:
summary: Delete async query by requestId
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/x-request-id'
operationId: delete-async-query-status
responses:
'200':
description: OK
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
description: Clear async query information by requestId (any status).
'/api/v1/datamarts/{datamart}/query/{requestId}':
parameters:
- $ref: '#/components/parameters/datamart'
- $ref: '#/components/parameters/requestId'
get:
summary: Get status of async query by requestId
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
$ref: '#/components/responses/async-query-status'
'404':
$ref: '#/components/responses/async-query-status-404'
'500':
$ref: '#/components/responses/500'
operationId: get-async-datamart-query-status
description: Get status of async query by requestId. Status 0 - running; status 2 - error.
post:
summary: Delete async query by requestId
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/x-request-id'
operationId: delete-async-datamart-query-status
responses:
'200':
description: OK
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
description: Clear async query information by requestId (any status).
/api/v1/datamarts/queries:
parameters: []
get:
summary: Get list of async queries
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
$ref: '#/components/responses/async-queries-list'
'500':
$ref: '#/components/responses/500'
operationId: get-async-queries
description: Get list of async queries. Status 0 - running; status 2 - error.
post:
summary: Delete async queries for all of datamarts
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/x-request-id'
operationId: delete-async-queries
responses:
'200':
description: OK
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
description: Clear all async queries information.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/delete-async-queries-request'
examples:
delete errors only:
value: {}
description: |-
Clears errors of async queries by default.
If running is set true, then running and erros will be cleared
'/api/v1/datamarts/{datamart}/queries':
parameters:
- $ref: '#/components/parameters/datamart'
get:
summary: Get list of async queries
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
$ref: '#/components/responses/async-queries-list'
'500':
$ref: '#/components/responses/500'
operationId: get-async-datamart-queries
description: Get list of async queries. Status 0 - running; status 2 - error.
post:
summary: Deletes async queries for the datamart specified
tags:
- SQL+ Query
parameters:
- $ref: '#/components/parameters/x-request-id'
operationId: delete-async-datamart-queries
responses:
'200':
description: OK
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
description: 'Clears errors of async queries by default. If running is set true, then running and erros will be cleared'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/delete-async-queries-request'
examples:
clear_all:
value:
running: true
description: |-
Clears errors of async queries by default.
If running is set true, then running and erros will be cleared
'/api/v1/datamarts/{datamart}/deltas/{deltaNum}':
get:
summary: Get Delta by Num
tags:
- Deltas
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: Information about delta.
content:
application/json:
schema:
$ref: '#/components/schemas/delta'
examples:
delta:
value:
deltaNum: 0
deltaDate: '2022-09-05 11:40:00'
deltaServerDate: '2022-09-05 11:39:02'
cnFrom: 0
cnTo: 3
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-deltas-delta-num
description: 'A query that returns the information about delta specified by number. If the delta does not exist, response of the type "500" will be returned for it.'
parameters:
- $ref: '#/components/parameters/datamart'
- schema:
type: integer
example: 0
name: deltaNum
in: path
required: true
description: The number of delta for which the information should be fetched
'/api/v1/datamarts/{datamart}/deltas/current':
get:
summary: Get Delta-now
tags:
- Deltas
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: Information about delta-now.
content:
application/json:
schema:
$ref: '#/components/schemas/delta'
examples:
delta:
value:
deltaNum: 1
deltaDate: '2022-09-05 11:50:00'
deltaServerDate: '2022-09-05 11:49:20'
cnFrom: 4
cnTo: 7
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-deltas-current
description: 'A query that returns a delta-now information. If the delta does not exist, response of the type "500" will be returned for it.'
parameters:
- $ref: '#/components/parameters/datamart'
'/api/v1/datamarts/{datamart}/deltas/latest':
get:
summary: 'Get Delta-hot, Delta-ok'
tags:
- Deltas
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: Information about delta-ok and delta-hot.
content:
application/json:
schema:
type: object
properties:
hot:
anyOf:
- $ref: '#/components/schemas/null'
- $ref: '#/components/schemas/delta-hot'
ok:
anyOf:
- $ref: '#/components/schemas/null'
- $ref: '#/components/schemas/delta'
examples:
'delta-ok(+), delta-hot(+)':
value:
hot:
deltaNum: 8
cnFrom: 9
cnTo: 9
cnMax: 9
rollingBack: false
writeOperationsFinished:
- tableName: transactions
cnList:
- 9
ok:
deltaNum: 7
deltaDate: '2022-08-09 11:38:04'
deltaServerDate: '2022-08-09 11:38:04'
cnFrom: 7
cnTo: 8
'delta-ok(+), delta-hot(-)':
value:
hot: null
ok:
deltaNum: 7
deltaDate: '2022-08-09 11:38:04'
deltaServerDate: '2022-08-09 11:38:04'
cnFrom: 7
cnTo: 8
'delta-ok(-), delta-hot(-)':
value:
hot: null
ok: null
'delta-ok(-), delta-hot(+)':
value:
hot:
deltaNum: 0
cnFrom: 0
cnTo: null
cnMax: -1
rollingBack: false
writeOperationsFinished: null
ok: null
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-deltas-latest
description: 'A query that returns a delta-ok and delta-hot information. If any of the deltas does not exist, null will be returned for it.'
parameters:
- $ref: '#/components/parameters/datamart'
'/api/v1/datamarts/{datamart}/deltas/latest/hot':
get:
summary: Get Delta-hot
tags:
- Deltas
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: Information about delta-hot.
content:
application/json:
schema:
type: object
properties:
hot:
anyOf:
- $ref: '#/components/schemas/null'
- $ref: '#/components/schemas/delta-hot'
examples:
delta-hot:
value:
hot:
deltaNum: 8
cnFrom: 9
cnTo: 9
cnMax: 9
rollingBack: false
writeOperationsFinished:
- tableName: transactions
cnList:
- 9
delta-hot empty:
value:
hot: null
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-deltas-latest-hot
description: 'A query that returns a delta-hot information. If the delta does not exist, null will be returned for it.'
parameters:
- $ref: '#/components/parameters/datamart'
'/api/v1/datamarts/{datamart}/deltas/latest/ok':
get:
summary: Get Delta-ok
tags:
- Deltas
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: Information about delta-ok.
content:
application/json:
schema:
type: object
properties:
ok:
anyOf:
- $ref: '#/components/schemas/null'
- $ref: '#/components/schemas/delta'
examples:
delta-ok:
value:
ok:
deltaNum: 7
deltaDate: '2022-08-09 11:38:04'
deltaServerDate: '2022-08-09 11:38:04'
cnFrom: 7
cnTo: 8
delta-ok empty:
value:
ok: null
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-deltas-latest-ok
description: 'A query that returns a delta-ok information. If the delta does not exist, null will be returned for it.'
parameters:
- $ref: '#/components/parameters/datamart'
/api/v1/datamarts:
get:
summary: List of Datamarts
tags:
- Schema
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: ResultSet
content:
application/json:
schema:
type: object
properties:
datamarts:
type: array
items:
type: string
required:
- datamarts
examples:
ResultSet:
value:
datamarts:
- TESTDB1
- TESTDB2
- TESTDB3
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-schema-datamarts
description: Get a list of datamarts based on the information schema.
parameters: []
'/api/v1/datamarts/{datamart}/entities':
parameters:
- $ref: '#/components/parameters/datamart'
get:
summary: Datamart Entities
tags:
- Schema
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: ResultSet
content:
application/json:
schema:
type: object
properties:
entities:
type: array
items:
type: string
required:
- entities
examples:
ResultSet:
value:
entities:
- TESTTABLE
- TESTTABLE_VIEW
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-schema-datamart
description: Get a list of entities of the specified datamart based on the information schema.
'/api/v1/datamarts/{datamart}/entities/{entity}':
parameters:
- $ref: '#/components/parameters/datamart'
- $ref: '#/components/parameters/entity'
get:
summary: Entity Attributes
tags:
- Schema
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: ResultSet
content:
application/json:
schema:
type: object
properties:
name:
type: string
schema:
type: string
viewQuery:
type: string
nullable: true
entityType:
type: string
enum:
- TABLE
- UPLOAD_EXTERNAL_TABLE
- DOWNLOAD_EXTERNAL_TABLE
- READABLE_EXTERNAL_TABLE
- WRITEABLE_EXTERNAL_TABLE
- VIEW
- MATERIALIZED_VIEW
externalTableFormat:
type: string
nullable: true
externalTableSchema:
type: string
nullable: true
externalTableLocationType:
type: string
nullable: true
externalTableLocationPath:
type: string
nullable: true
externalTableOptions:
type: object
nullable: true
externalTableDownloadChunkSize:
type: integer
nullable: true
externalTableUploadMessageLimit:
type: integer
nullable: true
destination:
type: array
nullable: true
items:
type: string
retentions:
type: object
additionalProperties:
type: object
properties:
period:
type: integer
destination:
type: string
nullable: true
minValidSysTo:
type: integer
nullable: true
minAvailableSysTo:
type: integer
nullable: true
required:
- period
- destination
- minValidSysTo
- minAvailableSysTo
nullable: true
partitionOf:
type: object
required:
- schema
- name
- ranges
nullable: true
properties:
schema:
type: string
name:
type: string
ranges:
type: array
nullable: true
items:
type: object
description: Model for partition-range
properties:
leftValues:
type: array
items:
type: string
nullable: true
rightValues:
type: array
items:
type: string
nullable: true
required:
- leftValues
- rightValues
partitions:
type: array
nullable: true
items:
type: object
properties:
schema:
type: string
name:
type: string
required:
- schema
- name
materializedDeltaNum:
type: integer
nullable: true
materializedDataSource:
type: string
nullable: true
fields:
type: array
items:
type: object
properties:
ordinalPosition:
type: integer
name:
type: string
type:
$ref: '#/components/schemas/data-type'
size:
type: integer
nullable: true
accuracy:
type: integer
nullable: true
nullable:
type: boolean
primaryOrder:
type: integer
nullable: true
shardingOrder:
type: integer
nullable: true
partitionOrder:
type: integer
nullable: true
defaultValue:
anyOf:
- type: string
nullable: true
- type: number
- type: integer
- type: boolean
required:
- ordinalPosition
- name
- type
- size
- accuracy
- nullable
- primaryOrder
- shardingOrder
- partitionOrder
- defaultValue
materializedDeltaSyncDate:
type: string
nullable: true
lastCn:
type: integer
nullable: true
required:
- name
- schema
- viewQuery
- entityType
- externalTableFormat
- externalTableSchema
- externalTableLocationType
- externalTableLocationPath
- externalTableOptions
- externalTableDownloadChunkSize
- externalTableUploadMessageLimit
- destination
- retentions
- partitionOf
- partitions
- materializedDeltaNum
- materializedDataSource
- fields
- materializedDeltaSyncDate
- lastCn
examples:
TABLE:
value:
name: all_types_transactions
schema: testdb
viewQuery: null
entityType: TABLE
externalTableFormat: null
externalTableSchema: null
externalTableLocationType: null
externalTableLocationPath: null
externalTableOptions: null
externalTableDownloadChunkSize: null
externalTableUploadMessageLimit: null
destination:
- ADB2
- ADP
- ADB
- ADP2
retentions:
ADB:
period: 3600
destination: ADB2
minValidSysTo: null
minAvailableSysTo: null
ADP:
period: 0
destination: ADP2
minValidSysTo: 30
minAvailableSysTo: 25
ADB2:
period: 3600
destination: null
minValidSysTo: null
minAvailableSysTo: null
ADP2:
period: 0
destination: null
minValidSysTo: 30
minAvailableSysTo: 30
partitionOf: null
partitions: null
materializedDeltaNum: null
materializedDataSource: null
fields:
- ordinalPosition: 0
name: transaction_id
type: BIGINT
size: null
accuracy: null
nullable: false
primaryOrder: 1
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 1
name: account_id
type: BIGINT
size: null
accuracy: null
nullable: false
primaryOrder: 2
shardingOrder: 1
partitionOrder: null
defaultValue: null
- ordinalPosition: 2
name: double_col
type: DOUBLE
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 3
name: float_col
type: FLOAT
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 4
name: varchar_col
type: VARCHAR
size: 36
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 5
name: boolean_col
type: BOOLEAN
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 6
name: int_col
type: INTEGER
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 7
name: bigint_col
type: BIGINT
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 8
name: date_col
type: DATE
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 9
name: timestamp_col
type: TIMESTAMP
size: null
accuracy: 6
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 10
name: time_col
type: TIME
size: null
accuracy: 5
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 11
name: uuid_col
type: UUID
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 12
name: char_col
type: CHAR
size: 10
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 13
name: int32_col
type: INT32
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 14
name: link_col
type: LINK
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: null
lastCn: 10
UPLOAD_EXTERNAL_TABLE:
value:
name: table_ext_upload
schema: testdb
viewQuery: null
entityType: UPLOAD_EXTERNAL_TABLE
externalTableFormat: AVRO
externalTableSchema: '{"type":"record","name":"table_ext_upload","namespace":"testdb","fields":[{"name":"id","type":["null","long"],"default":null},{"name":"data","type":["null",{"type":"string","avro.java.string":"String"}],"default":null},{"name":"sys_op","type":"int","default":0}]}'
externalTableLocationType: KAFKA
externalTableLocationPath: 'kafka://server/testdb_upload'
externalTableOptions: {}
externalTableDownloadChunkSize: null
externalTableUploadMessageLimit: 1000
destination: null
retentions: null
partitionOf: null
partitions: null
materializedDeltaNum: null
materializedDataSource: null
fields:
- ordinalPosition: 0
name: id
type: INTEGER
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 1
name: data
type: VARCHAR
size: 30
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: null
lastCn: null
DOWNLOAD_EXTERNAL_TABLE:
value:
name: table_ext_download
schema: testdb
viewQuery: null
entityType: DOWNLOAD_EXTERNAL_TABLE
externalTableFormat: AVRO
externalTableSchema: '{"type":"record","name":"table_ext_download","namespace":"testdb","fields":[{"name":"id","type":["null","long"],"default":null},{"name":"data","type":["null",{"type":"string","avro.java.string":"String"}],"default":null}]}'
externalTableLocationType: KAFKA
externalTableLocationPath: 'kafka://server/testdb_download'
externalTableOptions: null
externalTableDownloadChunkSize: 1000
externalTableUploadMessageLimit: null
destination: null
retentions: null
partitionOf: null
partitions: null
materializedDeltaNum: null
materializedDataSource: null
fields:
- ordinalPosition: 0
name: id
type: INTEGER
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 1
name: data
type: VARCHAR
size: 30
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: null
lastCn: null
WRITEABLE_EXTERNAL_TABLE:
value:
name: table_ext_write
schema: testdb
viewQuery: null
entityType: WRITEABLE_EXTERNAL_TABLE
externalTableFormat: null
externalTableSchema: '{"type":"record","name":"table_ext_write_adb","namespace":"testdb","fields":[{"name":"id","type":"long"},{"name":"data","type":["null",{"type":"string","avro.java.string":"String"}],"default":null},{"name":"sys_op","type":["null","int"],"default":null}]}'
externalTableLocationType: CORE_ADB
externalTableLocationPath: testdb.table_standalone
externalTableOptions: {}
externalTableDownloadChunkSize: null
externalTableUploadMessageLimit: null
destination:
- ADB
retentions: null
partitionOf: null
partitions: null
materializedDeltaNum: null
materializedDataSource: null
fields:
- ordinalPosition: 0
name: id
type: INTEGER
size: null
accuracy: null
nullable: false
primaryOrder: 1
shardingOrder: 1
partitionOrder: null
defaultValue: null
- ordinalPosition: 1
name: data
type: VARCHAR
size: 30
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 2
name: sys_op
type: INT32
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: null
lastCn: null
READABLE_EXTERNAL_TABLE:
value:
name: table_ext_read
schema: testdb
viewQuery: null
entityType: READABLE_EXTERNAL_TABLE
externalTableFormat: null
externalTableSchema: '{"type":"record","name":"table_ext_read","namespace":"testdb","fields":[{"name":"id","type":"long"},{"name":"data","type":["null",{"type":"string","avro.java.string":"String"}],"default":null},{"name":"sys_op","type":["null","int"],"default":null}]}'
externalTableLocationType: CORE_ADB
externalTableLocationPath: testdb.table_standalone
externalTableOptions:
auto.create.table.enable: 'false'
externalTableDownloadChunkSize: null
externalTableUploadMessageLimit: null
destination:
- ADB
retentions: null
partitionOf: null
partitions: null
materializedDeltaNum: null
materializedDataSource: null
fields:
- ordinalPosition: 0
name: id
type: INTEGER
size: null
accuracy: null
nullable: false
primaryOrder: 1
shardingOrder: 1
partitionOrder: null
defaultValue: null
- ordinalPosition: 1
name: data
type: VARCHAR
size: 30
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 2
name: sys_op
type: INT32
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: null
lastCn: null
VIEW:
value:
name: test_view
schema: testdb
viewQuery: 'SELECT id, data FROM testdb.test_table'
entityType: VIEW
externalTableFormat: null
externalTableSchema: null
externalTableLocationType: null
externalTableLocationPath: null
externalTableOptions: null
externalTableDownloadChunkSize: null
externalTableUploadMessageLimit: null
destination: null
retentions: null
partitionOf: null
partitions: null
materializedDeltaNum: null
materializedDataSource: null
fields:
- ordinalPosition: 0
name: id
type: INTEGER
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
- ordinalPosition: 1
name: data
type: VARCHAR
size: 30
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: null
lastCn: null
MATERIALIZED_VIEW:
value:
name: test_mat_view
schema: testdb
viewQuery: 'SELECT id AS id, data AS data FROM testdb.test_table'
entityType: MATERIALIZED_VIEW
externalTableFormat: null
externalTableSchema: null
externalTableLocationType: null
externalTableLocationPath: null
externalTableOptions: null
externalTableDownloadChunkSize: null
externalTableUploadMessageLimit: null
destination:
- ADP
- ADG
retentions: null
partitionOf: null
partitions: null
materializedDeltaNum: 9
materializedDataSource: ADB
fields:
- ordinalPosition: 0
name: id
type: INTEGER
size: null
accuracy: null
nullable: false
primaryOrder: 1
shardingOrder: 1
partitionOrder: null
defaultValue: null
- ordinalPosition: 1
name: data
type: VARCHAR
size: 30
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: '2022-11-23 13:33:01.033'
lastCn: null
PARTITIONED TABLE:
value:
name: partitioned_table
schema: testdb
viewQuery: null
entityType: TABLE
externalTableFormat: null
externalTableSchema: null
externalTableLocationType: null
externalTableLocationPath: null
externalTableOptions: null
externalTableDownloadChunkSize: null
externalTableUploadMessageLimit: null
destination:
- ADP
retentions: null
partitionOf: null
partitions:
- schema: testdb
name: partition_table
materializedDeltaNum: null
materializedDataSource: null
fields:
- ordinalPosition: 0
name: transaction_id
type: BIGINT
size: null
accuracy: null
nullable: false
primaryOrder: 1
shardingOrder: null
partitionOrder: 1
defaultValue: null
- ordinalPosition: 1
name: account_id
type: BIGINT
size: null
accuracy: null
nullable: false
primaryOrder: 2
shardingOrder: null
partitionOrder: 2
defaultValue: null
- ordinalPosition: 2
name: double_col
type: DOUBLE
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: null
lastCn: 21
PARTITION TABLE:
value:
name: partition_table
schema: testdb
viewQuery: null
entityType: TABLE
externalTableFormat: null
externalTableSchema: null
externalTableLocationType: null
externalTableLocationPath: null
externalTableOptions: null
externalTableDownloadChunkSize: null
externalTableUploadMessageLimit: null
destination:
- ADP
- ADP2
retentions: null
partitionOf:
schema: testdb
name: partitioned_table
ranges:
- leftValues:
- '1'
- '10'
rightValues:
- '5'
- '50'
- leftValues:
- '8'
- '80'
rightValues:
- null
- null
partitions: null
materializedDeltaNum: null
materializedDataSource: null
fields:
- ordinalPosition: 0
name: transaction_id
type: BIGINT
size: null
accuracy: null
nullable: false
primaryOrder: 1
shardingOrder: null
partitionOrder: 1
defaultValue: null
- ordinalPosition: 1
name: account_id
type: BIGINT
size: null
accuracy: null
nullable: false
primaryOrder: 2
shardingOrder: null
partitionOrder: 2
defaultValue: null
- ordinalPosition: 2
name: double_col
type: DOUBLE
size: null
accuracy: null
nullable: true
primaryOrder: null
shardingOrder: null
partitionOrder: null
defaultValue: null
materializedDeltaSyncDate: null
lastCn: 21
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-schema-entity
description: Get a list of attributes of the specified entity based on the information schema.
'/api/v1/datamarts/{datamart}/entities/{entity}/ddl':
get:
summary: Get Entity DDL script
responses:
'200':
description: ResultSet
content:
application/json:
schema:
type: object
properties:
ddlScript:
type: string
required:
- ddlScript
examples:
ResultSet:
value:
ddlScript: 'CREATE TABLE TESTDB.ALL_TYPES_TRANSACTIONS (TRANSACTION_ID BIGINT NOT NULL, ACCOUNT_ID BIGINT NOT NULL, DOUBLE_COL DOUBLE NULL, FLOAT_COL FLOAT NULL, VARCHAR_COL VARCHAR(36) NULL, BOOLEAN_COL BOOLEAN NULL, INT_COL INT NULL, BIGINT_COL BIGINT NULL, DATE_COL DATE NULL, TIMESTAMP_COL TIMESTAMP(6) NULL, TIME_COL TIME(5) NULL, UUID_COL UUID NULL, CHAR_COL CHAR(10) NULL, INT32_COL INT32 NULL, LINK_COL LINK NULL, PRIMARY KEY (TRANSACTION_ID, ACCOUNT_ID)) DISTRIBUTED BY (ACCOUNT_ID) DATASOURCE_TYPE (ADB, ADG, ADP, ADQM)'
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-schema-entity-ddl
description: |-
Returns current create entity SQL script:
- SQL+ DDL CREATE TABLE
- SQL+ DDL CREATE VIEW
- SQL+ DDL CREATE MATERIALIZED VIEW
parameters:
- $ref: '#/components/parameters/x-request-id'
tags:
- Schema
parameters:
- $ref: '#/components/parameters/datamart'
- $ref: '#/components/parameters/entity'
'/api/v1/datamarts/{datamart}/sync':
parameters:
- $ref: '#/components/parameters/datamart'
post:
summary: Sync ServiceDB
operationId: delete-sync-datamart
responses:
'200':
description: OK
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
description: Force sync ServiceDB servers
tags:
- Schema
parameters:
- $ref: '#/components/parameters/x-request-id'
/api/v1/versions:
get:
summary: Check Versions
tags:
- Check
parameters:
- $ref: '#/components/parameters/x-request-id'
responses:
'200':
description: ResultSet
content:
application/json:
schema:
type: object
properties:
versions:
type: array
items:
type: object
properties:
componentName:
type: string
version:
type: string
required:
- componentName
- version
required:
- versions
examples:
ResultSet:
value:
versions:
- componentName: query-execution-core
version: 5.8.0-SNAPSHOT
- componentName: tarantool
version: 2.10.0-31-g2d20ef4
- componentName: tarantool-cartridge
version: 2.7.5
- componentName: kafka-tarantool connector
version: 1.5.8-1
- componentName: adb cluster
version: 'PostgreSQL 9.4.24 (Greenplum Database 6.17.5 build 6.17.5_arenadata26-714.git18d86c5.el7) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit compiled on Sep 27 2021 11:01:47'
- componentName: kafka-greenplum connector writer (fdw)
version: 0.10.2
- componentName: kafka-greenplum connector reader (pxf)
version: '1.0'
- componentName: adp instance
version: 'PostgreSQL 13.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit'
- componentName: kafka-postgres connector reader
version: 0.4.0-SNAPSHOT
- componentName: kafka-postgres connector writer
version: 0.4.0-SNAPSHOT
- componentName: adqm cluster
version: 21.8.13.6
- componentName: kafka-clickhouse connector reader
version: 3.9.0-SNAPSHOT
- componentName: kafka-clickhouse connector writer
version: 3.9.0-SNAPSHOT
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-check-versions
description: Get actual versions of components used.
parameters: []
/api/v1/datamarts/all/statistics:
parameters: []
get:
summary: Get Statistics for All Datamarts
operationId: get-statistics
responses:
'200':
$ref: '#/components/responses/statistics'
'500':
$ref: '#/components/responses/500'
description: Get statistics information of all datamart's about query performance.
tags:
- Statistics
parameters:
- $ref: '#/components/parameters/x-request-id'
post:
summary: Reset Statistics for All Datamarts
operationId: delete-statistics
responses:
'200':
description: OK
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
description: Reset statistics information of all datamart's about query performance.
tags:
- Statistics
parameters:
- $ref: '#/components/parameters/x-request-id'
'/api/v1/datamarts/{datamart}/statistics':
get:
summary: Get Datamart statistics
responses:
'200':
$ref: '#/components/responses/statistics'
'500':
$ref: '#/components/responses/500'
operationId: get-datamart-statistics
description: Returns statistics information of all entities of a datamart specified about query performance.
parameters:
- $ref: '#/components/parameters/x-request-id'
tags:
- Statistics
parameters:
- $ref: '#/components/parameters/datamart'
post:
summary: Reset Datamart statistics
operationId: delete-datamart-statistics
responses:
'200':
description: OK
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
description: Reset statistics information of all entities of a datamart specified about query performance.
tags:
- Statistics
parameters:
- $ref: '#/components/parameters/x-request-id'
'/api/v1/datamarts/{datamart}/entities/{entity}/statistics':
get:
summary: Get Entity statistics
responses:
'200':
description: ResultSet
content:
application/json:
schema:
type: object
properties:
statistics:
anyOf:
- $ref: '#/components/schemas/null'
- $ref: '#/components/schemas/statistics'
required:
- statistics
examples:
ResultSet:
value:
statistics:
entityCatalog: null
entitySchema: testdb
entityName: test_table
readCount: 1
readDuration: 29
readErrorCount: 0
firstRead: '2022-08-18T06:52:59.643Z'
lastRead: '2022-08-18T06:52:59.643Z'
downloadCount: 1
downloadDuration: 1229
downloadErrorCount: 0
firstDownload: '2022-08-18T06:54:27.358Z'
lastDownload: '2022-08-18T06:54:27.358Z'
writeCount: 1
writeDuration: 624
writeErrorCount: 0
firstWrite: '2022-08-18T06:54:15.697Z'
lastWrite: '2022-08-18T06:54:15.697Z'
uploadCount: 1
uploadDuration: 6270
uploadErrorCount: 0
firstUpload: '2022-08-18T06:52:47.157Z'
lastUpload: '2022-08-18T06:52:47.157Z'
rowsCount: 16
rowsCountDelta: 9
ResultSet (empty):
value:
statistics: null
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
operationId: get-entity-statistics
description: Returns statistics information of specified entity about query performance.
parameters:
- $ref: '#/components/parameters/x-request-id'
tags:
- Statistics
parameters:
- $ref: '#/components/parameters/datamart'
- $ref: '#/components/parameters/entity'
post:
summary: Reset Entity statistics
operationId: delete-entity-statistics
responses:
'200':
description: OK
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
'500':
$ref: '#/components/responses/500'
description: Reset statistics information of specified entity about query performance.
tags:
- Statistics
parameters:
- $ref: '#/components/parameters/x-request-id'
security:
- {}
- bearerAuth: []
components:
headers:
x-request-id-required:
required: true
schema:
type: string
description: An identifier of the response (required)
example: ee7c7570-1eec-11ed-861d-0242ac120002
schemas:
'null':
title: OpenAPI 3.0 null-type ref
description: for adding nullability to a ref
enum:
- null
statistics:
title: statistics
x-stoplight:
id: b2qmox9049d0r
description: Model for statistics
type: object
properties:
entityCatalog:
type: string
description: always NULL
nullable: true
entitySchema:
type: string
entityName:
type: string
readCount:
type: integer
readDuration:
type: integer
readErrorCount:
type: integer
firstRead:
type: string
nullable: true
lastRead:
type: string
nullable: true
downloadCount:
type: integer
downloadDuration:
type: integer
downloadErrorCount:
type: integer
firstDownload:
type: string
nullable: true
lastDownload:
type: string
nullable: true
writeCount:
type: integer
writeDuration:
type: integer
writeErrorCount:
type: integer
firstWrite:
type: string
nullable: true
lastWrite:
type: string
nullable: true
uploadCount:
type: integer
uploadDuration:
type: integer
uploadErrorCount:
type: integer
firstUpload:
type: string
nullable: true
lastUpload:
type: string
nullable: true
rowsCount:
type: integer
description: 'always NULL for WET, RET'
nullable: true
rowsCountDelta:
type: integer
description: 'always NULL for WET, RET'
nullable: true
required:
- entityCatalog
- entitySchema
- entityName
- readCount
- readDuration
- readErrorCount
- firstRead
- lastRead
- downloadCount
- downloadDuration
- downloadErrorCount
- firstDownload
- lastDownload
- writeCount
- writeDuration
- writeErrorCount
- firstWrite
- lastWrite
- uploadCount
- uploadDuration
- uploadErrorCount
- firstUpload
- lastUpload
- rowsCount
- rowsCountDelta
query-request:
title: query-request
x-stoplight:
id: s1dmqlzyaeko7
type: object
description: Model for query-request
properties:
query:
type: string
description: The text of the query
queryId:
type: string
nullable: true
maxRowsToRead:
type: integer
async:
type: boolean
params:
type: array
description: An optional array of parameter values that is used when executing the query in prepared mode
items:
type: object
properties:
value:
nullable: true
type:
$ref: '#/components/schemas/data-type'
required:
- value
- type
required:
- query
delta:
type: object
properties:
deltaNum:
type: integer
deltaDate:
type: string
deltaServerDate:
type: string
cnFrom:
type: integer
cnTo:
type: integer
required:
- deltaNum
- deltaDate
- deltaServerDate
- cnFrom
- cnTo
title: delta
description: Model for delta
delta-hot:
title: delta-hot
x-stoplight:
id: sciiyc09h9xo2
type: object
description: Model for delta-hot
properties:
deltaNum:
type: integer
cnFrom:
type: integer
cnTo:
type: integer
nullable: true
cnMax:
type: integer
rollingBack:
type: boolean
writeOperationsFinished:
type: array
nullable: true
items:
type: object
properties:
tableName:
type: string
cnList:
type: array
items:
type: integer
required:
- tableName
- cnList
required:
- deltaNum
- cnFrom
- cnTo
- cnMax
- rollingBack
- writeOperationsFinished
data-type:
title: data-type
x-stoplight:
id: v1laoaz7peza7
type: string
description: Model for data-type
query-response:
title: query-response
x-stoplight:
id: s8pkbi99hfisv
type: object
description: Model for query-response
properties:
result:
type: array
items:
type: object
additionalProperties:
anyOf:
- type: string
nullable: true
- type: number
- type: integer
- type: boolean
description: 'The row as an object with dictionary of key/value pairs according to meta information, where key is a field name and value has any of string/number/integer/boolean type'
metadata:
type: array
items:
type: object
properties:
name:
type: string
type:
$ref: '#/components/schemas/data-type'
size:
type: integer
nullable: true
nullable:
type: boolean
required:
- name
- type
- size
- nullable
rows:
type: integer
queryId:
type: string
nullable: true
statistics:
type: object
required:
- elapsedTotalMs
- elapsedDbMs
properties:
elapsedTotalMs:
type: integer
elapsedDbMs:
type: integer
required:
- result
- metadata
- rows
- queryId
- statistics
async-query-response:
title: async-query-response
x-stoplight:
id: 713p4aaj8x2aa
type: object
description: Model for async-query-response
properties:
requestId:
type: string
message:
type: string
required:
- requestId
- message
delete-async-queries-request:
title: delete-async-queries-request
x-stoplight:
id: c96426e1f7969
type: object
properties:
running:
type: boolean
description: Model for delete-async-queries-request
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: JWT Authorization header using the Bearer scheme
examples: {}
parameters:
datamart:
name: datamart
in: path
schema:
type: string
example: test_db
required: true
description: The logical database on which the request is executed
requestId:
name: requestId
in: path
schema:
type: string
example: f77f4e22-7850-42ec-9aaa-982c5ac1bf29
required: true
description: Unique http request identifier
entity:
name: entity
in: path
required: true
schema:
type: string
example: test_table
description: The entity of datamart on which the request is executed
query-format:
name: format
in: query
required: false
schema:
type: string
enum:
- json
- plain
default: json
description: Defines the format of query result
x-request-id:
name: x-request-id
in: header
required: false
schema:
type: string
example: ee7c7570-1eec-11ed-861d-0242ac120002
description: Parameter providing unique http request identifier (optional)
requestBodies: {}
responses:
'500':
description: Internal Server Error
content:
application/json:
schema:
type: object
properties:
exceptionMessage:
type: string
required:
- exceptionMessage
examples:
ExceptionMessage:
value:
exceptionMessage: error
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
query:
description: ResultSet
content:
text/plain:
schema:
type: string
description: The result of a request as a plain text
examples:
ResultSet:
value: "id\tname\n0\ttest\n1\ttest1"
ResultSet (empty):
value: "id\tname"
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/query-response'
- $ref: '#/components/schemas/async-query-response'
examples:
ResultSet:
value:
result:
- name: test
id: 0
- name: test1
id: 1
metadata:
- name: id
type: BIGINT
size: null
nullable: false
- name: name
type: VARCHAR
size: -1
nullable: true
rows: 2
queryId: '12345'
statistics:
elapsedTotalMs: 34
elapsedDbMs: 20
ResultSet (empty):
value:
result: []
metadata:
- name: id
type: BIGINT
size: null
nullable: false
- name: name
type: VARCHAR
size: -1
nullable: true
rows: 0
queryId: null
statistics:
elapsedTotalMs: 34
elapsedDbMs: 20
async:
value:
requestId: 2f8b7a67-a17e-4f71-a0f0-22249c005d5c
message: Async operation started
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
statistics:
description: ResultSet
content:
application/json:
schema:
type: object
properties:
statistics:
type: array
items:
$ref: '#/components/schemas/statistics'
required:
- statistics
examples:
ResultSet:
value:
statistics:
- entityCatalog: null
entitySchema: testdb
entityName: test_table
readCount: 1
readDuration: 29
readErrorCount: 0
firstRead: '2022-08-18T06:52:59.643Z'
lastRead: '2022-08-18T06:52:59.643Z'
downloadCount: 1
downloadDuration: 1229
downloadErrorCount: 0
firstDownload: '2022-08-18T06:54:27.358Z'
lastDownload: '2022-08-18T06:54:27.358Z'
writeCount: 1
writeDuration: 624
writeErrorCount: 0
firstWrite: '2022-08-18T06:54:15.697Z'
lastWrite: '2022-08-18T06:54:15.697Z'
uploadCount: 1
uploadDuration: 6270
uploadErrorCount: 0
firstUpload: '2022-08-18T06:52:47.157Z'
lastUpload: '2022-08-18T06:52:47.157Z'
rowsCount: 16
rowsCountDelta: 9
ResultSet (empty):
value:
statistics: []
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
async-query-status:
description: ResultSet
content:
application/json:
schema:
type: object
properties:
status:
type: string
statusCode:
type: integer
datamart:
type: string
table:
type: string
topic:
type: string
nullable: true
query:
type: string
startTime:
type: string
errorTime:
type: string
nullable: true
errorCause:
type: string
nullable: true
required:
- status
- statusCode
- datamart
- table
- topic
- query
- startTime
- errorTime
- errorCause
examples:
query-status-run:
value:
status: running
statusCode: 0
datamart: testdb
table: tbl
topic: testdb_topic
query: INSERT INTO testdb.tbl SELECT * FROM testdb.upload_tbl
startTime: '2023-09-04 16:06:28'
errorTime: null
errorCause: null
query-status-error:
value:
status: error
statusCode: 2
datamart: testdb
table: tbl
topic: null
query: INSERT INTO testdb.tbl SELECT * FROM testdb.tbl2
startTime: '2023-09-04 16:13:45'
errorTime: '2023-09-04 16:13:46'
errorCause: 'Table[all_types] blocked: KeeperErrorCode = NodeExists'
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
async-query-status-404:
description: Request Not Found
content:
application/json:
schema:
type: object
properties:
exceptionMessage:
type: string
required:
- exceptionMessage
examples:
ExceptionMessage:
value:
exceptionMessage: 'Request [f77f4e22-7850-42ec-9aaa-982c5ac1bf29] not found'
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
async-queries-list:
description: ResultSet
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: string
datamart:
type: string
table:
type: string
status:
type: string
statusCode:
type: integer
startTime:
type: string
required:
- id
- datamart
- table
- status
- statusCode
- startTime
examples:
queries-list:
value:
- id: 2f8b7a67-a17e-4f71-a0f0-22249c005d5c
datamart: testdb
table: tbl
status: running
statusCode: 0
startTime: '2023-09-04 16:06:28'
- id: c0a8b9e8-34d0-4e2b-b35c-c7e6c812de45
datamart: testdb
table: tbl
status: error
statusCode: 2
startTime: '2023-09-04 16:13:45'
headers:
x-request-id:
$ref: '#/components/headers/x-request-id-required'
tags:
- name: SQL+ Query
description: defines endpoints based on queries in SQL+ format
- name: Deltas
description: defines endpoints based on operations with delta
- name: Schema
description: defines endpoints based on operations with information schema
- name: Check
description: defines endpoints based on check operations
- name: Statistics
description: defines endpoints based on statistics operations