docs.apiCtaBanner.title
docs.apiCtaBanner.description
Довідник API ендпоінтів
Повна документація всіх доступних REST API ендпоінтів.
Організація та інтроспекція
Отримайте інформацію про Ваш поточний API контекст та організацію.
Отримати поточний контекст
GET /api/v1/me
Повертає інформацію про Ваш API ключ, організацію, ліміти запитів та доступні функції. Цей ендпоінт не враховується в ліміті запитів.
Приклад запиту:
curl -X GET "https://www.screenzzie.com/api/v1/me" \
-H "Authorization: Bearer sk_live_xxx"
Приклад відповіді:
{
"success": true,
"data": {
"apiKey": {
"id": "uuid",
"name": "My API Key",
"keyPrefix": "sk_live_abc123",
"scopes": ["screens:read", "screens:write", "playlists:read"],
"expiresAt": null,
"lastUsedAt": "2024-01-15T10:30:00Z"
},
"organization": {
"id": "uuid",
"name": "My Company",
"planId": "growth",
"subscriptionStatus": "active",
"trialEndsAt": null,
"maxScreensAllowed": 50,
"activeScreensCount": 12
},
"rateLimits": {
"limit": 100000,
"used": 45,
"remaining": 99955,
"resetAtMs": 1704153600000
},
"features": {
"sequences": true,
"schedules": true,
"api": true
}
}
}
Список організацій
GET /api/v1/organizations
Повертає організації, доступні з Вашим API ключем. Наразі кожен API ключ належить рівно одній організації.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
page | number | Номер сторінки (за замовчуванням: 1) |
limit | number | Елементів на сторінку (за замовчуванням: 20, макс: 100) |
Приклад запиту:
curl -X GET "https://www.screenzzie.com/api/v1/organizations" \
-H "Authorization: Bearer sk_live_xxx"
Приклад відповіді:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "My Company",
"planId": "growth",
"subscriptionStatus": "active",
"maxScreensAllowed": 50,
"activeScreensCount": 12,
"createdAt": "2024-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1,
"hasMore": false
}
}
}
Екрани
Керуйте екранами цифрових вивісок.
Список екранів
GET /api/v1/screens
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
page | number | Номер сторінки (за замовчуванням: 1) |
limit | number | Елементів на сторінку (за замовчуванням: 20, макс: 100) |
isActive | boolean | Фільтр за активним статусом |
isOnline | boolean | Фільтр за онлайн статусом |
screenGroupId | uuid | Фільтр за групою екранів |
workspaceId | uuid | Фільтр за робочим простором |
Приклад запиту:
curl -X GET "https://www.screenzzie.com/api/v1/screens?isOnline=true&limit=10" \
-H "Authorization: Bearer sk_live_xxx"
Приклад відповіді:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Lobby Display",
"description": "Main entrance screen",
"isActive": true,
"isOnline": true,
"lastSeenAt": "2024-01-01T12:00:00Z",
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Madrid",
"location": "Building A, Floor 1",
"cityName": "Madrid",
"latitude": 40.4168,
"longitude": -3.7038,
"workspaceId": "uuid",
"screenGroupId": null,
"currentPlaylistId": "uuid",
"currentSequenceId": null,
"defaultPlaylistId": "uuid",
"defaultSequenceId": null,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T12:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 25,
"totalPages": 3,
"hasMore": true
}
}
}
Отримати екран
GET /api/v1/screens/:screenId
Параметри шляху:
| Параметр | Тип | Опис |
|---|---|---|
screenId | uuid | ID екрана |
Приклад відповіді:
Повертає один об'єкт екрана з тією ж структурою, що й у відповіді списку.
Створити екран
POST /api/v1/screens
Тіло запиту:
| Поле | Тип | Обов'язкове | Опис |
|---|---|---|---|
name | string | Так | Назва екрана (макс 100 символів) |
description | string | Ні | Опис екрана (макс 500 символів) |
orientation | string | Ні | landscape або portrait (за замовчуванням: landscape) |
rotation | string | Ні | 0, 90, 180 або 270 (за замовчуванням: 0) |
timezone | string | Ні | Часовий пояс IANA (напр., Europe/Madrid) |
location | string | Ні | Опис фізичного розташування (макс 200 символів) |
screenGroupId | uuid | Ні | Членство в групі екранів |
workspaceId | uuid | Ні | Призначення робочого простору |
Призначення плейлистів та послідовностей не можна встановити під час створення. Використовуйте ендпоінт Оновити екран для призначення контенту після створення.
Приклад запиту:
curl -X POST "https://www.screenzzie.com/api/v1/screens" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Conference Room A",
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Madrid",
"location": "Building B, Room 101"
}'
Приклад відповіді:
{
"success": true,
"data": {
"id": "uuid",
"name": "Conference Room A",
"description": null,
"isActive": true,
"isOnline": false,
"lastSeenAt": null,
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Madrid",
"location": "Building B, Room 101",
"cityName": null,
"latitude": null,
"longitude": null,
"workspaceId": null,
"screenGroupId": null,
"currentPlaylistId": null,
"currentSequenceId": null,
"defaultPlaylistId": null,
"defaultSequenceId": null,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
}
Оновити екран
PATCH /api/v1/screens/:screenId
Усі поля опціональні. Включайте тільки поля, які хочете оновити.
Тіло запиту:
| Поле | Тип | Опис |
|---|---|---|
name | string | Нова назва екрана (макс 100 символів) |
description | string | Новий опис (null для очищення) |
orientation | string | landscape або portrait |
rotation | string | 0, 90, 180 або 270 |
timezone | string | Часовий пояс IANA |
location | string | Фізичне розташування (null для очищення) |
workspaceId | uuid | ID робочого простору (null для видалення) |
screenGroupId | uuid | ID групи екранів (null для видалення) |
currentPlaylistId | uuid | Поточний плейлист (null для видалення) |
currentSequenceId | uuid | Поточна послідовність (null для видалення) |
defaultPlaylistId | uuid | Плейлист за замовчуванням (null для видалення) |
defaultSequenceId | uuid | Послідовність за замовчуванням (null для видалення) |
Приклад запиту:
curl -X PATCH "https://www.screenzzie.com/api/v1/screens/abc123" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Display Name",
"currentPlaylistId": "playlist-uuid"
}'
Плейлисти
Керуйте контент-плейлистами для Ваших екранів.
Список плейлистів
GET /api/v1/playlists
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
page | number | Номер сторінки (за замовчуванням: 1) |
limit | number | Елементів на сторінку (за замовчуванням: 20, макс: 100) |
workspaceId | uuid | Фільтр за робочим простором |
Приклад відповіді:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Main Content",
"description": "Primary playlist for lobby screens",
"itemCount": 5,
"totalDuration": 120,
"workspaceId": null,
"createdBy": "user-uuid",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T12:00:00Z"
}
],
"pagination": { ... }
}
}
Отримати плейлист
GET /api/v1/playlists/:playlistId
Повертає плейлист з його елементами. Елементи завжди включені у відповідь.
Параметри шляху:
| Параметр | Тип | Опис |
|---|---|---|
playlistId | uuid | ID плейлиста |
Приклад відповіді:
{
"success": true,
"data": {
"id": "uuid",
"name": "Main Content",
"description": "Primary playlist for lobby screens",
"itemCount": 2,
"totalDuration": 45,
"workspaceId": null,
"createdBy": "user-uuid",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T12:00:00Z",
"items": [
{
"id": "item-uuid-1",
"position": 0,
"duration": 15,
"itemType": "media",
"mediaId": "media-uuid",
"config": null,
"createdAt": "2024-01-01T00:00:00Z"
},
{
"id": "item-uuid-2",
"position": 1,
"duration": 30,
"itemType": "website",
"mediaId": null,
"config": { "url": "https://example.com" },
"createdAt": "2024-01-01T00:00:00Z"
}
]
}
}
Створити плейлист
POST /api/v1/playlists
Тіло запиту:
| Поле | Тип | Обов'язкове | Опис |
|---|---|---|---|
name | string | Так | Назва плейлиста (макс 100 символів) |
description | string | Ні | Опис плейлиста (макс 500 символів) |
workspaceId | uuid | Ні | Призначення робочого простору |
Приклад запиту:
curl -X POST "https://www.screenzzie.com/api/v1/playlists" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Holiday Promotions",
"description": "Seasonal content for December"
}'
Оновити плейлист
PATCH /api/v1/playlists/:playlistId
Тіло запиту:
| Поле | Тип | Опис |
|---|---|---|
name | string | Нова назва плейлиста |
description | string | Новий опис (null для очищення) |
workspaceId | uuid | ID робочого простору (null для видалення) |
Видалити плейлист
DELETE /api/v1/playlists/:playlistId
Повертає 204 No Content при успіху.
Медіа
Доступ та реєстрація медіафайлів у Вашій бібліотеці.
Список медіа
GET /api/v1/media
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
page | number | Номер сторінки (за замовчуванням: 1) |
limit | number | Елементів на сторінку (за замовчуванням: 20, макс: 100) |
type | string | Фільтр за типом: image або video |
folderId | uuid | Фільтр за папкою |
workspaceId | uuid | Фільтр за робочим простором |
Приклад відповіді:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "promo-video.mp4",
"type": "video",
"fileUrl": "https://...",
"thumbnailUrl": "https://...",
"fileSize": 15728640,
"duration": 30,
"folderId": null,
"workspaceId": null,
"uploadedBy": "user-uuid",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
],
"pagination": { ... }
}
}
Отримати медіа
GET /api/v1/media/:mediaId
Повертає один об'єкт медіа з тією ж структурою, що й у відповіді списку.
Зареєструвати медіа
POST /api/v1/media
Реєструє медіафайл, який вже завантажено до сховища. Цей ендпоінт не обробляє завантаження файлів безпосередньо — використовуйте веб-панель для завантаження файлів.
Тіло запиту:
| Поле | Тип | Обов'язкове | Опис |
|---|---|---|---|
name | string | Так | Назва медіа (макс 200 символів) |
type | string | Так | image або video |
fileUrl | string | Так | URL завантаженого файлу |
thumbnailUrl | string | Ні | URL мініатюри |
fileSize | number | Ні | Розмір файлу в байтах |
duration | number | Ні | Тривалість у секундах (для відео) |
folderId | uuid | Ні | Призначення папки |
workspaceId | uuid | Ні | Призначення робочого простору |
Приклад запиту:
curl -X POST "https://www.screenzzie.com/api/v1/media" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Company Logo",
"type": "image",
"fileUrl": "https://your-storage.com/logo.png",
"thumbnailUrl": "https://your-storage.com/logo-thumb.png",
"fileSize": 102400
}'
Пряме завантаження файлів недоступне через REST API. Завантажуйте файли через веб-панель або завантажуйте до власного сховища та реєструйте URL за допомогою цього ендпоінта.
Видалити медіа
DELETE /api/v1/media/:mediaId
Повертає 204 No Content при успіху.
Розклади
Розклади доступні тільки на плані Growth та вище.
Плануйте контент для відтворення у конкретний час.
Список розкладів
GET /api/v1/schedules
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
page | number | Номер сторінки (за замовчуванням: 1) |
limit | number | Елементів на сторінку (за замовчуванням: 20, макс: 100) |
workspaceId | uuid | Фільтр за робочим простором |
screenId | uuid | Фільтр за екраном |
isActive | boolean | Фільтр за статусом активності |
Приклад відповіді:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Weekend Promotions",
"playlistId": "playlist-uuid",
"sequenceId": null,
"screenId": null,
"screenGroupId": null,
"targetType": "all_screens",
"dayOfWeek": [0, 6],
"startTime": "09:00",
"endTime": "21:00",
"startDate": null,
"endDate": null,
"priority": 10,
"isActive": true,
"color": "#3B82F6",
"workspaceId": null,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
],
"pagination": { ... }
}
}
Отримати розклад
GET /api/v1/schedules/:scheduleId
Повертає один об'єкт розкладу з тією ж структурою, що й у відповіді списку.
Створити розклад
POST /api/v1/schedules
Тіло запиту:
| Поле | Тип | Обов'язкове | Опис |
|---|---|---|---|
name | string | Ні | Назва розкладу (макс 100 символів) |
playlistId | uuid | Ні* | Плейлист для планування |
sequenceId | uuid | Ні* | Послідовність для планування |
targetType | string | Так | screen, screen_group, all_screens або multiple_screens |
screenId | uuid | Умовно | Обов'язкове, якщо targetType = screen |
screenGroupId | uuid | Умовно | Обов'язкове, якщо targetType = screen_group |
dayOfWeek | number[] | Ні | Дні тижня (0=Нд, 6=Сб) |
startTime | string | Ні | Час початку у форматі HH:MM |
endTime | string | Ні | Час завершення у форматі HH:MM |
startDate | string | Ні | Дата початку у форматі ISO |
endDate | string | Ні | Дата завершення у форматі ISO |
priority | number | Ні | Пріоритет 0-100 (за замовчуванням: 0) |
isActive | boolean | Ні | Чи активний (за замовчуванням: true) |
color | string | Ні | Колір відображення (напр., #3B82F6) |
workspaceId | uuid | Ні | Призначення робочого простору |
*Для планування контенту слід надати playlistId або sequenceId.
Умовні вимоги типу цілі:
| targetType | Обов'язкові поля |
|---|---|
screen | screenId |
screen_group | screenGroupId |
all_screens | Немає |
multiple_screens | Немає (використовуйте окремий ендпоінт для додавання екранів) |
Приклад запиту:
curl -X POST "https://www.screenzzie.com/api/v1/schedules" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Weekend Promotions",
"playlistId": "abc123",
"targetType": "all_screens",
"dayOfWeek": [0, 6],
"startTime": "09:00",
"endTime": "21:00",
"priority": 10,
"color": "#3B82F6"
}'
Оновити розклад
PATCH /api/v1/schedules/:scheduleId
Усі поля опціональні. Використовує ті ж визначення полів, що й Створити розклад.
Видалити розклад
DELETE /api/v1/schedules/:scheduleId
Повертає 204 No Content при успіху.
HTTP статус коди
| Код | Опис |
|---|---|
200 | Успіх |
201 | Створено |
204 | Немає контенту (успішне видалення) |
400 | Поганий запит (помилка валідації) |
401 | Неавторизовано (недійсний API ключ) |
403 | Заборонено (недостатньо дозволів або плану) |
404 | Не знайдено |
429 | Забагато запитів (ліміт перевищено) |
500 | Внутрішня серверна помилка |