API Дубли (takes)
Документация API
Сервис вызывных листов для кинопроизводства
Базовый URL:
https://cs.imslate.com/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/takesContent-Type: application/jsonX-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"}