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
Таблица 13.1 Описание ответа

Параметр

Тип данных

Описание

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": []
          }
      ]
   ,
]
Таблица 13.2 Описание ответа

Параметр

Тип данных

Описание

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}
Таблица 13.3 Параметры запроса

Параметр

Тип данных

Описание

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": []
          }
      ]
   ,
]
Таблица 13.4 Описание ответа

Параметр

Тип данных

Описание

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}
Таблица 13.5 Параметры запроса

Параметр

Тип данных

Описание

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"
    }
  }
}
Таблица 13.6 Параметры запроса

Параметр

Тип данных

Описание

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"
},
Таблица 13.7 Описание ответа

Параметр

Тип данных

Описание

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
                            }
                        }
                    ]
                }
            ]
        }
    },
Таблица 13.8 Описание ответа

Параметр

Тип данных

Описание

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"
          }
      }
  }
]
Таблица 13.9 Описание ответа

Параметр

Тип данных

Описание

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"
          }
      }
  }
]
Таблица 13.10 Описание ответа

Параметр

Тип данных

Описание

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"
        }
    ]
}
Таблица 13.11 Описание ответа

Параметр

Тип данных

Описание

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"
    }
  }
}
Таблица 13.12 Параметры запроса

Параметр

Тип данных

Описание

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"
        }
    }
}
Таблица 13.13 Описание ответа

Параметр

Тип данных

Описание

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"
            ]
        }
      ]
    }
  }
}
Таблица 13.14 Описание ответа

Параметр

Тип данных

Описание

server

string

данные сервера

mnemonic

string

мнемоника

instance

string

экземпляр сервера

indexes

string

данные индекса

connections

array

массив связей

source

string

название источника

table

string

название таблицы

fields

string

список полей модели

conditions

array

массив условий фильтрации записей