docs.apiCtaBanner.title
docs.apiCtaBanner.description
Referencja endpointow API
Kompletna dokumentacja wszystkich dostepnych endpointow REST API.
Organizacja i introspekcja
Uzyskaj informacje o biezacym kontekscie API i organizacji.
Pobierz biezacy kontekst
GET /api/v1/me
Zwraca informacje o kluczu API, organizacji, limitach zapytan i dostepnych funkcjach. Ten endpoint nie jest wliczany do limitu zapytan.
Przykladowe zapytanie:
curl -X GET "https://www.screenzzie.com/api/v1/me" \
-H "Authorization: Bearer sk_live_xxx"
Przykladowa odpowiedz:
{
"success": true,
"data": {
"apiKey": {
"id": "uuid",
"name": "Mój klucz API",
"keyPrefix": "sk_live_abc123",
"scopes": ["screens:read", "screens:write", "playlists:read"],
"expiresAt": null,
"lastUsedAt": "2024-01-15T10:30:00Z"
},
"organization": {
"id": "uuid",
"name": "Moja firma",
"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
}
}
}
Lista organizacji
GET /api/v1/organizations
Zwraca organizacje dostepne dla klucza API. Obecnie kazdy klucz API nalezy do dokladnie jednej organizacji.
Parametry zapytania:
| Parametr | Typ | Opis |
|---|---|---|
page | number | Numer strony (domyslnie: 1) |
limit | number | Elementow na strone (domyslnie: 20, maks: 100) |
Przykladowe zapytanie:
curl -X GET "https://www.screenzzie.com/api/v1/organizations" \
-H "Authorization: Bearer sk_live_xxx"
Przykladowa odpowiedz:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Moja firma",
"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
}
}
}
Ekrany
Zarzadzaj ekranami digital signage.
Lista ekranow
GET /api/v1/screens
Parametry zapytania:
| Parametr | Typ | Opis |
|---|---|---|
page | number | Numer strony (domyslnie: 1) |
limit | number | Elementow na strone (domyslnie: 20, maks: 100) |
isActive | boolean | Filtruj wedlug statusu aktywnosci |
isOnline | boolean | Filtruj wedlug statusu online |
screenGroupId | uuid | Filtruj wedlug grupy ekranow |
workspaceId | uuid | Filtruj wedlug obszaru roboczego |
Przykladowe zapytanie:
curl -X GET "https://www.screenzzie.com/api/v1/screens?isOnline=true&limit=10" \
-H "Authorization: Bearer sk_live_xxx"
Przykladowa odpowiedz:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Wyswietlacz Lobby",
"description": "Ekran przy glownym wejsciu",
"isActive": true,
"isOnline": true,
"lastSeenAt": "2024-01-01T12:00:00Z",
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Warsaw",
"location": "Budynek A, Pietro 1",
"cityName": "Warszawa",
"latitude": 52.2297,
"longitude": 21.0122,
"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
}
}
}
Pobierz ekran
GET /api/v1/screens/:screenId
Parametry sciezki:
| Parametr | Typ | Opis |
|---|---|---|
screenId | uuid | ID ekranu |
Przykladowa odpowiedz:
Zwraca pojedynczy obiekt ekranu o tej samej strukturze co odpowiedz listy.
Utworz ekran
POST /api/v1/screens
Cialo zapytania:
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
name | string | Tak | Nazwa ekranu (maks. 100 znakow) |
description | string | Nie | Opis ekranu (maks. 500 znakow) |
orientation | string | Nie | landscape lub portrait (domyslnie: landscape) |
rotation | string | Nie | 0, 90, 180 lub 270 (domyslnie: 0) |
timezone | string | Nie | Strefa czasowa IANA (np. Europe/Warsaw) |
location | string | Nie | Opis lokalizacji fizycznej (maks. 200 znakow) |
screenGroupId | uuid | Nie | Przynaleznosc do grupy ekranow |
workspaceId | uuid | Nie | Przypisanie do obszaru roboczego |
Przypisania playlisty i sekwencji nie moga byc ustawione podczas tworzenia. Uzyj endpointu Aktualizuj ekran, aby przypisac tresci po utworzeniu.
Przykladowe zapytanie:
curl -X POST "https://www.screenzzie.com/api/v1/screens" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Sala konferencyjna A",
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Warsaw",
"location": "Budynek B, Pokoj 101"
}'
Przykladowa odpowiedz:
{
"success": true,
"data": {
"id": "uuid",
"name": "Sala konferencyjna A",
"description": null,
"isActive": true,
"isOnline": false,
"lastSeenAt": null,
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Warsaw",
"location": "Budynek B, Pokoj 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"
}
}
Aktualizuj ekran
PATCH /api/v1/screens/:screenId
Wszystkie pola sa opcjonalne. Dolacz tylko pola, ktore chcesz zaktualizowac.
Cialo zapytania:
| Pole | Typ | Opis |
|---|---|---|
name | string | Nowa nazwa ekranu (maks. 100 znakow) |
description | string | Nowy opis (null aby wyczysc) |
orientation | string | landscape lub portrait |
rotation | string | 0, 90, 180 lub 270 |
timezone | string | Strefa czasowa IANA |
location | string | Lokalizacja fizyczna (null aby wyczysc) |
workspaceId | uuid | ID obszaru roboczego (null aby usunac) |
screenGroupId | uuid | ID grupy ekranow (null aby usunac) |
currentPlaylistId | uuid | Biezaca playlista (null aby usunac) |
currentSequenceId | uuid | Biezaca sekwencja (null aby usunac) |
defaultPlaylistId | uuid | Domyslna playlista (null aby usunac) |
defaultSequenceId | uuid | Domyslna sekwencja (null aby usunac) |
Przykladowe zapytanie:
curl -X PATCH "https://www.screenzzie.com/api/v1/screens/abc123" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Zaktualizowana nazwa wyswietlacza",
"currentPlaylistId": "playlist-uuid"
}'
Playlisty
Zarzadzaj playlistami tresci dla ekranow.
Lista playlist
GET /api/v1/playlists
Parametry zapytania:
| Parametr | Typ | Opis |
|---|---|---|
page | number | Numer strony (domyslnie: 1) |
limit | number | Elementow na strone (domyslnie: 20, maks: 100) |
workspaceId | uuid | Filtruj wedlug obszaru roboczego |
Przykladowa odpowiedz:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Glowne tresci",
"description": "Glowna playlista dla ekranow w lobby",
"itemCount": 5,
"totalDuration": 120,
"workspaceId": null,
"createdBy": "user-uuid",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T12:00:00Z"
}
],
"pagination": { ... }
}
}
Pobierz playliste
GET /api/v1/playlists/:playlistId
Zwraca playliste wraz z jej elementami. Elementy sa zawsze dolaczane w odpowiedzi.
Parametry sciezki:
| Parametr | Typ | Opis |
|---|---|---|
playlistId | uuid | ID playlisty |
Przykladowa odpowiedz:
{
"success": true,
"data": {
"id": "uuid",
"name": "Glowne tresci",
"description": "Glowna playlista dla ekranow w lobby",
"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"
}
]
}
}
Utworz playliste
POST /api/v1/playlists
Cialo zapytania:
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
name | string | Tak | Nazwa playlisty (maks. 100 znakow) |
description | string | Nie | Opis playlisty (maks. 500 znakow) |
workspaceId | uuid | Nie | Przypisanie do obszaru roboczego |
Przykladowe zapytanie:
curl -X POST "https://www.screenzzie.com/api/v1/playlists" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Promocje swiateczne",
"description": "Tresci sezonowe na grudzien"
}'
Aktualizuj playliste
PATCH /api/v1/playlists/:playlistId
Cialo zapytania:
| Pole | Typ | Opis |
|---|---|---|
name | string | Nowa nazwa playlisty |
description | string | Nowy opis (null aby wyczysc) |
workspaceId | uuid | ID obszaru roboczego (null aby usunac) |
Usun playliste
DELETE /api/v1/playlists/:playlistId
Zwraca 204 No Content przy sukcesie.
Media
Dostep do biblioteki mediow i rejestracja plikow.
Lista mediow
GET /api/v1/media
Parametry zapytania:
| Parametr | Typ | Opis |
|---|---|---|
page | number | Numer strony (domyslnie: 1) |
limit | number | Elementow na strone (domyslnie: 20, maks: 100) |
type | string | Filtruj wedlug typu: image lub video |
folderId | uuid | Filtruj wedlug folderu |
workspaceId | uuid | Filtruj wedlug obszaru roboczego |
Przykladowa odpowiedz:
{
"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": { ... }
}
}
Pobierz media
GET /api/v1/media/:mediaId
Zwraca pojedynczy obiekt media o tej samej strukturze co odpowiedz listy.
Zarejestruj media
POST /api/v1/media
Rejestruje plik media, ktory zostal juz przeslany do storage. Ten endpoint nie obsluguje przesylania plikow bezposrednio - uzyj panelu webowego do przesylania plikow.
Cialo zapytania:
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
name | string | Tak | Nazwa media (maks. 200 znakow) |
type | string | Tak | image lub video |
fileUrl | string | Tak | URL przeslanego pliku |
thumbnailUrl | string | Nie | URL miniatury |
fileSize | number | Nie | Rozmiar pliku w bajtach |
duration | number | Nie | Czas trwania w sekundach (dla wideo) |
folderId | uuid | Nie | Przypisanie do folderu |
workspaceId | uuid | Nie | Przypisanie do obszaru roboczego |
Przykladowe zapytanie:
curl -X POST "https://www.screenzzie.com/api/v1/media" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Logo firmy",
"type": "image",
"fileUrl": "https://twoj-storage.com/logo.png",
"thumbnailUrl": "https://twoj-storage.com/logo-thumb.png",
"fileSize": 102400
}'
Bezposrednie przesylanie plikow nie jest dostepne przez REST API. Przesylaj pliki przez panel webowy lub przesylaj do wlasnego storage i rejestruj URL za pomoca tego endpointu.
Usun media
DELETE /api/v1/media/:mediaId
Zwraca 204 No Content przy sukcesie.
Harmonogramy
Harmonogramy sa dostepne tylko w planie Growth i wyzszych.
Planuj tresci do odtwarzania o okreslonych porach.
Lista harmonogramow
GET /api/v1/schedules
Parametry zapytania:
| Parametr | Typ | Opis |
|---|---|---|
page | number | Numer strony (domyslnie: 1) |
limit | number | Elementow na strone (domyslnie: 20, maks: 100) |
workspaceId | uuid | Filtruj wedlug obszaru roboczego |
screenId | uuid | Filtruj wedlug ekranu |
isActive | boolean | Filtruj wedlug statusu aktywnosci |
Przykladowa odpowiedz:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Promocje weekendowe",
"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": { ... }
}
}
Pobierz harmonogram
GET /api/v1/schedules/:scheduleId
Zwraca pojedynczy obiekt harmonogramu o tej samej strukturze co odpowiedz listy.
Utworz harmonogram
POST /api/v1/schedules
Cialo zapytania:
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
name | string | Nie | Nazwa harmonogramu (maks. 100 znakow) |
playlistId | uuid | Nie* | Playlista do zaplanowania |
sequenceId | uuid | Nie* | Sekwencja do zaplanowania |
targetType | string | Tak | screen, screen_group, all_screens lub multiple_screens |
screenId | uuid | Warunkowo | Wymagane jesli targetType to screen |
screenGroupId | uuid | Warunkowo | Wymagane jesli targetType to screen_group |
dayOfWeek | number[] | Nie | Dni tygodnia (0=Niedz, 6=Sob) |
startTime | string | Nie | Czas rozpoczecia w formacie HH:MM |
endTime | string | Nie | Czas zakonczenia w formacie HH:MM |
startDate | string | Nie | Data rozpoczecia w formacie ISO |
endDate | string | Nie | Data zakonczenia w formacie ISO |
priority | number | Nie | Priorytet 0-100 (domyslnie: 0) |
isActive | boolean | Nie | Czy aktywny (domyslnie: true) |
color | string | Nie | Kolor wyswietlania (np. #3B82F6) |
workspaceId | uuid | Nie | Przypisanie do obszaru roboczego |
*Nalezey podac playlistId lub sequenceId, aby zaplanowac tresci.
Wymagania warunkowe typow celow:
| targetType | Wymagane pola |
|---|---|
screen | screenId |
screen_group | screenGroupId |
all_screens | Brak |
multiple_screens | Brak (uzyj oddzielnego endpointu do dodania ekranow) |
Przykladowe zapytanie:
curl -X POST "https://www.screenzzie.com/api/v1/schedules" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Promocje weekendowe",
"playlistId": "abc123",
"targetType": "all_screens",
"dayOfWeek": [0, 6],
"startTime": "09:00",
"endTime": "21:00",
"priority": 10,
"color": "#3B82F6"
}'
Aktualizuj harmonogram
PATCH /api/v1/schedules/:scheduleId
Wszystkie pola sa opcjonalne. Uzywa tych samych definicji pol co Utworz harmonogram.
Usun harmonogram
DELETE /api/v1/schedules/:scheduleId
Zwraca 204 No Content przy sukcesie.
Kody statusu HTTP
| Kod | Opis |
|---|---|
200 | Sukces |
201 | Utworzono |
204 | Brak zawartosci (pomyslne usuniecie) |
400 | Bledne zapytanie (blad walidacji) |
401 | Nieautoryzowany (nieprawidlowy klucz API) |
403 | Zabroniony (niewystarczajace uprawnienia lub plan) |
404 | Nie znaleziono |
429 | Zbyt wiele zapytan (limit przekroczony) |
500 | Wewnetrzny blad serwera |