Przejdź do głównej zawartości

Przegląd API

Notifer zapewnia prosty REST API do programowego dostępu do tematów, wiadomości i subskrypcji.

Bazowy URL

https://app.notifer.io

Wszystkie punkty końcowe API są udostępniane z tej samej domeny co aplikacja webowa.

Struktura API

Notifer API podąża za zasadami REST i używa:

  • Metody HTTP: GET, POST, PUT, PATCH, DELETE
  • JSON dla treści żądań/odpowiedzi (z wyjątkiem prostego publikowania)
  • Standardowe kody statusu HTTP
  • Tokeny JWT do uwierzytelniania

Przegląd punktów końcowych

Publikowanie wiadomości

MetodaPunkt końcowyOpis
POST/{topic}Publikowanie wiadomości do tematu
PUT/{topic}Publikowanie wiadomości do tematu (alias)

Zarządzanie tematami

MetodaPunkt końcowyOpis
GET/api/topicsLista wszystkich tematów
GET/api/topics/myLista tematów użytkownika (wymaga uwierzytelnienia)
GET/api/topics/publicLista publicznych/odkrywalnych tematów
POST/api/topicsUtworzenie nowego tematu (wymaga uwierzytelnienia)
GET/api/topics/{name}Pobieranie szczegółów tematu po nazwie
GET/api/topics/{name}/statsPobieranie statystyk tematu
GET/api/topics/{name}/messagesWyszukiwanie wiadomości w temacie
PATCH/api/topics/{topic_id}Aktualizacja ustawień tematu (po UUID)
DELETE/api/topics/{topic_id}Usunięcie tematu (po UUID)

Wiadomości

MetodaPunkt końcowyOpis
GET/{topic}/jsonPobieranie historii wiadomości (JSON)
GET/api/messages/searchWyszukiwanie wiadomości z filtrami
GET/api/messages/recentPobieranie ostatnich wiadomości z subskrybowanych tematów
GET/api/messages/activityPobieranie statystyk aktywności wiadomości dla wykresów
DELETE/api/{topic}/messages/{id}Miękkie usunięcie wiadomości (ESSENTIALS+)
PATCH/api/{topic}/messages/{id}Edycja wiadomości (ESSENTIALS+)

Subskrypcje w czasie rzeczywistym

MetodaPunkt końcowyOpis
GET/sseSubskrypcja wielu tematów (multi-SSE)
POST/api/sse/sessionsUtworzenie sesji SSE dla krótkich URL
GET/{topic}/sseSubskrypcja pojedynczego tematu przez SSE
WS/{topic}/wsSubskrypcja przez WebSocket

Uwierzytelnianie

MetodaPunkt końcowyOpis
POST/auth/registerRejestracja nowego użytkownika
POST/auth/loginLogowanie (email/hasło)
GET/auth/google/loginInicjowanie Google OAuth
POST/auth/apple/mobileApple Sign-In (iOS)
GET/auth/mePobieranie informacji o bieżącym użytkowniku
POST/auth/refreshOdświeżanie tokenu dostępu
GET/auth/verify-emailWeryfikacja adresu email
POST/auth/resend-verificationPonowne wysłanie emaila weryfikacyjnego
POST/auth/password-reset/requestŻądanie resetowania hasła
POST/auth/password-reset/confirmPotwierdzenie resetowania hasła
POST/auth/password-changeZmiana hasła
POST/auth/accept-termsAkceptacja Regulaminu
GET/auth/consent-historyPobieranie historii zgód (GDPR)

Zarządzanie użytkownikami

MetodaPunkt końcowyOpis
GET/api/users/mePobieranie profilu bieżącego użytkownika
PATCH/api/users/meAktualizacja profilu użytkownika
GET/api/users/me/dataEksport danych użytkownika (GDPR)
DELETE/api/users/meUsunięcie konta (GDPR)

Urządzenia (Mobile)

MetodaPunkt końcowyOpis
POST/api/devices/registerRejestracja urządzenia do push
GET/api/devices/myLista urządzeń użytkownika
GET/api/devices/{id}Pobieranie szczegółów urządzenia
PUT/api/devices/{id}Aktualizacja urządzenia
DELETE/api/devices/{id}Usunięcie urządzenia
POST/api/devices/{id}/testWysłanie testowego powiadomienia

Subskrypcje

MetodaPunkt końcowyOpis
GET/api/subscriptionsLista subskrypcji użytkownika
POST/api/subscriptionsUtworzenie subskrypcji
PATCH/api/subscriptions/{id}Aktualizacja ustawień subskrypcji
DELETE/api/subscriptions/{id}Usunięcie subskrypcji
DELETE/api/subscriptions/by-topic/{name}Anulowanie subskrypcji po nazwie tematu
GET/api/subscriptions/check/{name}Sprawdzenie czy subskrybowany

Klucze API

MetodaPunkt końcowyOpis
GET/api/keysLista kluczy API
POST/api/keysUtworzenie klucza API
DELETE/api/keys/{key_id}Odwołanie klucza API

Tokeny dostępu do tematów

MetodaPunkt końcowyOpis
GET/api/topics/{topic}/access-tokensLista tokenów
POST/api/topics/{topic}/access-tokensUtworzenie tokenu
DELETE/api/topics/{topic}/access-tokens/{token_id}Odwołanie tokenu

Zespoły (Plan TEAM+)

MetodaPunkt końcowyOpis
GET/api/teamsLista zespołów użytkownika
GET/api/teams/statsPobieranie statystyk zespołu
GET/api/teams/deactivatedLista dezaktywowanych zespołów
POST/api/teamsUtworzenie zespołu
GET/api/teams/{team_id}Pobieranie szczegółów zespołu
PATCH/api/teams/{team_id}Aktualizacja zespołu
DELETE/api/teams/{team_id}Usunięcie zespołu
POST/api/teams/{team_id}/reactivateReaktywacja zespołu
GET/api/teams/{team_id}/membersLista członków zespołu
PATCH/api/teams/{team_id}/members/{user_id}Aktualizacja roli członka
DELETE/api/teams/{team_id}/members/{user_id}Usunięcie członka
POST/api/teams/{team_id}/invitesZaproszenie członka
GET/api/teams/{team_id}/invitesLista oczekujących zaproszeń
POST/api/teams/invites/acceptAkceptacja zaproszenia
POST/api/teams/invites/{id}/resendPonowne wysłanie zaproszenia
DELETE/api/teams/invites/{id}Anulowanie zaproszenia

Format odpowiedzi

Odpowiedź sukcesu

{
"id": "uuid",
"name": "my-topic",
"created_at": "2025-01-15T10:30:00Z",
"message_count": 42
}

Odpowiedź błędu

{
"detail": "Topic not found"
}

Kody statusu HTTP

KodZnaczenie
200Sukces
201Utworzono
204Brak treści (pomyślne usunięcie)
400Nieprawidłowe żądanie (nieprawidłowe dane wejściowe)
401Nieuwierzytelniony (wymagane uwierzytelnienie)
403Zabronione (niewystarczające uprawnienia)
404Nie znaleziono
409Konflikt (np. nazwa tematu już istnieje)
422Nie można przetworzyć jednostki (błąd walidacji)
429Przekroczono limit częstotliwości
500Wewnętrzny błąd serwera

Ograniczanie częstotliwości

Limity częstotliwości różnią się w zależności od planu subskrypcji:

Limity planów:

Gdy zostanie osiągnięty limit częstotliwości, API zwraca HTTP 429 z nagłówkiem:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1641024000

Paginacja

Punkty końcowe list wspierają paginację:

GET /api/topics?limit=50&offset=0

Parametry:

  • limit - Maksymalna liczba elementów do zwrócenia (domyślnie: 50, max: 100)
  • offset - Liczba elementów do pominięcia (domyślnie: 0)

Interaktywna dokumentacja

Eksploruj pełne API interaktywnie używając Swagger UI:

https://app.notifer.io/docs

Lub w formacie ReDoc:

https://app.notifer.io/redoc

SDK i biblioteki

Oficjalne SDK

Biblioteki społeczności

Sprawdź GitHub dla bibliotek tworzonych przez społeczność.

Przykłady

Publikowanie z uwierzytelnianiem

# Najpierw pobierz token JWT
TOKEN=$(curl -X POST https://app.notifer.io/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "secret"}' \
| jq -r '.access_token')

# Publikowanie do prywatnego tematu
curl -d "Authenticated message" \
-H "Authorization: Bearer $TOKEN" \
https://app.notifer.io/my-private-topic

Tworzenie tematu

curl -X POST https://app.notifer.io/api/topics \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "server-alerts",
"access_level": "private",
"description": "Production server monitoring",
"is_discoverable": false
}'

Subskrybowanie przez SSE

# Publiczny temat
curl -N https://app.notifer.io/server-alerts/sse

# Prywatny temat
curl -N "https://app.notifer.io/server-alerts/sse?token=$TOKEN"

Następne kroki

Wsparcie