Przejdź do głównej zawartości

Publikowanie przez HTTP

Najprostszy sposób publikowania wiadomości to wykorzystanie żądań HTTP POST lub PUT.

Podstawowe publikowanie

Żądanie POST

curl -d "Twoja wiadomość tutaj" \
-H "Authorization: Bearer YOUR_TOKEN" \
https://app.notifer.io/twoj-temat

Żądanie PUT

echo "Twoja wiadomość" | curl -T - \
-H "Authorization: Bearer YOUR_TOKEN" \
https://app.notifer.io/twoj-temat

Obie metody działają identycznie - użyj tej, która jest wygodniejsza.

Wymagane uwierzytelnianie

Wszystkie poniższe przykłady zakładają skonfigurowane uwierzytelnianie. Szczegóły w sekcji Uwierzytelnianie.

Parametry wiadomości

Dodaj szczegóły do swoich wiadomości używając nagłówków HTTP:

Tytuł

curl -d "Wdrożenie zakończone pomyślnie" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-Title: Wdrożenie produkcyjne" \
https://app.notifer.io/deployments

Priorytet

Ustaw priorytet od 1 (krytyczny) do 5 (informacyjny) za pomocą nagłówka X-Priority. Szczegóły w Priorytet.

curl -d "Serwer nie działa!" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-Priority: 1" \
https://app.notifer.io/alerts

Tagi

Dodaj tagi oddzielone przecinkami za pomocą nagłówka X-Tags. Szczegóły w Tagi.

curl -d "Utracono połączenie z bazą danych" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-Tags: database,error,production" \
https://app.notifer.io/alerts

Połączone parametry

curl -d "Użycie CPU na poziomie 95%" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-Title: Alert serwera" \
-H "X-Priority: 2" \
-H "X-Tags: server,cpu,warning" \
https://app.notifer.io/monitoring

Uwierzytelnianie

Wszystkie publikacje wymagają uwierzytelniania - nawet do publicznych tematów. Użyj jednej z trzech metod: tokeny JWT, klucze API lub tokeny dostępu do tematów.

# Token JWT (uwierzytelnianie użytkownika)
curl -d "Twoja wiadomość" \
-H "Authorization: Bearer eyJhbGciOiJIUz..." \
https://app.notifer.io/twoj-temat

# Klucz API (uwierzytelnianie skryptów)
curl -d "Twoja wiadomość" \
-H "X-API-Key: noti_your_key_here" \
https://app.notifer.io/twoj-temat

# Token dostępu do tematu (uwierzytelnianie z zakresem tematu)
curl -d "Twoja wiadomość" \
-H "X-Topic-Token: tk_your_token_here" \
https://app.notifer.io/twoj-temat
Szczegóły uwierzytelniania

Pełny opis wszystkich metod uwierzytelniania (tokeny JWT, klucze API, tokeny dostępu do tematów), porównanie oraz przykłady kodu znajdziesz w Uwierzytelnianie.

Tematy muszą istnieć przed publikowaniem

Wszystkie tematy muszą być utworzone przez panel, API lub CLI przed publikowaniem do nich. Publikowanie do nieistniejącego tematu zwraca błąd 404.

Tematy publiczne vs prywatne
  • Publiczne tematy: Każdy może czytać/subskrybować, ale publikowanie nadal wymaga uwierzytelniania
  • Prywatne tematy: Zarówno odczyt jak i publikowanie wymaga uwierzytelniania

Formatowanie Markdown

Wiadomości obsługują Markdown:

curl -d "**Pogrubienie**, *kursywa*, \`kod\`, i [linki](https://example.com)" \
-H "Authorization: Bearer YOUR_TOKEN" \
https://app.notifer.io/formatted-messages

Obsługiwany Markdown:

  • **bold**bold
  • *italic*italic
  • `code`code
  • [link](url)link
  • # Heading → Heading
  • - List item → List item
  • > Quote → Quote
  • ```code block``` → Code block

Format odpowiedzi

Odpowiedź sukcesu

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"topic": "your-topic",
"message": "Twoja wiadomość tutaj",
"title": "Opcjonalny tytuł",
"priority": 3,
"tags": ["tag1", "tag2"],
"timestamp": "2025-11-02T10:30:00Z"
}

Kod statusu: 200 OK

Odpowiedź błędu

{
"detail": "Topic not found or access denied"
}

Popularne kody statusu:

  • 400 Bad Request - Nieprawidłowe parametry
  • 401 Unauthorized - Brak lub nieprawidłowe uwierzytelnienie
  • 403 Forbidden - Brak uprawnień do publikowania
  • 404 Not Found - Temat nie istnieje (dla prywatnych tematów)
  • 429 Too Many Requests - Przekroczono limit żądań

Przykłady z rzeczywistości

Monitorowanie serwera

#!/bin/bash
# Sprawdź miejsce na dysku i powiadom, jeśli > 80%
USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $USAGE -gt 80 ]; then
curl -d "Użycie dysku na poziomie ${USAGE}%" \
-H "X-Priority: 2" \
-H "X-Tags: server,disk,warning" \
https://app.notifer.io/server-alerts
fi

Pipeline CI/CD

# Przykład GitHub Actions
- name: Notify deployment
run: |
curl -d "Wdrożenie do produkcji zakończone" \
-H "X-Title: Deploy Success" \
-H "X-Tags: ci,deploy,production" \
-H "X-Topic-Token: ${{ secrets.NOTIFER_TOPIC_TOKEN }}" \
https://app.notifer.io/ci-notifications

Kopia zapasowa bazy danych

#!/bin/bash
# Wykonaj kopię zapasową bazy danych i powiadom
if pg_dump mydb > backup.sql; then
curl -d "Kopia zapasowa bazy danych zakończona pomyślnie" \
-H "X-Title: Backup Success" \
-H "X-Priority: 3" \
-H "X-Tags: backup,database,success" \
https://app.notifer.io/backups
else
curl -d "Kopia zapasowa bazy danych NIE POWIODŁA SIĘ!" \
-H "X-Title: Backup Failed" \
-H "X-Priority: 1" \
-H "X-Tags: backup,database,error" \
https://app.notifer.io/backups
fi

Monitorowanie logów

# Powiadom o błędzie w logach
tail -f /var/log/app.log | grep -i error | while read line; do
curl -d "$line" \
-H "X-Title: Application Error" \
-H "X-Priority: 2" \
-H "X-Tags: logs,error" \
https://app.notifer.io/app-errors
done

Sprawdzanie stanu zdrowia

#!/bin/bash
# Sprawdź usługę i powiadom, jeśli nie działa
if ! curl -sf https://myapp.com/health > /dev/null; then
curl -d "Sprawdzanie stanu zdrowia usługi nie powiodło się!" \
-H "X-Priority: 1" \
-H "X-Tags: health,critical" \
-H "X-Topic-Token: tk_your_token_here" \
https://app.notifer.io/alerts
fi

Opcje zaawansowane

Ograniczanie liczby żądań

Przestrzegaj limitów żądań sprawdzając nagłówki odpowiedzi:

curl -i -d "Wiadomość" https://app.notifer.io/topic

Nagłówki odpowiedzi:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 9
X-RateLimit-Reset: 1699000000

Logika ponawiania

Zaimplementuj wykładniczy backoff dla nieudanych żądań:

#!/bin/bash
MAX_RETRIES=3
RETRY_DELAY=1

for i in $(seq 1 $MAX_RETRIES); do
if curl -d "Wiadomość" https://app.notifer.io/topic; then
exit 0
fi
echo "Próba $i nie powiodła się, czekam ${RETRY_DELAY}s"
sleep $RETRY_DELAY
RETRY_DELAY=$((RETRY_DELAY * 2))
done
echo "Wszystkie próby nie powiodły się"
exit 1

Następne kroki