API Выдачи талонов v2¶
СТАРОЕ
Общие сведения¶
API работает по протоколу HTTP на порту, сконфигурированом для службы центрального сервера СУО (по умолчанию 82). Запросы к API выполняются через HTTP-методы GET/POST. Тело ответа имеет формат JSON, кодировку UTF-8.
- Доступ к API возможен в двух случаях:
Запрос выполняется с HTTP-заголовком Token, в котором указывается токен вашей системы, выданный вам администратором центрального сервера СУО. Если токен некорректный, сервер вернет ответ с HTTP-статусом 401 Unauthorized.
Запрос (без заголовка Token).Если в конфигурации СУО отключена возможность выполнять запросы без заголовка Token, сервер вернет ответ с HTTP-статусом 401 Unauthorized.
Формат ответа об ошибке
- Ответ об ошибке приходит с HTTP-статусом 4xx или 5xx в теле ответа приходит объект ErrorResponse.
Ответ с HTTP-статусом 4xx означает, что вероятно проблема на стороне интегратора, или клиента.
Ответ с HTTP-статусом 5xx означает, что проблема произошла не повене клиента и не по вине интегратора, нужно обратится к владельцам системы с текстом ошибки.
Примечание
Если приходит UserMessage, то его обязательно нужно показать клиенту, если его нет, можно сказать общим планом, что что-то пошло не так. Если приходит Message, значит интегратору нужно обратить на него внимание, если его нет, то никак не нужно реагировать
"ErrorResponse": {
"UserMessage": "string", //Сообщение для пользователя
"Message": "string" //Сообщение для интеграторов
}
Пример ответа на непринятый запрос
// POST /api/1/ticketregistration/login/userTest HTTP/1.1
// Token: a0adba90-b8a7-4fcd-9f73-787ae2eed727
// Content-Length: 0
// Host: center.suo.club:82
// HTTP/1.1 401 Unauthorized
// Content-Length: 138
// Content-Type: application/json; charset=utf-8
// Server: Microsoft-HTTPAPI/2.0
// Access-Control-Allow-Origin: *
// Date: Fri, 07 Jun 2019 10:01:21 GMT
{
"UserMessage":null,
"Message":"Внешняя система с токеном a0adba90-b8a7-4fcd-9f73-787ae2eed727 не найдена."
}
GET /api/1/config/servers¶
Возвращает список филиалов центрального сервера СУО.
Формат ответа
ServerInfo[]
Пример запроса
http://center.suo.club:82/api/1/config/servers
Пример ответа
[
{
"Id": "51943aec-de2b-2bb8-d6aa-889ab434d9ca",
"Name": "30 лет Победы",
"IsConnected": false,
"WrongProtocol": false,
"OrganizationName": "Тюменский филиал №3 ГАУ ТО \"МФЦ\"",
"OrganizationFullName": "Тюменский филиал №3 ГАУ ТО \"МФЦ\"",
"OrganizationAddress": "Тюменская обл., г. Тюмень, ул. 30 лет Победы, 95, корпус 2"
},
{
"Id": "80c42d23-f32a-d57f-61eb-8292129f4ba7",
"Name": "Армизонское",
"IsConnected": false,
"WrongProtocol": false,
"OrganizationName": "Армизонский филиал ГАУ ТО \"МФЦ\"",
"OrganizationFullName": "Армизонский филиал ГАУ ТО \"МФЦ\"",
"OrganizationAddress": "Тюменская обл., с. Армизонское, ул. Ленина, 5"
},
{
"Id": "1991f64a-df2a-7995-a2ae-07d4f0b004de",
"Name": "Аромашево",
"IsConnected": false,
"WrongProtocol": false,
"OrganizationName": "Аромашевский филиал ГАУ ТО \"МФЦ\"",
"OrganizationFullName": "Аромашевский филиал ГАУ ТО \"МФЦ\"",
"OrganizationAddress": "Тюменская обл., с. Аромашево, ул. Ленина, 166"
}
]
POST /api/2/ticketregistration/session/open¶
Открывает сеанс (если указан VisitorIdentity, то сеанс будет привязан к нему)
Заголовки
Token (опциональный) - Идентификатор внешней системы
Content-Type (опциональный) - application/json
Параметры
VisitorIdentity (опциональный) - идентификатор посетителя (передаётся как тело запроса)
Формат ответа
Guid – идентификатор сессии
Пример запроса
// POST /api/2/ticketregistration/session/open HTTP/1.1
// Token: e13de302-bf6c-c5c4-d48f-b6d18d3b2d95
// Content-Length: 15
// Content-Type: application/json
// Host: center.suo.club:82
{
"VisitorIdentity": "UserIdentity1"
}
Пример ответа
// HTTP/1.1 200 OK
// Content-Type: application/json; charset=utf-8
// Content-Length: 38
"c3347c8d-5532-4007-a23e-78e125dbde6d"
POST /api/2/ticketregistration/session/close¶
Закрывает сеанс не сохраняя данные (отменяет действия)
Заголовки
Authorization - Идентификатор сессии из метода /session/open
Пример запроса
POST /api/2/ticketregistration/session/close HTTP/1.1
Authorization: 551d47d1-a339-4a95-b1d8-02ff7ff09f23
Content-Length: 0
Пример ответа
HTTP/1.1 200 OK
POST /api/2/ticketregistration/ticket/book¶
Предварительная запись на получение услуги.
Заголовки
Authorization - Идентификатор сессии
Content-Type - application/json
Параметры
ServerId - идентификатор филиала из метода /api/1/config/servers
TimeSlotId - Идентификатор слота времени из метода /schedule/days/
MenuLinkId - идентификатор элемента меню (услуги), на который необходимо записаться
Multiplier (опциональный) -значение множителя – количество дел по услуге, на которое необходимо записаться. Запрашивается у посетителя в соответствии с настройками в меню. По умолчанию – 1.
TicketId (опциональный) идентификатор талона. Необходимо указывать при регистрации мульти-талона
Формат ответа
ReservationInfo
Пример запроса
// POST /api/2/ticketregistration/ticket/book HTTP/1.1
// Authorization: ff93a3e5-fb6c-4191-af37-18dd2c56b3a5
// Content-Length: 139
// Content-Type: application/json
{
"ServerId": "78e721bb-c691-7d58-1db5-97882ad01310",
"TimeSlotId":"2F1550143104E115",
"MenuLinkId":"f25115a2-8897-e124-e90d-ec4fa98d8414"
}
Пример ответа
// HTTP/1.1 200 OK
// Content-Type: application/json; charset=utf-8
// Content-Length: 422
{
"TicketId": "3cd43946-a040-4699-9b5e-a8580c8faf8d",
"Products": [
{
"Id": "8099e1cd-03ec-42ad-b6a4-a0956e78b96d",
"Product": {
"Id": "a64adadc-0727-8829-3d58-cdcb361108c4",
"Name": "mfc38_Тест",
"IntegrationId": null
}
}
],
"ReservationId": "4a39dcf5-ea2e-48a6-a020-2fd7f70da824",
"RequestedFields": [
{
"Required": true,
"Mask": "+7(999) 999 99 99",
"RegularExpression": "",
"Id": "02a5d8fc-16a4-48a8-b389-9c145f544901",
"Name": "Телефон"
}
]
}
POST /api/2/ticketregistration/ticket/alive¶
Выдача талона в живую очередь
Заголовки
Authorization - Идентификатор сессии
Content-Type - application/json
Параметры
ServerId - идентификатор филиала из метода /api/1/config/servers
MenuLinkId - идентификатор элемента меню (услуги или маршрута), на который необходимо записаться
Multiplier (опциональный) - значение множителя – количество дел по услуге, на которое необходимо записаться. Запрашивается у посетителя в соответствии с настройками в меню. По умолчанию – 1.
TicketId (опциональный) - идентификатор талона. Необходимо указывать при регистрации мульти-талона
Формат ответа
ReservationInfo
Пример запроса
// POST /api/2/ticketregistration/ticket/alive HTTP/1.1
// Authorization: ff93a3e5-fb6c-4191-af37-18dd2c56b3a5
// Content-Length: 106
// Content-Type: application/json
{
"ServerId":"78e721bb-c691-7d58-1db5-97882ad01310",
"MenuLinkId":"cc03cf22-29bc-2199-681f-61fcf4e63b31"
}
Пример ответа
// HTTP/1.1 200 OK
// Content-Length: 422
{
"TicketId": "acd43946-a040-4699-9b5e-a8580c8faf8d",
"Products": [
{
"Id": "a099e1cd-03ec-42ad-b6a4-a0956e78b96d",
"Product": {
"Id": "a64adadc-0727-8829-3d58-cdcb361108c4",
"Name": "mfc38_Тест",
"IntegrationId": null
}
}
],
"ReservationId": "aa39dcf5-ea2e-48a6-a020-2fd7f70da824",
"RequestedFields": [
{
"Required": true,
"Mask": "+7(999) 999 99 99",
"RegularExpression": "",
"Id": "02a5d8fc-16a4-48a8-b389-9c145f544901",
"Name": "Телефон"
}
]
}
POST /api/2/ticketregistration/fields/add¶
Добавляет дополнительные сведению к резерву из метода /ticket/alive или /ticket/book
Заголовки
Authorization - Идентификатор сессии
Content-Type - application/json
Параметры
ReservationId - идентификатор резерва из метода /ticket/alive или /ticket/book
DataFields - данные о посетителе. Запрашиваются в соответствии результата резерва ReservationInfo
Ответ Forbidden¶
Ответ содержащий уточнение, какие поля нужно ввести (список может расширится)
Нужно запросить недостающие поля у пользователя, и выполнить запрос на добавления
{
"ReservationId": "Guid" // Идентификатор резерва
"RequestedFields": "RequestedField": [] // Поля доп. Сведений, который нужно запросить у пользователя (список расширяется, можно у пользователя спросить только новые поля, но прислать нужно все)
}
Или же может прийти стандартный структура ошибки
{
"UserMessage": "string",
"Message": "string"
}
Пример запроса
// POST /api/2/ticketregistration/fields/add HTTP/1.1
// Authorization: ff93a3e5-fb6c-4191-af37-18dd2c56b3a5
// Content-Length: 153
// Content-Type: application/json
{
"ReservationId":"4a39dcf5-ea2e-48a6-a020-2fd7f70da824",
"DataFields":[
{
"FieldId":"02a5d8fc-16a4-48a8-b389-9c145f544901",
"Value":"77777777777"
}]
}
Пример ответа
HTTP/1.1 200 OK
Content-Length: 0
POST /api/2/ticketregistration/ticket/reservation/cancel¶
Отменяет резев.
Заголовки
Authorization - Идентификатор сессии
Content-Type - application/json
Параметры
ReservationId - идентификатор резерва (передаётся в теле запроса)
Пример запроса
// POST /api/2/ticketregistration/ticket/reservation/cancel HTTP/1.1
// Authorization: ff93a3e5-fb6c-4191-af37-18dd2c56b3a5
// Content-Length: 55
// Content-Type: application/json
{
"ReservationId":"9be16f28-cb36-4694-96ac-2e1651a901c9"
}
Пример ответа
HTTP/1.1 200 OK
Content-Length: 0
POST /api/2/ticketregistration/session/confirm¶
Применяет все изменения в рамках сессии (в том числе, подтверждает талоны с резервами, и выполняет отмену талонов)
Заголовки
Authorization - Идентификатор сессии
Формат ответа
TicketSummary[] – список изменённых талонов
Пример запроса
POST /api/2/ticketregistration/session/confirm HTTP/1.1
Authorization: 681d200a-0053-4e90-8cc3-f5b60dfd99a1
Content-Length: 0
Пример ответа
// HTTP/1.1 200 OK
// Content-Type: application/json; charset=utf-8
// Content-Length: 648
[
{
"Id": "7c959019-323b-4051-9f02-08a89c939877",
"FullNumber": "П3",
"PinCode": "533240",
"State": 1,
"Products": [
{
"State": 13,
"StartTime": "2023-12-18T08:30:00",
"Fields": [
{
"Id": "566ff62a-0c85-48e3-ac76-88cffc3fe201",
"Value": "77777777777",
"Field": {
"Id": "02a5d8fc-16a4-48a8-b389-9c145f544901",
"Name": "Телефон"
}
}
],
"Id": "bdc271a9-ffcb-4991-af3a-0378f64078bc",
"Product": {
"Id": "a64adadc-0727-8829-3d58-cdcb361108c4",
"Name": "mfc38_Тест",
"IntegrationId": null
}
}
],
"ActivationAvailability": {
"State": 2,
"ErrorMessage": "Талон записан не на сегодня",
"ShowQuestionBeforeActivation": null
},
"ServerId": "78e721bb-c691-7d58-1db5-97882ad01310"
}
]
POST /api/2/ticketregistration/ticket/cancel¶
Отменяет талон (в реальности отмена будет в момент вызова метода session/confirm)
Заголовки
Authorization - Идентификатор сессии
Content-Type - application/json
Параметры
TicketId - идентификатор талона (передаётся в теле запроса)
Формат ответа
TicketSummary – талон который будет отменён при сохранении транзакции
Пример запроса
// POST /api/2/ticketregistration/ticket/cancel HTTP/1.1
// Authorization: 536ab141-3963-4b55-b502-231e5f277a1f
// Content-Length: 49
// Content-Type: application/json
{
"TicketId":"5d70594a-617c-45be-8002-174d225e0725"
}
Пример ответа
// HTTP/1.1 200 OK
// Content-Type: application/json; charset=utf-8
// Content-Length: 646
{
"Id": "80dae8bc-67a6-4a92-9640-5d415fc88641",
"FullNumber": "П5",
"PinCode": "837253",
"State": 1,
"Products": [
{
"State": 13,
"StartTime": "2023-12-22T08:30:00",
"Fields": [
{
"Id": "39741fea-bc5b-4ae3-a262-87a716161109",
"Value": "77777777777",
"Field": {
"Id": "02a5d8fc-16a4-48a8-b389-9c145f544901",
"Name": "Телефон"
}
}
],
"Id": "5fbb1a60-809d-4a0d-8fe3-d38a351cfa70",
"Product": {
"Id": "a64adadc-0727-8829-3d58-cdcb361108c4",
"Name": "mfc38_Тест",
"IntegrationId": null
}
}
],
"ActivationAvailability": {
"State": 2,
"ErrorMessage": "Талон записан не на сегодня",
"ShowQuestionBeforeActivation": null
},
"ServerId": "78e721bb-c691-7d58-1db5-97882ad01310"
}
POST /api/2/ticketregistration/ticket/products/cancel¶
Отменяет услугу в талоне (в реальности отмена будет в момент вызова метода session/confirm)
Заголовки
Authorization - Идентификатор сессии
Content-Type - application/json
Параметры
TicketProductId - идентификатор услуги в талоне (передаётся в теле запроса)
Формат ответа
TicketSummary – талон в котором будет отменена услуга при сохранении транзакции
Пример запроса
// POST /api/2/ticketregistration/ticket/products/cancel HTTP/1.1
// Authorization: 536ab141-3963-4b55-b502-231e5f277a1f
// Content-Length: 56
// Content-Type: application/json
{
"TicketProductId":"f3aa2e9b-09d6-46f9-8de3-dde9df9a6951"
}
Пример ответа
// HTTP/1.1 200 OK
// Content-Type: application/json; charset=utf-8
// Content-Length: 646
{
"Id": "a81da124-8bae-4cc4-ac17-a0a59db2cd05",
"FullNumber": "П8",
"PinCode": "558136",
"State": 1,
"Products": [
{
"State": 13,
"StartTime": "2023-12-22T08:30:00",
"Fields": [
{
"Id": "c14f55db-bdac-43b9-956d-af9e3e0b74ad",
"Value": "77777777771",
"Field": {
"Id": "02a5d8fc-16a4-48a8-b389-9c145f544901",
"Name": "Телефон"
}
}
],
"Id": "f3aa2e9b-09d6-46f9-8de3-dde9df9a6951",
"Product": {
"Id": "a64adadc-0727-8829-3d58-cdcb361108c4",
"Name": "mfc38_Тест",
"IntegrationId": null
}
}
],
"ActivationAvailability": {
"State": 2,
"ErrorMessage": "Талон записан не на сегодня",
"ShowQuestionBeforeActivation": null
},
"ServerId": "78e721bb-c691-7d58-1db5-97882ad01310"
}
POST /api/2/ticketregistration/ticket/activate¶
Активирует талон
Заголовки
Authorization - Идентификатор сессии
Content-Type - application/json
Параметры
TicketId - идентификатор талона
InviteAsLive (опциональный) - True – согласен на вызов, раньше времени записи, по умолчанию false
DenyEarlyActivation (опциональный) - True – запретить раннюю активацию, по умолчанию false
Формат ответа
TicketSummary
Пример запроса
// POST /api/2/ticketregistration/ticket/products/cancel HTTP/1.1
// Authorization: 536ab141-3963-4b55-b502-231e5f277a1f
// Content-Length: 56
// Content-Type: application/json
{
"TicketId":"f3aa2e9b-09d6-46f9-8de3-dde9df9a6951"
}
Пример ответа
// HTTP/1.1 200 OK
// Content-Type: application/json; charset=utf-8
// Content-Length: 520
{
"Id": "66147379-759e-4251-84d9-4f115e88e9ff",
"FullNumber": "П22",
"PinCode": "391141",
"State": 1,
"Products": [
{
"State": 2,
"StartTime": "2023-10-24T21:45:00",
"Fields": [],
"Id": "a9dc316d-9dfa-4643-aa8e-b64c29788d97",
"Product": {
"Id": "7cb16dfc-7f4c-1603-b428-eba438cba3ce",
"Name": "Тестовая услуга для МИС",
"IntegrationId": null
}
}
],
"ActivationAvailability": {
"State": 5,
"ErrorMessage": "Талон уже активирован",
"ShowQuestionBeforeActivation": null
},
"ServerId": "78e721bb-c691-7d58-1db5-97882ad01310"
}
GET /api/2/ticketregistration/tickets?offset={offset}&limit={limit}¶
Возвращает список талонов для аутентифицированного пользователя, упорядоченных по времени создания.
Заголовки
Authorization - Идентификатор сессии
Параметры
offset (опциональный) - смещение с начала списка`
limit (опциональный) - максимальное количество возвращаемых талонов`
Формат ответа
{
"AllCount": "int" // Общее количество талонов пользователя,
"Items": "TicketSummary": [] // Список запрошенных талонов пользователя
}
Пример запроса
GET /api/2/ticketregistration/tickets?limit=20 HTTP/1.1
Authorization: ad5a73c6-7b25-41ea-b328-656663b2ec06
Пример ответа
// HTTP/1.1 200 OK
// Content-Length: 585
// Content-Type: application/json; charset=utf-8
{
"Items": [
{
"Id": "63086f1e-030a-4721-bf1e-6273dda3d013",
"FullNumber": "П1",
"PinCode": "868561",
"State": 1,
"Products": [
{
"State": 13,
"StartTime": "2023-10-25T08:00:00",
"Fields": [],
"Id": "3099889a-3be0-47fa-96cd-101f8a7e1451",
"Product": {
"Id": "8bfe3823-b54c-73e6-d8d5-772d8bce5200",
"Name": "Внесудебное банкротство физических лиц",
"IntegrationId": null
}
}
],
"ActivationAvailability": {
"State": 2,
"ErrorMessage": "Талон записан не на сегодня",
"ShowQuestionBeforeActivation": null
},
"ServerId": "5fe4b4c8-7851-0a8a-6466-0aba938b6aad"
}
],
"AllCount": 1
}
GET /api/2/ticketregistration/tickets/{ticketId}¶
Получение информации о талоне.
Заголовки
Token (опциональный) - Идентификатор внешней системы
Authorization (опциональный) - Идентификатор сессии (если передан данный идентификатор Token, не используется)
Параметры
ticketId - идентификатор талона предварительной записи
Формат ответа
TicketSummary
Пример запроса
GET /api/2/ticketregistration/tickets/63086f1e-030a-4721-bf1e-6273dda3d013 HTTP/1.1
Authorization: ad5a73c6-7b25-41ea-b328-656663b2ec06
Пример ответа
// HTTP/1.1 200 OK
// Content-Length: 705
// Content-Type: application/json; charset=utf-8
{
"Id": "63086f1e-030a-4721-bf1e-6273dda3d013",
"FullNumber": "П1",
"PinCode": "868561",
"State": 1,
"Products": [
{
"State": 13,
"StartTime": "2023-10-25T08:00:00",
"Fields": [
{
"Id": "b7048d52-0e12-4689-83cb-9698765ada64",
"Value": "77777777771",
"Field": {
"Id": "1a41499f-238b-5bfb-31a1-727c26ef3431",
"Name": "Фамилия"
}
}
],
"Id": "3099889a-3be0-47fa-96cd-101f8a7e1451",
"Product": {
"Id": "8bfe3823-b54c-73e6-d8d5-772d8bce5200",
"Name": "Внесудебное банкротство физических лиц",
"IntegrationId": null
}
}
],
"ActivationAvailability": {
"State": 2,
"ErrorMessage": "Талон записан не на сегодня",
"ShowQuestionBeforeActivation": null
},
"ServerId": "5fe4b4c8-7851-0a8a-6466-0aba938b6aad"
}
GET /api/2/ticketregistration/{serverId}/tickets/ticketByPinCode/{pinCode}¶
Получение информации о талоне.
Заголовки
Token (опциональный) - Идентификатор внешней системы`
Authorization (опциональный) - Идентификатор сессии (если передан данный идентификатор Token, не используется)`
Параметры
serverId - Идентификатор филиала, на котором будет искаться талон
pinCode - Пин-код талона
Формат ответа
TicketSummary
Пример запроса
GET /api/2/ticketregistration/5fe4b4c8-7851-0a8a-6466-0aba938b6aad/tickets/ticketByPinCode/868561 HTTP/1.1
Authorization: ad5a73c6-7b25-41ea-b328-656663b2ec06
Пример ответа
// HTTP/1.1 200 OK
// Content-Length: 723
// Content-Type: application/json; charset=utf-8
{
"Id": "f4bd7163-2777-44e0-b9f9-e1a12e1928bf",
"FullNumber": "M12",
"PinCode": "884054",
"State": 1,
"Products": [
{
"State": 3,
"StartTime": "2023-10-24T17:55:52.6552251",
"Fields": [],
"Id": "be790d63-f42f-4078-81f2-b05d196cd25e",
"Product": {
"Id": "7cb16dfc-7f4c-1603-b428-eba438cba3ce",
"Name": "Тестовая услуга для МИС",
"IntegrationId": null
}
},
{
"State": 13,
"StartTime": "2023-10-24T22:15:00",
"Fields": [],
"Id": "e0988502-5b97-4d19-9021-e8b06bba8015",
"Product": {
"Id": "7cb16dfc-7f4c-1603-b428-eba438cba3ce",
"Name": "Тестовая услуга для МИС",
"IntegrationId": null
}
}
],
"ActivationAvailability": {
"State": 0,
"ErrorMessage": null,
"ShowQuestionBeforeActivation": false
},
"ServerId": "78e721bb-c691-7d58-1db5-97882ad01310"
}
GET /api/2/ticketregistration/tickets/{ticketId}/ticketpng?scale={scale}¶
Получение талона в виде изображения для печати. Если талон привязан к пользователю, требуется передать Authorization пользователя, полученный в методе openSession.
Заголовки
Token (опциональный) - Идентификатор внешней системы
Authorization (опциональный) - Идентификатор сессии (если передан данный идентификатор Token, не используется)
Параметры
ticketId - идентификатор талона
scale (опциональный) - коэффициент масштабирования изображения от 0.01 до 30. По умолчанию 1 (96 dpi, для отображения на экране).
Формат ответа
Изображение в формате PNG
Пример запроса
GET /api/2/ticketregistration/tickets/1d34af10-62cf-4315-a828-01dc8de3a53a/ticketpng HTTP/1.1
Authorization: 161e44c1-89a1-472a-aa1f-bd6b40297961
Пример ответа
Тип ServerInfo
{
"Id": "Guid", // Идентификатор филиала
"Name": "string", // Короткое название в конфигурации
"IsConnected": "bool", // Подключен ли филиал к центральному серверу
"WrongProtocol": "bool", // Подключен ли филиал к центральному серверу c некорректным номером протокола. Если true, то взаимодействовать с таким филиалом нельзя
"OrganizationName": "string", // Наименование организации
"OrganizationFullName": "string", // Полное наименование организации
"OrganizationAddress": "string", // Адрес организации
"IntegrationId": "string" // Идентификатор для интеграции
}
Тип MenuItem
Базовый тип элемента меню. Такой элемент меню может быть категорией или услугой.
{
"Id": "Guid",
"Name": "string"
}
Тип ProductOrRouteMenuItem : MenuItem
Тип элемента меню – услуга.
{
"QueueIsAvailable": "bool", // Можно ли брать талон живой очереди
"RecordIsAvailable": "bool", // Можно ли брать талон предварительной записи
"Multiplier": "Multiplier", // Информация о том, нужно ли запросить у посетителя множитель (количество дел) при взятии талона на эту услугу
"IntegrationId": "string" // Идентификатор элемента меню из настроек внешней системы
}
Тип CategoryMenuItem : MenuItem
Тип элемента меню – категория. Категория содержит другие элементы меню: услуги, маршруты и дочерние категории.
{
"SubItems": "MenuItem": [] // Список вложенных категорий и услуг
}
Тип Multiplier
Информация о том, нужно ли запросить у посетителя множитель (количество дел) при взятии талона на эту услугу.
{
"Title": "string", // Заголовок поля для посетителя (обычно «Количество дел»)
"Limit": "int", // Максимальное значение множителя, которое может указать посетитель
}
Если у услуги присутствует свойство Multiplier, то после выбора услуги нужно запросить у посетителя множитель («Количество дел»). Допустимые значения – от 1 до Limit включительно. Указанное посетителем значение нужно использовать в методах получения дней и точек (слотов) предварительной записи, а также в методах взятия талона как параметр multiplier. Если у услуги свойство Multiplier – null, множитель у посетителя запрашивать не нужно. Когда посетитель берет талон на услугу и указывает несколько дел, то создается мульти-талон с указанным количеством услуг. Все услуги в талоне идут непрерывно друг за другом.
Перечисление MenuType
0 – услуги на которые можно получит талон в живую очередь 1 – услуги на которые можно записаться 2 – услуги на которые можно либо записаться, либо получить талон в живую очередь
Тип ReservationInfo
{
"ReservationId": "Guid", // Идентификатор резерва
"TicketId": "Guid", // Идентификатор талона
"Products": "ReservationProduct": [], // Зарезервированные услуги
"RequestedFields": "RequestedField": [] // Поля доп. Сведений, который нужно запросить у пользователя
}
Тип ReservationProduct
{
"Id": "Guid", // Идентификатор услуги в талоне
"Product": "Product" // Информации об услуге
}
Тип FieldInfo
Поле дополнительных сведений о посетителе
{
"Id": "Guid", // Идентификатор поля
"Name": "string", // Название поля (для посетителя)
}
Тип RequestedField : FieldInfo
Поле дополнительных сведений о посетителе
{
"Mask": "string", // Маска для ввода
"RegularExpression": "string", // Регулярное выражение, которому должно соответствовать вводимое посетителем значение поля
"Required": "bool", // Является ли поле обязательным для заполнения
}
Тип Product
{
"Id": "Guid", // Идентификатор услуги
"Name": "string", // Название услуги
"IntegrationId": "string" // Идентификатор услуги для интеграции
}
Тип TicketSummary
Талон
{
"Id": "Guid", // Идентификатор талона
"FullNumber": "string", // Номер талона (префикс + номер)
"PinCode": "string", // Пин-код талона в формате 000000
"State": "int", // Состояние талона из перечисления TicketState
"Products": [] // Услуги в талоне
{
"Id": "Guid", // Идентификатор услуги в талоне
"Product": "Product",
"State": "int", // Состояние услуги в талоне из перечисления TicketProductState
"StartTime": "string", // Дата и время записи в формате «YYYY-MM-DDThh:mm:ss»,
"Fields": "DataFieldSummary": [], // Поля доп. сведений
},
"ServerId": "Guid", // Идентификатор филиала
"ActivationAvailability": {
"State": "ActivationAvailabilityState",
"ErrorMessage": "string", // В случае, когда активация невозможна, здесь указана причина
"ShowQuestionBeforeActivation": "bool" // Нужно ли при активации спросить посетителя «Пригласить вас заранее, если будет возможность?»
}
}
Тип DataFieldSummary
{
"Id": "Guid",
"Value": "string", // Значение доп. сведение
"Field": "FieldInfo" // Информация о поле доп. сведений
}
Перечисление TicketState
0 – Новый талон, еще создаваемый в терминале 1 – Талон, владелец которого ожидает в очереди хотя бы по одной из услуг 2 – Талон, владелец которого приглашен или обслуживается по одной из услуг в талоне 3 – Талон, владелец которого не ожидает в очереди ни по одной из услуг. 4 – Мульти-талон, владелец которого обслужился по одной из услуг и еще не начал обслуживаться по остальным услугам у того же оператора (Посетитель удерживается оператором, чтобы посетителя не вызвал кто-то другой)
Перечисление TicketProductState
0 – Зарезервирован 1 – Резерв отменён 2 – Предварительная запись 3 – В очереди 4 – Приглашён 5 – Обслуживается 6 – В персональной очереди 7 – Не явился 8 – Перенаправлен 9 – Обслужен (услуга оказана) 10 – Отменён 12 – Не явился, вызовут повторно 13 – Предварительная запись (не активирован) 14 – Отменён (не был активирован) 15 – Обслуживание еще недоступно 16 – Подтверждён 17 – Услуга не оказана
Перечисление ActivationAvailabilityState
0 – Можно активировать1 – Нельзя активировать, так как это талон в живую очередь2 – Нельзя активировать, так как это талон не на сегодняшний день3 – Нельзя активировать, так как талон не подтверждён4 – Нельзя активировать, по причине талон не требует активацию5 – Нельзя активировать, талон уже был активирован6 – Нельзя активировать, не наступило время, за которое его можно активировать7 – Нельзя активировать, так как вышло время активации8 – Талон отменён
Варианты использования
С авторизацией посетителя В данном случае СУО будет знать о всех талонах посетителя, а также будет возможность получить список талонов посетителя методом GET /api/2/ticketregistration/tickets?offset={offset}&limit={limit}
Предупреждение
Посетитель – это посетитель, а не сотрудник организации.
Без авторизации посетителя
В данном случае СУО не будет знать о всех талонах посетителя, не будет возможности получить список талонов, в этом случае системе нужно самой запоминать идентификаторы талонов для дальнейшего взаимодействия.
- Изменение записи
session/open – открываем сеанс
ticket/cancel – отменяем талон
{serverId}/menu – получаем меню, для выбора услуги
{serverId}/schedule/days – получаем доступные дни для ПЗ
{serverId}/schedule/days/{date} – получаем доступные слоты записи
ticket/book – резервируем время записи
если запрашивались доп. сведение добавляем их fields/add
при необходимости повторяем шаги 3 – 7 (можно сначало выполнить шаги 3 – 6 несколько раз, а потом на каждый резерв выполнить fields/add, тем самым можно с агрегировать список запрашиваемых полей, и один раз запросить у пользователя)
session/confirm – подтвердили отмену талона, и выдачу нового талона