API Дубли (takes)

Документация API

Сервис организации съемочного процесса

Аутентификация

Все запросы к API требуют заголовок аутентификации:

X-API-Key: your_api_token_here
API-токен можно получить в личном кабинете в разделе "API доступ"

Создание дубля

POST /takes

Создает новую запись о дубле (take) в системе. Поддерживает несколько схем нумерации.

Параметры запроса (JSON Body)

Параметр Тип Обязательный Описание Валидация
shift_id integer Да ID смены Существующий shift_id
timecode string Да Таймкод HH:MM:SS:FF format
roll string Да Носитель max: 50 chars
scene string Да Сцена max: 50 chars
shot string Да Кадр max: 50 chars
take string Да Дубль max: 50 chars
fps string Да Частота кадров 24fps, 25fps, 30fps, etc
project_id integer Нет ID проекта Required if no shift_id
episode string Нет Эпизод max: 20 chars
is_pickup boolean Нет Пик-ап дубль 0 or 1
is_good boolean Нет Удачный дубль 0 or 1
camera string Нет Камера A, B, C, etc. max: 10
lens string Нет Объектив 50mm, etc. max: 20
filter string Нет Фильтр max: 20
sound_roll string Нет Звуковой носитель max: 50
lat decimal Нет Широта -90 to 90
lng decimal Нет Долгота -180 to 180
gps_time time Нет Время GPS HH:MM:SS
scheme string Нет Схема нумерации R-SC-T, E-SC-SH-T, etc
notes string Нет Заметки text
device_id string Нет ID устройства max: 50

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

POST /api/takes
Content-Type: application/json
X-API-Key: your_api_token_here

{
  "shift_id": 123,
  "timecode": "01:23:45:12",
  "roll": "A001",
  "scene": "1",
  "shot": "1",
  "take": "1",
  "fps": "24",
  "camera": "A",
  "lens": "50mm",
  "is_good": true,
  "scheme": "R-SC-T"
}

Пример успешного ответа

{
  "status": "success",
  "message": "Take created successfully",
  "data": {
    "id": 456,
    "full_code": "A001-SC1-T1"
  }
}

Получение списка дублей

GET /takes

Возвращает список дублей с поддержкой фильтрации, сортировки и пагинации.

Параметры запроса (Query String)

Параметр Тип Описание Пример
shift_id integer Фильтр по смене ?shift_id=123
project_id integer Фильтр по проекту ?project_id=1
scene string Фильтр по сцене ?scene=1
take string Фильтр по дублю ?take=1
roll string Фильтр по носителю ?roll=A001
episode string Фильтр по эпизоду ?episode=1
shot string Фильтр по кадру ?shot=1
camera string Фильтр по камере ?camera=A
is_good boolean Только удачные ?is_good=1
is_pickup boolean Только пик-апы ?is_pickup=1
origin string Источник данных ?origin=api
scheme string Схема нумерации ?scheme=R-SC-T
shift_date_from date Смена от ?shift_date_from=2023-01-01
shift_date_to date Смена до ?shift_date_to=2023-12-31
created_at_from datetime Создано от ?created_at_from=2023-01-01T00:00:00
created_at_to datetime Создано до ?created_at_to=2023-12-31T23:59:59
sort string Поле сортировки ?sort=timecode
order string Направление сортировки ?order=asc
page integer Страница ?page=1
per_page integer Элементов на страницу ?per_page=20

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

GET /api/takes?shift_id=123&is_good=1&sort=timecode&order=asc&page=1&per_page=10

Пример успешного ответа

{
  "status": "success",
  "data": {
    "takes": [
      {
        "id": 456,
        "shift_id": 123,
        "timecode": "01:23:45:12",
        "roll": "A001",
        "scene": "1",
        "shot": "1",
        "take": "1",
        "fps": "24",
        "camera": "A",
        "is_good": true,
        "full_code": "A001-SC1-T1",
        "created_at": "2023-01-01 12:00:00"
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 10,
      "total": 45,
      "total_pages": 5
    }
  }
}

Коды ответов

Код Описание
200 Успешный запрос
201 Успешное создание
400 Ошибка валидации
401 Неверный API-ключ
404 Ресурс не найден
500 Внутренняя ошибка сервера

Обработка ошибок

При возникновении ошибок API возвращает ответ в формате JSON с описанием ошибки:

Пример ошибки валидации

{
  "status": "error",
  "code": 400,
  "message": "Validation failed",
  "errors": {
    "timecode": "Timecode must be in HH:MM:SS:FF format",
    "fps": "FPS must be a valid format"
  }
}

Пример ошибки аутентификации

{
  "status": "error",
  "code": 401,
  "message": "Invalid API Key"
}