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
| Metoda | Punkt końcowy | Opis |
|---|---|---|
POST | /{topic} | Publikowanie wiadomości do tematu |
PUT | /{topic} | Publikowanie wiadomości do tematu (alias) |
Zarządzanie tematami
| Metoda | Punkt końcowy | Opis |
|---|---|---|
GET | /api/topics | Lista wszystkich tematów |
GET | /api/topics/my | Lista tematów użytkownika (wymaga uwierzytelnienia) |
GET | /api/topics/public | Lista publicznych/odkrywalnych tematów |
POST | /api/topics | Utworzenie nowego tematu (wymaga uwierzytelnienia) |
GET | /api/topics/{name} | Pobieranie szczegółów tematu po nazwie |
GET | /api/topics/{name}/stats | Pobieranie statystyk tematu |
GET | /api/topics/{name}/messages | Wyszukiwanie 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
| Metoda | Punkt końcowy | Opis |
|---|---|---|
GET | /{topic}/json | Pobieranie historii wiadomości (JSON) |
GET | /api/messages/search | Wyszukiwanie wiadomości z filtrami |
GET | /api/messages/recent | Pobieranie ostatnich wiadomości z subskrybowanych tematów |
GET | /api/messages/activity | Pobieranie 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
| Metoda | Punkt końcowy | Opis |
|---|---|---|
GET | /sse | Subskrypcja wielu tematów (multi-SSE) |
POST | /api/sse/sessions | Utworzenie sesji SSE dla krótkich URL |
GET | /{topic}/sse | Subskrypcja pojedynczego tematu przez SSE |
WS | /{topic}/ws | Subskrypcja przez WebSocket |
Uwierzytelnianie
| Metoda | Punkt końcowy | Opis |
|---|---|---|
POST | /auth/register | Rejestracja nowego użytkownika |
POST | /auth/login | Logowanie (email/hasło) |
GET | /auth/google/login | Inicjowanie Google OAuth |
POST | /auth/apple/mobile | Apple Sign-In (iOS) |
GET | /auth/me | Pobieranie informacji o bieżącym użytkowniku |
POST | /auth/refresh | Odświeżanie tokenu dostępu |
GET | /auth/verify-email | Weryfikacja adresu email |
POST | /auth/resend-verification | Ponowne wysłanie emaila weryfikacyjnego |
POST | /auth/password-reset/request | Żądanie resetowania hasła |
POST | /auth/password-reset/confirm | Potwierdzenie resetowania hasła |
POST | /auth/password-change | Zmiana hasła |
POST | /auth/accept-terms | Akceptacja Regulaminu |
GET | /auth/consent-history | Pobieranie historii zgód (GDPR) |
Zarządzanie użytkownikami
| Metoda | Punkt końcowy | Opis |
|---|---|---|
GET | /api/users/me | Pobieranie profilu bieżącego użytkownika |
PATCH | /api/users/me | Aktualizacja profilu użytkownika |
GET | /api/users/me/data | Eksport danych użytkownika (GDPR) |
DELETE | /api/users/me | Usunięcie konta (GDPR) |
Urządzenia (Mobile)
| Metoda | Punkt końcowy | Opis |
|---|---|---|
POST | /api/devices/register | Rejestracja urządzenia do push |
GET | /api/devices/my | Lista 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}/test | Wysłanie testowego powiadomienia |
Subskrypcje
| Metoda | Punkt końcowy | Opis |
|---|---|---|
GET | /api/subscriptions | Lista subskrypcji użytkownika |
POST | /api/subscriptions | Utworzenie 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
| Metoda | Punkt końcowy | Opis |
|---|---|---|
GET | /api/keys | Lista kluczy API |
POST | /api/keys | Utworzenie klucza API |
DELETE | /api/keys/{key_id} | Odwołanie klucza API |
Tokeny dostępu do tematów
| Metoda | Punkt końcowy | Opis |
|---|---|---|
GET | /api/topics/{topic}/access-tokens | Lista tokenów |
POST | /api/topics/{topic}/access-tokens | Utworzenie tokenu |
DELETE | /api/topics/{topic}/access-tokens/{token_id} | Odwołanie tokenu |
Zespoły (Plan TEAM+)
| Metoda | Punkt końcowy | Opis |
|---|---|---|
GET | /api/teams | Lista zespołów użytkownika |
GET | /api/teams/stats | Pobieranie statystyk zespołu |
GET | /api/teams/deactivated | Lista dezaktywowanych zespołów |
POST | /api/teams | Utworzenie 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}/reactivate | Reaktywacja zespołu |
GET | /api/teams/{team_id}/members | Lista 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}/invites | Zaproszenie członka |
GET | /api/teams/{team_id}/invites | Lista oczekujących zaproszeń |
POST | /api/teams/invites/accept | Akceptacja zaproszenia |
POST | /api/teams/invites/{id}/resend | Ponowne 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
| Kod | Znaczenie |
|---|---|
200 | Sukces |
201 | Utworzono |
204 | Brak treści (pomyślne usunięcie) |
400 | Nieprawidłowe żądanie (nieprawidłowe dane wejściowe) |
401 | Nieuwierzytelniony (wymagane uwierzytelnienie) |
403 | Zabronione (niewystarczające uprawnienia) |
404 | Nie znaleziono |
409 | Konflikt (np. nazwa tematu już istnieje) |
422 | Nie można przetworzyć jednostki (błąd walidacji) |
429 | Przekroczono limit częstotliwości |
500 | Wewnę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:
Lub w formacie ReDoc:
SDK i biblioteki
Oficjalne SDK
- Python: notifer-python (Wkrótce)
- JavaScript/Node.js: notifer-js (Wkrótce)
- Go: notifer-go (Wkrótce)
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
- Przewodnik uwierzytelniania - Poznaj metody uwierzytelniania
- Dokumentacja API - Kompletna dokumentacja punktów końcowych
- Przewodnik publikowania - Wysyłanie wiadomości przez HTTP
- Przewodnik SSE - Subskrypcje w czasie rzeczywistym
Wsparcie
- Interaktywna dokumentacja: https://app.notifer.io/docs
- Email: support@notifer.io
- GitHub Issues: https://github.com/notifer/notifer/issues