apiFunkcja Growth plan

Endpointy API

Kompletna referencja wszystkich endpointow REST API Screenzzie

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:

ParametrTypOpis
pagenumberNumer strony (domyslnie: 1)
limitnumberElementow 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:

ParametrTypOpis
pagenumberNumer strony (domyslnie: 1)
limitnumberElementow na strone (domyslnie: 20, maks: 100)
isActivebooleanFiltruj wedlug statusu aktywnosci
isOnlinebooleanFiltruj wedlug statusu online
screenGroupIduuidFiltruj wedlug grupy ekranow
workspaceIduuidFiltruj 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:

ParametrTypOpis
screenIduuidID ekranu

Przykladowa odpowiedz:

Zwraca pojedynczy obiekt ekranu o tej samej strukturze co odpowiedz listy.

Utworz ekran

POST /api/v1/screens

Cialo zapytania:

PoleTypWymaganeOpis
namestringTakNazwa ekranu (maks. 100 znakow)
descriptionstringNieOpis ekranu (maks. 500 znakow)
orientationstringNielandscape lub portrait (domyslnie: landscape)
rotationstringNie0, 90, 180 lub 270 (domyslnie: 0)
timezonestringNieStrefa czasowa IANA (np. Europe/Warsaw)
locationstringNieOpis lokalizacji fizycznej (maks. 200 znakow)
screenGroupIduuidNiePrzynaleznosc do grupy ekranow
workspaceIduuidNiePrzypisanie 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:

PoleTypOpis
namestringNowa nazwa ekranu (maks. 100 znakow)
descriptionstringNowy opis (null aby wyczysc)
orientationstringlandscape lub portrait
rotationstring0, 90, 180 lub 270
timezonestringStrefa czasowa IANA
locationstringLokalizacja fizyczna (null aby wyczysc)
workspaceIduuidID obszaru roboczego (null aby usunac)
screenGroupIduuidID grupy ekranow (null aby usunac)
currentPlaylistIduuidBiezaca playlista (null aby usunac)
currentSequenceIduuidBiezaca sekwencja (null aby usunac)
defaultPlaylistIduuidDomyslna playlista (null aby usunac)
defaultSequenceIduuidDomyslna 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:

ParametrTypOpis
pagenumberNumer strony (domyslnie: 1)
limitnumberElementow na strone (domyslnie: 20, maks: 100)
workspaceIduuidFiltruj 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:

ParametrTypOpis
playlistIduuidID 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:

PoleTypWymaganeOpis
namestringTakNazwa playlisty (maks. 100 znakow)
descriptionstringNieOpis playlisty (maks. 500 znakow)
workspaceIduuidNiePrzypisanie 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:

PoleTypOpis
namestringNowa nazwa playlisty
descriptionstringNowy opis (null aby wyczysc)
workspaceIduuidID 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:

ParametrTypOpis
pagenumberNumer strony (domyslnie: 1)
limitnumberElementow na strone (domyslnie: 20, maks: 100)
typestringFiltruj wedlug typu: image lub video
folderIduuidFiltruj wedlug folderu
workspaceIduuidFiltruj 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:

PoleTypWymaganeOpis
namestringTakNazwa media (maks. 200 znakow)
typestringTakimage lub video
fileUrlstringTakURL przeslanego pliku
thumbnailUrlstringNieURL miniatury
fileSizenumberNieRozmiar pliku w bajtach
durationnumberNieCzas trwania w sekundach (dla wideo)
folderIduuidNiePrzypisanie do folderu
workspaceIduuidNiePrzypisanie 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:

ParametrTypOpis
pagenumberNumer strony (domyslnie: 1)
limitnumberElementow na strone (domyslnie: 20, maks: 100)
workspaceIduuidFiltruj wedlug obszaru roboczego
screenIduuidFiltruj wedlug ekranu
isActivebooleanFiltruj 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:

PoleTypWymaganeOpis
namestringNieNazwa harmonogramu (maks. 100 znakow)
playlistIduuidNie*Playlista do zaplanowania
sequenceIduuidNie*Sekwencja do zaplanowania
targetTypestringTakscreen, screen_group, all_screens lub multiple_screens
screenIduuidWarunkowoWymagane jesli targetType to screen
screenGroupIduuidWarunkowoWymagane jesli targetType to screen_group
dayOfWeeknumber[]NieDni tygodnia (0=Niedz, 6=Sob)
startTimestringNieCzas rozpoczecia w formacie HH:MM
endTimestringNieCzas zakonczenia w formacie HH:MM
startDatestringNieData rozpoczecia w formacie ISO
endDatestringNieData zakonczenia w formacie ISO
prioritynumberNiePriorytet 0-100 (domyslnie: 0)
isActivebooleanNieCzy aktywny (domyslnie: true)
colorstringNieKolor wyswietlania (np. #3B82F6)
workspaceIduuidNiePrzypisanie do obszaru roboczego

*Nalezey podac playlistId lub sequenceId, aby zaplanowac tresci.

Wymagania warunkowe typow celow:

targetTypeWymagane pola
screenscreenId
screen_groupscreenGroupId
all_screensBrak
multiple_screensBrak (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

KodOpis
200Sukces
201Utworzono
204Brak zawartosci (pomyslne usuniecie)
400Bledne zapytanie (blad walidacji)
401Nieautoryzowany (nieprawidlowy klucz API)
403Zabroniony (niewystarczajace uprawnienia lub plan)
404Nie znaleziono
429Zbyt wiele zapytan (limit przekroczony)
500Wewnetrzny blad serwera