Введение в API
Публичный REST API Digital Signage RDS позволяет интегрировать сторонние сервисы с вашей учётной записью, автоматизировать задачи или создать собственную панель управления.
- Base URL:
https://rds.digitalsignagerds.com/api/v1 - Версия:
v1(стабильная) - Формат: JSON поверх HTTPS
1. Начало работы за 3 шага
- Откройте свой Профиль и перейдите на вкладку API.
- Создайте новый ключ, задав ему имя (например,
Zapier), выбрав срок действия и права доступа (только чтение или чтение- запись).
- Скопируйте токен (
rds_live_…). Повторно он не показывается. Если вы его потеряете, придётся создать новый.
2. Аутентификация
Передавайте токен в заголовке Authorization как Bearer token:
curl -H "Authorization: Bearer rds_live_xxxxx" \
https://rds.digitalsignagerds.com/api/v1/me
Хороший первый тест — GET /me: он возвращает данные ключа и связанную
компанию.
Права доступа (scopes)
У каждого ключа есть набор прав:
| Право | Что позволяет |
|---|---|
read |
Получать списки и читать ресурсы (GET) |
write |
Загружать контент и изменять ресурсы (POST) |
Ключи только для чтения не могут загружать изображения и видео и
что-либо изменять. Они вернут 403 insufficient_scope.
Срок действия и отзыв
Ключи могут истекать автоматически (30 дней, 90 дней, 1 год или
«Без срока»). Их также можно отозвать вручную в своём
профиле. Истёкший или отозванный ключ возвращает 401 Token has expired
или 401 Token has been revoked.
3. Ограничение частоты запросов
60 запросов в минуту на токен. При превышении вы получите
429 Too Many Requests с заголовком Retry-After: <секунды>, который
указывает, сколько нужно подождать.
4. Ответы
Одиночный ресурс
{
"object": "device",
"id": 1138,
"code": "RDSDF25",
"...": "..."
}
Списки (курсорная пагинация)
{
"object": "list",
"url": "/api/v1/devices",
"data": [ { ... }, { ... } ],
"has_more": true,
"next_cursor": "1142"
}
Чтобы получить следующую страницу, передайте next_cursor как
starting_after:
GET /api/v1/devices?starting_after=1142&limit=20
Параметры, принимаемые в списках:
| Параметр | Значение | По умолчанию |
|---|---|---|
limit |
1–100 | 20 |
starting_after |
целочисленный id | 0 (первый результат) |
Ошибки
{
"error": {
"type": "unauthorized",
"message": "Invalid token"
}
}
Частые типы ошибок:
| Код | Type | Когда |
|---|---|---|
| 401 | unauthorized |
Токен отсутствует, некорректен, неизвестен, отозван или истёк |
| 403 | insufficient_scope |
У ключа нет необходимого права |
| 403 | quota_exceeded |
Достигнута квота компании (devices, images, videos) |
| 404 | not_found |
Ресурс не существует или недоступен вашей компании |
| 405 | method_not_allowed |
HTTP-метод не поддерживается на этом маршруте |
| 413 | file_too_large |
Загружаемый файл превышает лимит |
| 415 | unsupported_media_type |
Расширение или содержимое файла не поддерживается |
| 429 | rate_limited |
Превышен лимит в 60 запросов в минуту |
| 500 | server_error |
Непредвиденная ошибка сервера |
5. Доступные эндпоинты
Учётная запись
| Метод | Путь | Описание |
|---|---|---|
| GET | /me |
Данные ключа (быстрая проверка аутентификации) |
| GET | /account |
Компания: адрес, контакт, лимиты, использование и подписка |
| GET | /subscription |
Подписка: текущий цикл, счётчики и следующий платёж |
| GET | /invoices |
Счета (Stripe), сначала самые свежие |
Устройства
| Метод | Путь | Описание |
|---|---|---|
| GET | /devices |
Список устройств (без выведенных из эксплуатации) |
| GET | /devices/{id_o_codigo} |
Одно устройство (принимает целочисленный id или код RDSxxx) |
| GET | /devices?code=RDSF8B8 |
Фильтр списка по точному коду |
Каждое устройство отдаёт is_online, last_seen_at, playlist_id +
playlist_name, workspace_id + workspace_name (+ родительскую, если это
подплощадка), kiosk_mode, kiosk_whitelist, branch_*, даты
контракта и другое.
Площадки (workspaces)
| Метод | Путь | Описание |
|---|---|---|
| GET | /workspaces |
Список (площадки и подплощадки) |
| GET | /workspaces/{id} |
Одна площадка с метками, контентом по умолчанию и картой |
Playlists
| Метод | Путь | Описание |
|---|---|---|
| GET | /playlists |
Список playlist |
| GET | /playlists/{id} |
Playlist с числом устройств / изображений / видео |
Изображения
| Метод | Путь | Описание |
|---|---|---|
| GET | /images |
Список |
| GET | /images/{id} |
Одно изображение (включает url для скачивания бинарного файла) |
| POST | /images |
Загрузить (требуется scope write) |
Видео
| Метод | Путь | Описание |
|---|---|---|
| GET | /videos |
Список |
| GET | /videos/{id} |
Одно видео (включает url для скачивания бинарного файла) |
| POST | /videos |
Загрузить (требуется scope write) |
6. Загрузка контента
Эндпоинты POST /images и POST /videos принимают multipart/form-data
с двумя частями: file (бинарный файл, обязательно) и name (необязательный текст с
заголовком, видимым клиенту).
curl -X POST https://rds.digitalsignagerds.com/api/v1/images \
-H "Authorization: Bearer rds_live_xxxxx" \
-F "name=Cartel Navidad" \
-F "file=@/ruta/al/cartel.png"
Ограничения для изображений:
- Поддерживаемые расширения:
jpg,jpeg,png,gif,webp - Максимальный размер: 256 МБ
- Проверка по содержимому (magic bytes), а не по MIME-заголовку клиента
- Квота на компанию: см.
account.limits.max_images
Ограничения для видео:
- Поддерживаемые расширения:
mp4,mpg,mpeg - Максимальный размер:
account.limits.max_video_size_mb(по умолчанию 200 МБ) - Квота на компанию: см.
account.limits.max_videos
Ответ на успешный POST — 201 Created с только что созданным
ресурсом (включает id, filename, url и crc).
7. Интерактивный справочник
Чтобы протестировать каждый эндпоинт вживую, посмотреть точные схемы ответов и скачать OpenAPI YAML, перейдите на страницу Справочник (Swagger).