API администратора зала. Редактирование талонов на сервере филиала СУО Enter 4.2.3.0 (и выше)

Общие сведения

API работает по протоколу HTTP на порту, сконфигурированном для службы центрального сервера СУО (по умолчанию 80).

Запросы к API выполняются через HTTP-методы GET/POST.

Тело ответа имеет формат JSON, кодировку UTF-8.

Для доступа к сервису нужно выполнить метод POST admin/login с передачей логина и пароля пользователя, имеющего роль для доступа к панели администрирования. В случае успеха метод возвращает токен сессии пользователя. Все последующий запросы нужно выполнять с передачей токена через HTTP-заголовок Authorization.

Формат ответа об ошибке

Ответ об ошибке приходит с HTTP-статусом 4xx или 5xx в теле ответа приходит сообщение об ошибке.


Редактирование талона

В рамках сессии пользователя можно иметь только один сеанс редактирования талона (т.е. редактировать только один талон). Сеанс редактирования завершается вызовом метода сохранения или метода отмены изменений. Талон из нескольких услуг называется мультиталоном. Услуги мультиталона объединяются в контейнеры.

Контейнер может быть одного из двух типов:

  • параллельный – услуги контейнера приглашаются на обслуживание в любом порядке;

  • последовательный – услуги контейнера приглашаются на обслуживание строго в имеющемся порядке.

Контейнер может содержать услуги или другие контейнеры.


POST /api/1/queue/admin/login/{login}/{password}

Открывает новую сессию пользователя.

Формат ответа

токен сессии в двойных кавычках

Пример запроса

http://enter.suo.club:8002/api/1/queue/admin/login/demo/1

Пример ответа

"015de373-18f2-4edc-860c-af34ab679eac"

POST /api/1/queue/admin/tickets/edit/begin

Начинает сеанс редактирования талона.

Заголовки

Authorization - токен сессии пользователя

Параметры

ticketId - идентификатор талона

Формат ответа

EditLayoutItem

Пример запроса

POST /api/1/queue/admin/tickets/edit/begin HTTP/1.1
Host: dev.enter-systems.ru:8002
Content-Length: 49
Authorization: 015de373-18f2-4edc-860c-af34ab679eac
Content-Type: application/json
{ticketId:"a8e60094-fbd2-4fba-9055-4e2ad058cd5c"}

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 428
{
  "Id": "e4a52c72-ff71-4718-a140-b57b37acae0d",
  "Children": [
    {
      "Id": "0259be44-f344-468d-8cce-513943b11548",
      "Name": "Тестовая услуга для МИС",
      "WillBeServed": false,
      "Priority": 0,
      "Type": 1
    },
    {
      "Id": "da069272-6cb0-49df-8d96-2e12f5cb5167",
      "Name": "Назначение и выплата ежемесячного пособия по уходу за ребенком.",
      "WillBeServed": false,
      "Priority": 0,
      "Type": 1
    }
  ],
  "Type": 3
}

POST /api/1/queue/admin/tickets/edit/add

Добавляет услугу или маршрут в редактируемый талон.

Заголовки

Authorization - токен сессии пользователя

Параметры

containerId (необязательный) - идентификатор родительского контейнера, куда добавляется услуга или маршрут, либо не указывется, если услуга/маршрут добавляется в корень

menuLinkId - идентификатор добавляемого элемента меню (услуги или маршрута)

multiplier (необязательный) - множитель услуги (только для услуг, маршруты не поддерживаются), либо не указывается, если услуга добавляется в единственном экземпляре


POST /api/1/queue/admin/tickets/edit/add/before

Добавляет услугу или маршрут в редактируемый талон перед указанным элементом разметки.

Заголовки

Authorization - токен сессии пользователя

Параметры

layoutItemId - идентификатор элемента в разметке талона, перед которым добавляется услуга или маршрут

menuLinkId - идентификатор добавляемого элемента меню (услуги или маршрута)

multiplier (необязательный) - множитель услуги (только для услуг, маршруты не поддерживаются), либо не указывается, если услуга добавляется в единственном экземпляре


POST /api/1/queue/admin/tickets/edit/add/parallel

Превращает указанную услугу в талоне в параллельный контейнер с добавлением услуги или маршрута.

Если услуга в талоне уже находится в параллельном контейнере, просто добавляет услугу/маршрут в этот контейнер.

Заголовки

Authorization - токен сессии пользователя

Параметры

ticketProductId - идентификатор услуги в разметке талона, параллельно которой добавляется услуга или маршрут

menuLinkId - идентификатор добавляемого элемента меню (услуги или маршрута)

multiplier (необязательный) - множитель услуги (только для услуг, маршруты не поддерживаются), либо не указывается, если услуга добавляется в единственном экземпляре


POST /api/1/queue/admin/tickets/edit/add/sequential

Превращает указанную услугу в талоне в последовательный контейнер с добавлением услуги или маршрута.

Заголовки

Authorization - токен сессии пользователя

Параметры

ticketProductId - идентификатор услуги в разметке талона, параллельно которой добавляется услуга или маршрут

menuLinkId - идентификатор добавляемого элемента меню (услуги или маршрута)

multiplier (необязательный) - множитель услуги (только для услуг, маршруты не поддерживаются), либо не указывается, если услуга добавляется в единственном экземпляре


POST /api/1/queue/admin/tickets/edit/remove/product

Удаляет услугу из редактируемого талона.

Заголовки

Authorization - токен сессии пользователя

Параметры

ticketProductId - идентификатор удаляемой услуги в разметке талона


POST /api/1/queue/admin/tickets/edit/priority

Задает приоритет услуги в редактируемом талоне.

Заголовки

Authorization - токен сессии пользователя

Параметры

ticketProductId - идентификатор услуги в разметке талона

priority - назначаемый приоритет Priority


POST /api/1/queue/admin/tickets/edit/apply

Сохраняет изменения в редактируемом талоне.

Заголовки

Authorization - токен сессии пользователя

Параметры

validateFields - выполнять ли валидацию полей данных в талоне (true/false)


POST /api/1/queue/admin/tickets/edit/cancel

Отменяет изменения редактируемого талона.

Заголовки

Authorization - токен сессии пользователя


Перечисление Priority

0 – низкий приоритет

1 – нормальный приоритет

2 – высокий приоритет

3 – наивысший приоритет


Тип EditLayoutItem

Базовый тип элемента разметки редактируемого талона.

{
  Type: ItemType // тип элемента разметки
}

Перечисление ItemType

0 – обслуживаемая услуга в талоне

1 – уже существующая услуга в талоне

2 – услуга в талоне, добавляемая в рамках текущего редактирования

3 – параллельный контейнер

4 – последовательный контейнер

5 – зона обслуживания

Тип TicketProduct : EditLayoutItem

Услуга в редактируемом талоне (значения ItemType 0, 1, 2).

{
  Id: guid // идентификатор услуги в талоне,
  Product: Product // услуга,
  WillBeServed: bool // успеет ли услуга обслужиться до конца рабочего дня (по расчетам прогноза обслуживания),
  ToWorkPlace: WorkPlace // пульт оператора (окно), к которому привязана услуга
  ToUser: User // оператор, к которому привязана услуга,
  Priority: Priority // приоритет
}

Тип Container : EditLayoutItem

Контейнер в редактируемом талоне (значения ItemType 3, 4).

{
  Id: guid // рантайм-идентификатор контейнера,
  Children: EditLayoutItem[] // элементы контейнера
}

Тип Zone : EditLayoutItem

Зона обслуживания в редактируемом талоне (значение ItemType 5).

{
  Name: string // название зоны обслуживания,
  Content: EditLayoutItem // содержимое зоны
}

Тип Product

Услуга.

{
  Id: guid,
  Name: string
}

Тип WorkPlace

Пульт оператора.

{
  Id: guid,
  Name: string
}

Тип User

User.

{
  Id: guid,
  Name: string
}