Перейти к содержанию

REST API v3

Начиная со сборки 5.3.392 пользователям доступно новое REST API v3.

Warning

REST API v2 устарело. Все новые методы и возможности добавляются только в REST API v3.

Автоматически генерируемая при сборке сервера документация доступна на официальном сайте Flashphoner: REST API v3

Также, документация доступна в веб-интерфейсе Web Call Server:

Асинхронные вызовы REST API

Некоторые длительные операции, запущенные вызовами REST API, могут выполняться асинхронно: чтение картинки водяного знака из файла, запуск VOD потока, соединение по RTSP с IP камерой и т.п. Такие REST API методы запускают асинхронные задания (job):

  1. Если задание завершается в течение определенного времени, возвращается 200 OK и результат выполнения запроса в теле ответа.

  2. Если задание продолжается в фоне, возвращается 202 Accepted с идентификатором задания. Результат выполнения задания может быть получен позднее при помощи метода /jobs/find в поле result JSON объекта Job.

Задание в определенный момент времени находится в одном из следующих состояний:

  • PENDING — Задание создано и ждет запуска
  • RUNNING — Задание выполняется
  • DONE — Задание завершено успешно
  • FAILED — Задание завершено с ошибкой
  • CANCELLED — Задание сброшено по таймауту

Настройки асинхронного задания

Стандартный HTTP заголовок Prefer используется для настройки таймаутов задания на стороне клиента

curl --location 'http://localhost:8081/rest-api/v3/vod/startup' \
     --header 'Content-Type: application/json' \
     --header 'Prefer: respond-async, wait=3, timeout=10' \
     --data '{"uri": "vod-live://sample.mp4", "localStreamName": "test", "loop": true}'

Здесь:

  • wait=3 — Время ожидания результата в секундах. Запрос вернет 200 OK, если задание завершено за указанное время, в противном случае 202 Accepted. Значение по умолчанию: 5.
  • timeout=10 — Максимальное время выполнения в секундах. Если задание не завершено за указанное время, оно будет автоматически сброшено. Значение по умолчанию: 60.

На стороне сервера эти значения устанавливаются для всех запросов следующими параметрами

jobs_max_prefer_wait_time=5
jobs_max_prefer_timeout=60

Если запрос не содержит заголовка Prefer, или значение, переданное в заголовке, превышает заданное в настойках сервера, к запросу будут применены настройки сервера.