13. Описание эндпоинтов
13.1. GET /ping
Метод проверяет доступность сервера
GET /ping
URL
http://localhost:8080/smevql/api/v1/ping
Запрос отправляется без параметров
Пример запроса:
curl -X 'GET' \
'http://localhost:8080/smevql/api/v1/ping' \
-H 'accept: plain/text'
Пример ответа:
pong
Параметр |
Тип данных |
Описание |
|---|---|---|
pong |
string |
Текстовый ответ при успешном отклике сервера |
13.2. GET /states
Метод выводит состояния стейт-машины на данный момент
GET /states
URL
http://localhost:8080/smevql/api/v1/states
Запрос отправляется без параметров
Пример запроса:
curl -X 'GET' \
'http://localhost:8080/smevql/api/v1/states' \
-H 'accept: application/json'
Пример ответа:
[
{
"model": "book",
"states": [
{
"state": "appointment",
"attributes": [
{
"name": "type",
"value": "APPOINTMENT"
}
],
"initial": true,
"delete": false,
"static": false
},
{
"state": "cancel",
"attributes": [
{
"name": "type",
"value": "CANCEL"
}
],
"initial": false,
"delete": false,
"static": false
},
{
"state": "observation",
"attributes": [
{
"name": "type",
"value": "D_OBSERVATION"
}
],
"initial": false,
"delete": false,
"static": false
},
{
"state": "cancelled",
"attributes": [
{
"name": "type",
"value": "Cancel"
}
],
"initial": false,
"delete": false,
"static": false
},
{
"state": "deleted",
"attributes": [],
"initial": false,
"delete": true,
"static": false
}
],
"events": [
{
"event": "book",
"from": [
"appointment"
],
"to": "observation",
"hooks": [],
"confirm": null,
"updatable": false,
"updatable_attributes": []
},
{
"event": "observation",
"from": [
"appointment"
],
"to": "observation",
"hooks": [],
"confirm": null,
"updatable": false,
"updatable_attributes": []
},
{
"event": "cancel",
"from": [
"appointment",
"observation"
],
"to": "cancel",
"hooks": [],
"confirm": null,
"updatable": false,
"updatable_attributes": []
},
{
"event": "delete",
"from": [
"appointment",
"observation",
"cancel"
],
"to": "deleted",
"hooks": [],
"confirm": null,
"updatable": false,
"updatable_attributes": []
}
]
,
]
Параметр |
Тип данных |
Описание |
|---|---|---|
model |
string |
имя модели |
state |
string |
название состояния |
attributes |
array |
набор атрибутов, описывающих состояние |
name |
string |
имя атрибута |
value |
string |
значение атрибута для описываемого состояния |
initial |
boolean |
возможность создания записи |
events |
array |
список событий изменения состояний |
event |
string |
событие |
from |
string |
массив состояний из которых возможен вызов события |
to |
string |
в какое состояние переводится объект после события |
13.3. GET /states/{model}
Возвращает информацию о модели
GET /states/{model}
URL
http://localhost:8080/smevql/api/v1/states/{model}
Параметр |
Тип данных |
Описание |
|---|---|---|
model |
string |
имя модели |
Пример запроса:
curl -X 'GET' \
'http://localhost:8080/smevql/api/v1/states/{model}' \
-H 'accept: application/json'
Пример ответа:
[
{
"model": "book",
"states": [
{
"state": "appointment",
"attributes": [
{
"name": "type",
"value": "APPOINTMENT"
}
],
"initial": true,
"delete": false,
"static": false
},
{
"state": "cancel",
"attributes": [
{
"name": "type",
"value": "CANCEL"
}
],
"initial": false,
"delete": false,
"static": false
},
{
"state": "observation",
"attributes": [
{
"name": "type",
"value": "D_OBSERVATION"
}
],
"initial": false,
"delete": false,
"static": false
},
{
"state": "cancelled",
"attributes": [
{
"name": "type",
"value": "Cancel"
}
],
"initial": false,
"delete": false,
"static": false
},
{
"state": "deleted",
"attributes": [],
"initial": false,
"delete": true,
"static": false
}
],
"events": [
{
"event": "book",
"from": [
"appointment"
],
"to": "observation",
"hooks": [],
"confirm": null,
"updatable": false,
"updatable_attributes": []
},
{
"event": "observation",
"from": [
"appointment"
],
"to": "observation",
"hooks": [],
"confirm": null,
"updatable": false,
"updatable_attributes": []
},
{
"event": "cancel",
"from": [
"appointment",
"observation"
],
"to": "cancel",
"hooks": [],
"confirm": null,
"updatable": false,
"updatable_attributes": []
},
{
"event": "delete",
"from": [
"appointment",
"observation",
"cancel"
],
"to": "deleted",
"hooks": [],
"confirm": null,
"updatable": false,
"updatable_attributes": []
}
]
,
]
Параметр |
Тип данных |
Описание |
|---|---|---|
model |
string |
имя модели |
state |
string |
название состояния |
attributes |
array |
набор атрибутов, описывающих состояние |
name |
string |
имя атрибута |
value |
string |
значение атрибута для описываемого состояния |
initial |
boolean |
возможность создания записи |
events |
array |
список событий изменения состояний |
event |
string |
событие |
from |
string |
список состояний из которых возможен вызов события |
to |
string |
в какое состояние переводится объект после события |
13.4. POST /states/{model}/{event}
Метод обновляет данные состояния модели по указанному событию
Метод
POST /states/{model}/{event}
URL
http://localhost:8080/smevql/api/v1/states/{model}/{event}
Параметр |
Тип данных |
Описание |
|---|---|---|
model |
string |
имя модели |
event |
string |
событие |
В теле запроса нужно заполнить поля:
{
"state": {
"conditions": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
},
},
"credentials": {
"system": {
"mnemonic": "string",
"instance_id": "string",
"user_id": "string"
},
"request": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sub_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"purpose_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"audit": true,
"audit_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"audit_token": "string"
}
}
}
Параметр |
Тип данных |
Описание |
|---|---|---|
state |
string |
название состояния |
conditions |
string |
указывается условие фильтрации записей (опционально) |
credentials |
array |
системные реквизиты |
mnemonic |
string |
мнемоника |
instance_id |
string |
идентификатор экземпляра |
user_id |
string |
идентификатор пользователя |
request |
array |
параметры запроса |
id |
string |
идентификатор запроса |
sub_id |
string |
идентификатор подзапроса |
name |
string |
имя запроса |
purpose_id |
string |
идентификатор события, породившего запрос |
audit |
boolean |
признак необходимости запроса аудита |
audit_id |
string |
идентификатор аудита |
audit_token |
string |
токен аудита |
Пример запроса:
curl -X 'POST' \
'http://localhost:8080/smevql/api/v1/states/{model}/{event}' \
-H 'accept: plain/text' \
-H 'Content-Type: application/json' \
-d '{
"state": {
"conditions": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
},
"payload": {
"book_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"patient_id": "string",
"booking_type": "string",
"case_number": "string",
"preliminary_reservation": true,
"email": "string",
"mobile_phone": "string",
"referral_id": "string",
"cards_id": "string"
}
},
"credentials": {
"system": {
"mnemonic": "string",
"instance_id": "string",
"user_id": "string"
},
"request": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sub_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"purpose_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"audit": true,
"audit_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"audit_token": "string"
}
}
}'
Пример ответа:
{
"response": {
"state": "booked"
},
Параметр |
Тип данных |
Описание |
|---|---|---|
state |
string |
обновленный статус события |
13.5. GET /model
Метод выводит массив моделей сервера
GET /model
URL
http://localhost:8080/smevql/api/v1/model
Запрос отправляется без параметров
Пример запроса:
curl -X 'GET' \
'http://localhost:8080/smevql/api/v1/model' \
-H 'accept: application/json'
Пример ответа:
"resources": {
"ticket1": {
"name": "ticket",
"description": "ticket",
"version": "1.0",
"available_versions": [
"1.0"
],
"fields": {
"id": {
"name": "id",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"passengerid": {
"name": "passengerid",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"tripid": {
"name": "tripid",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"number": {
"name": "number",
"type": [
"number",
"LONG"
],
"length": 0,
"nullable": "NULL",
"key": "PRIMARY"
},
"bycard": {
"name": "bycard",
"type": [
"boolean",
"BOOLEAN"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"price": {
"name": "price",
"type": [
"number",
"DOUBLE"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"sold": {
"name": "sold",
"type": [
"string",
"TIMESTAMP"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
}
},
"connections": {
"has_many": [],
"belongs_to": [
{
"passenger1": {
"primary_key": [
"id"
],
"foreign_key": [
"passengerid"
]
}
},
{
"trip1": {
"primary_key": [
"id"
],
"foreign_key": [
"tripid"
]
}
}
]
},
"restrictions": {
"personal_data": []
},
"conditions": {
"allowed": [],
"denied": [],
"always": []
},
"extract": {
"source": [
{
"name": "prostore",
"table": "smevql_test.ticket1",
"conditions": [
{
"eq": {
"field": "sold",
"extract": {
"source": "prostore",
"table": "smevql_test.ticket1",
"key": "sold",
"is": true
},
"isFallback": false
}
}
]
}
]
}
},
Параметр |
Тип данных |
Описание |
|---|---|---|
name |
string |
название модели |
version |
string |
текущая версия модели |
available_versions |
string |
доступные версии модели |
fields |
string |
список полей модели |
13.6. GET /model/{model}
Метод выводит данные выбранной модели
GET /model/{model}
URL
http://localhost:8080/smevql/api/v1/model/{model}
Запрос отправляется без параметров
Пример запроса:
curl -X 'GET' \
'http://localhost:8080/smevql/api/v1/model/{model}' \
-H 'accept: application/json'
Пример ответа:
[
"ticket1": {
"name": "ticket",
"description": "ticket",
"version": "1.0",
"available_versions": [
"1.0"
],
"fields": {
"id": {
"name": "id",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"passengerid": {
"name": "passengerid",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"tripid": {
"name": "tripid",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"number": {
"name": "number",
"type": [
"number",
"LONG"
],
"length": 0,
"nullable": "NULL",
"key": "PRIMARY"
},
"bycard": {
"name": "bycard",
"type": [
"boolean",
"BOOLEAN"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"price": {
"name": "price",
"type": [
"number",
"DOUBLE"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"sold": {
"name": "sold",
"type": [
"string",
"TIMESTAMP"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
}
}
}
]
Параметр |
Тип данных |
Описание |
|---|---|---|
name |
string |
название модели |
version |
string |
текущая версия модели |
available_versions |
string |
доступные версии модели |
fields |
string |
список полей модели |
13.7. GET /model/{model}/{version}
Метод выводит версию выбранной модели
GET /model/{model}/{version}
URL
http://localhost:8080/smevql/api/v1/model/{model}/{version}
Запрос отправляется без параметров
Пример запроса:
curl -X 'GET' \
'http://localhost:8080/smevql/api/v1/model/{model}/{version}' \
-H 'accept: application/json'
Пример ответа:
[
"ticket1": {
"name": "ticket",
"description": "ticket",
"version": "1.0",
"available_versions": [
"1.0"
],
"fields": {
"id": {
"name": "id",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"passengerid": {
"name": "passengerid",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"tripid": {
"name": "tripid",
"type": [
"string",
"STRING"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"number": {
"name": "number",
"type": [
"number",
"LONG"
],
"length": 0,
"nullable": "NULL",
"key": "PRIMARY"
},
"bycard": {
"name": "bycard",
"type": [
"boolean",
"BOOLEAN"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"price": {
"name": "price",
"type": [
"number",
"DOUBLE"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
},
"sold": {
"name": "sold",
"type": [
"string",
"TIMESTAMP"
],
"length": 0,
"nullable": "NULL",
"key": "NONE"
}
}
}
]
Параметр |
Тип данных |
Описание |
|---|---|---|
name |
string |
название модели |
version |
string |
текущая версия модели |
available_versions |
string |
доступные версии модели |
fields |
string |
список полей модели |
13.8. GET /sources
Метод выводит массив источников сервера
GET /sources
URL
http://localhost:8080/smevql/api/v1/sources
Запрос отправляется без параметров
Пример запроса:
curl -X 'GET' \
'http://localhost:8080/smevql/api/v1/sources' \
-H 'accept: application/json'
Пример ответа:
{
"prostore": [
{
"version": "1.0",
"adapter": "prostore",
"protocol": "http",
"host": "prostore",
"port": 9090,
"path": "api/v1/datamarts/query?format=json",
"headers": [
{
"content-type": "application/json"
}
],
"threads-count": 4,
"connection-timeout": 30,
"type": "rest"
}
],
"smevql": [
{
"version": "1.0",
"adapter": "smevql",
"protocol": "http",
"host": "smevql-server",
"port": 8080,
"path": "data?format=json",
"headers": [
{
"content-type": "application/json"
}
],
"threads-count": 4,
"connection-timeout": 30,
"type": "rest"
}
],
"csv-uploader": [
{
"version": "1.0",
"adapter": "confirm",
"protocol": "http",
"host": "csv-uploader",
"port": 8080,
"path": "version?format=json",
"headers": [
{
"content-type": "application/json"
}
],
"threads-count": 4,
"connection-timeout": 30,
"type": "rest"
}
]
}
Параметр |
Тип данных |
Описание |
|---|---|---|
version |
string |
версия |
adapter |
string |
имя адаптера |
protocol |
string |
протокол передачи данных |
host |
string |
хост сервера |
port |
int |
порт сервера |
path |
string |
путь к источнику |
headers |
array |
заголовки |
threads-count |
int |
кол-во потоков |
connection-timeout |
int |
время соединения |
type |
string |
тип взаимодействия с источником |
13.9. POST /data
Запрашивает данные ресурсов в синхронном режиме
POST /data
URL
http://localhost:8080/smevql/api/v1/data
При запросе необходимо указать Headers:
Key: content-type
Value: application/json
В теле запроса нужно заполнить поля:
{
"query": {
"ticket": {
"conditions": {},
"attributes": [
"id",
"price"
]
}
},
"credentials": {
"system": {
"mnemonic": "3fa45f64-5717-4562-b3fc-2c963f66afa6",
"instance_id": "4fa45f64-5717-4562-b3fc-2c963f66afa6",
"user_id": "5fa45f64-5717-4562-b3fc-2c963f66afa6"
},
"request": {
"id": "6fa45f64-5717-4562-b3fc-2c963f66afa6",
"sub_id": "7fa45f64-5717-4562-b3fc-2c963f66afa6",
"name": "query",
"purpose_id": "8fa45f64-5717-4562-b3fc-2c963f66afa6",
"audit": true,
"audit_id": "9fa45f64-5717-4562-b3fc-2c963f66afa6",
"audit_token": "b3fc"
},
"signature": {
"digest": "digest",
"signature": "signature"
}
}
}
Параметр |
Тип данных |
Описание |
|---|---|---|
query |
array |
атрибут запроса данных внутри указывается название сущности, данные которой нужно получить |
conditions |
string |
указывается условие фильтрации записей (опционально) |
attributes |
array |
атрибуты выборки данных |
credentials |
object |
реквизиты |
mnemonic |
string |
мнемоника системы |
instance_id |
string |
идентификатор экземпляра |
user_id |
string |
идентификатор пользователя |
request |
object |
параметры запроса |
id |
string |
идентификатор запроса |
sub_id |
string |
идентификатор подзапроса |
name |
string |
имя запроса |
purpose_id |
string |
идентификатор события, породившего запрос |
audit |
boolean |
возможность аудита |
audit_id |
string |
идентификатор аудита |
audit_token |
string |
токен аудита |
signature |
object |
подпись |
digest |
string |
дайджест подписи (не заполняется) |
signature |
string |
подпись (не заполняется) |
Пример запроса:
curl -X 'POST' \
'http://localhost:8080/smevql/api/v1/data' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"query": {
"ticket": {
"conditions": {},
"attributes": [
"id",
"price"
]
}
},
"credentials": {
"system": {
"mnemonic": "3fa45f64-5717-4562-b3fc-2c963f66afa6",
"instance_id": "3fa45f64-5717-4562-b3fc-2c963f66afa6",
"user_id": "3fa45f64-5717-4562-b3fc-2c963f66afa6"
},
"request": {
"id": "6fa45f64-5717-4562-b3fc-2c963f66afa6",
"sub_id": "7fa45f64-5717-4562-b3fc-2c963f66afa6",
"name": "query",
"purpose_id": "8fa45f64-5717-4562-b3fc-2c963f66afa6",
"audit": true,
"audit_id": "9fa45f64-5717-4562-b3fc-2c963f66afa6",
"audit_token": "b3fc"
},
"signature": {
"digest": "digest",
"signature": "signature"
}
}
}'
Пример ответа:
{
"response": {
"ticket": [
{
"price": 298.8082301905419,
"id": "3424f5b3-e337-4d0d-a046-a1c491ab3300"
},
{
"price": 67.79323025646744,
"id": "ad14fce2-04f5-45b8-b430-3ff9efb5d4ca"
}
]
},
"credentials": {
"system": {
"mnemonic": "3fa45f64-5717-4562-b3fc-2c963f66afa6",
"instance_id": "4fa45f64-5717-4562-b3fc-2c963f66afa6",
"user_id": "5fa45f64-5717-4562-b3fc-2c963f66afa6"
},
"request": {
"id": "6fa45f64-5717-4562-b3fc-2c963f66afa6",
"sub_id": "7fa45f64-5717-4562-b3fc-2c963f66afa6",
"name": "query",
"purpose_id": "8fa45f64-5717-4562-b3fc-2c963f66afa6",
"audit": true,
"audit_id": "9fa45f64-5717-4562-b3fc-2c963f66afa6",
"audit_token": "b3fc"
},
"signature": {
"digest": "digest",
"signature": "signature"
},
"response": {
"id": "ec26f676-5931-11ee-9044-eb1795d841ef",
"sub_id": "ec26f677-5931-11ee-9044-eb1795d841ef",
"started_at": "2023-09-22 13:22:24.456 +0300",
"finished_at": "2023-09-22 13:22:24.530 +0300"
}
}
}
Параметр |
Тип данных |
Описание |
|---|---|---|
response |
object |
объект с описанием ресурсов, содержащих массивы данных запросов |
resourse_data |
array |
массивы данных, запрашиваемых ресурсов (имя объекта) |
13.10. GET /server/indexes/required
Формирует рекомендации по индексам на основании описания моделей
GET /server/indexes/required
URL
http://localhost:8080/smevql/api/v1/server/indexes/required
Запрос отправляется без параметров
Пример запроса:
curl -X 'GET' \
'http://localhost:8080/smevql/api/v1/server/indexes/required' \
-H 'accept: application/json'
Пример ответа:
{
"server": {
"mnemonic": "00000000-d759-11ed-84c6-47c59cf9ecf6",
"instance": "00000001-d759-11ed-84c6-47c59cf9ecf6"
},
"indexes": {
"connections": [
{
"source": "prostore",
"table": "smevql_test.ticket1",
"fields": [
"passengerid",
"tripid"
]
}
],
"conditions": [
{
"source": "prostore",
"table": "smevql_test.passenger1",
"fields": [
"lastname",
"firstname",
"code"
]
},
{
"source": "prostore",
"table": "mvd.vehicleregdata",
"fields": [
"vehiclevin",
"vehiclevin2"
]
}
]
}
}
}
Параметр |
Тип данных |
Описание |
|---|---|---|
server |
string |
данные сервера |
mnemonic |
string |
мнемоника |
instance |
string |
экземпляр сервера |
indexes |
string |
данные индекса |
connections |
array |
массив связей |
source |
string |
название источника |
table |
string |
название таблицы |
fields |
string |
список полей модели |
conditions |
array |
массив условий фильтрации записей |