Powrót do wyboru API

Dokumentacja API Modułów Wyszukiwarki

API dla modułów wyszukiwarki działających na subdomenach parafii

Autoryzacja

Wszystkie endpointy wymagają autoryzacji przez klucz API. Klucz można przekazać na jeden z następujących sposobów:

  1. Nagłówek HTTP: X-API-Key: twoj_klucz_api
  2. Parametr GET: ?api_key=twoj_klucz_api
  3. Parametr POST: api_key=twoj_klucz_api
  4. JSON body: {"api_key": "twoj_klucz_api", ...}
Uwaga: Niektóre akcje wymagają dodatkowej autoryzacji administratora (oznaczone jako ADMIN).
Jak uzyskać klucz API?
Klucz API można wygenerować w panelu użytkownika (/user/api-keys) lub w panelu administratora (/admin/api-keys). Klucz API jest powiązany z konkretną parafią (subdomeną).

Zapal Znicz

Endpoint: /api/zapal_znicz

Base URL: https://{parish-slug}.grobnet.eu/api/zapal_znicz

Akcje
get_zapal_znicz

Pobiera zapalone znicze dla danego grobu.

Parametry:

  • action (wymagane) - get_zapal_znicz
  • Id (wymagane) - ID zmarłego

Przykład:

curl -X GET \
  -H "X-API-Key: twoj_klucz_api" \
  "https://subdomena.grobnet.eu/api/zapal_znicz?action=get_zapal_znicz&Id=123"

Odpowiedź:

{
  "status": "success",
  "message": "Pobrano zapalone znicze",
  "data": {
    "znicze": [...],
    "ile_zapalono": 2,
    "ile_zniczy": 0,
    "limit": 2,
    "count": 1
  }
}
add_zapal_znicz

Zapala znicz z pełną logiką i ograniczeniami.

Parametry:

  • action (wymagane) - add_zapal_znicz
  • Id (wymagane) - ID zmarłego
  • podpis (wymagane) - Podpis osoby zapalającej znicz (minimum 5 znaków)
  • cmentarzID (opcjonalne) - ID cmentarza
  • id_user (opcjonalne) - ID użytkownika

Ograniczenia:

  • Podpis musi mieć minimum 5 znaków
  • Podpis nie może zawierać powtarzających się znaków (>60%)
  • Sprawdzany jest limit zapalonych zniczy
  • Sprawdzana jest blacklista IP
  • Filtrowane są przekleństwa

Przykład:

curl -X POST \
  -H "X-API-Key: twoj_klucz_api" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "add_zapal_znicz",
    "Id": 123,
    "podpis": "Kochająca rodzina",
    "id_user": 0
  }' \
  https://subdomena.grobnet.eu/api/zapal_znicz

Aktualności

Endpoint: /api/aktualnosci

Base URL: https://{parish-slug}.grobnet.eu/api/aktualnosci

Akcje
get_posts

Pobiera listę postów/aktualności.

Parametry:

  • action (wymagane) - get_posts
  • page (opcjonalne) - Numer strony (domyślnie: 1)
  • limit (opcjonalne) - Liczba wyników na stronę (domyślnie: 20, max: 100)
  • post_cat (opcjonalne) - ID kategorii
  • draft (opcjonalne) - 0 = opublikowane, 1 = szkice

Przykład:

curl -X GET \
  -H "X-API-Key: twoj_klucz_api" \
  "https://subdomena.grobnet.eu/api/aktualnosci?action=get_posts&page=1&limit=20"
get_post

Pobiera pojedynczy post.

Parametry:

  • action (wymagane) - get_post
  • post_id (wymagane) - ID posta

Przykład:

curl -X GET \
  -H "X-API-Key: twoj_klucz_api" \
  "https://subdomena.grobnet.eu/api/aktualnosci?action=get_post&post_id=1"
add_post ADMIN

Dodaje nowy post (wymaga uprawnień administratora).

Parametry (POST/JSON):

  • action (wymagane) - add_post
  • title (wymagane) - Tytuł posta
  • content (wymagane) - Treść posta (HTML)
  • excerpt (opcjonalne) - Krótki opis
  • status (opcjonalne) - Status (publish/draft, domyślnie: publish)
  • categories (opcjonalne) - Tablica ID kategorii
  • tags (opcjonalne) - Tablica tagów
  • featured_media (opcjonalne) - ID załącznika będącego miniaturą

Przykład:

curl -X POST \
  -H "X-API-Key: twoj_klucz_api" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "add_post",
    "title": "Przykładowy tytuł",
    "content": "

Treść posta w formacie HTML

", "excerpt": "Krótki opis posta", "status": "publish", "categories": [1, 3], "tags": ["ważne", "ogłoszenie"], "featured_media": 123 }' \ https://subdomena.grobnet.eu/api/aktualnosci
update_post ADMIN

Aktualizuje istniejący post.

Parametry:

  • action (wymagane) - update_post
  • post_id (wymagane) - ID posta
  • post_subject (opcjonalne) - Tytuł posta
  • post_news (opcjonalne) - Treść posta
  • post_extended (opcjonalne) - Rozszerzona treść
  • post_cat (opcjonalne) - ID kategorii
  • post_draft (opcjonalne) - 0 = opublikowany, 1 = szkic
  • post_sticky (opcjonalne) - 0 = normalny, 1 = przyklejony
delete_post ADMIN

Usuwa post.

Parametry:

  • action (wymagane) - delete_post
  • post_id (wymagane) - ID posta

Dysponent

Endpoint: /api/dysponent

Base URL: https://{parish-slug}.grobnet.eu/api/dysponent

Akcje
get_dysponent

Pobiera zgłoszenia dysponentów.

Parametry:

  • action (wymagane) - get_dysponent
  • page (opcjonalne) - Numer strony (domyślnie: 1)
  • limit (opcjonalne) - Liczba wyników na stronę (domyślnie: 20, max: 100)
  • grvid (opcjonalne) - ID grobu (grvid)
  • id_zmarly (opcjonalne) - ID zmarłego

Przykład:

curl -X GET \
  -H "X-API-Key: twoj_klucz_api" \
  "https://subdomena.grobnet.eu/api/dysponent?action=get_dysponent&page=1&limit=20"
add_dysponent

Dodaje zgłoszenie dysponenta.

Parametry:

  • action (wymagane) - add_dysponent
  • grvid (wymagane) - ID grobu (grvid)
  • dysponent_name (wymagane) - Imię dysponenta
  • dysponent_nazwisko (wymagane) - Nazwisko dysponenta
  • dysponent_email (wymagane) - Email dysponenta (walidacja email i domeny)
  • dysponent_phone (wymagane) - Telefon dysponenta
  • id_zmarly (opcjonalne) - ID zmarłego
  • opiekunowie_email_active (opcjonalne) - 1 = aktywny email, 0 = nieaktywny
  • opiekunowie_sms_active (opcjonalne) - 1 = aktywny SMS, 0 = nieaktywny
  • sektor (opcjonalne) - Sektor grobu
  • rzad (opcjonalne) - Rząd grobu
  • pole_grobu (opcjonalne) - Pole grobu

Przykład:

curl -X POST \
  -H "X-API-Key: twoj_klucz_api" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "add_dysponent",
    "grvid": "123",
    "dysponent_name": "Jan",
    "dysponent_nazwisko": "Kowalski",
    "dysponent_email": "jan@example.com",
    "dysponent_phone": "123456789",
    "opiekunowie_email_active": 1,
    "opiekunowie_sms_active": 0
  }' \
  https://subdomena.grobnet.eu/api/dysponent
Uwaga: Jeśli zgłoszenie już istnieje dla danego grvid, zwracany jest status warning z komunikatem.

Zgłoszenia Błędów

Endpoint: /api/blad

Base URL: https://{parish-slug}.grobnet.eu/api/blad

Akcje
get_blad

Pobiera zgłoszenia błędów.

Parametry:

  • action (wymagane) - get_blad
  • page (opcjonalne) - Numer strony (domyślnie: 1)
  • limit (opcjonalne) - Liczba wyników na stronę (domyślnie: 20, max: 100)
  • message_to (opcjonalne) - ID administratora (odbiorca)
  • message_from (opcjonalne) - ID użytkownika (nadawca)
  • message_status (opcjonalne) - Status: 0 = otwarte, 1 = w trakcie, 2 = zamknięte, -1 = wszystkie

Przykład:

curl -X GET \
  -H "X-API-Key: twoj_klucz_api" \
  "https://subdomena.grobnet.eu/api/blad?action=get_blad&page=1&limit=20"
add_blad

Dodaje zgłoszenie błędu.

Parametry:

  • action (wymagane) - add_blad
  • tytul (wymagane) - Tytuł zgłoszenia (minimum 3 znaki)
  • messenger (wymagane) - Treść zgłoszenia (minimum 20 znaków)
  • email (wymagane) - Email nadawcy
  • id_admin (wymagane) - ID administratora (odbiorca)
  • name (opcjonalne) - Imię i nazwisko (jeśli użytkownik nie jest zalogowany)
  • imie_and_nazwisko (opcjonalne) - Imię i nazwisko zmarłego
  • p1 (opcjonalne) - Sektor
  • p2 (opcjonalne) - Rząd
  • p3 (opcjonalne) - Pole grobu
  • attachment (opcjonalne) - Załączniki (multipart/form-data, max 1MB, formaty: jpg, jpeg, png, gif, pdf)

Przykład:

curl -X POST \
  -H "X-API-Key: twoj_klucz_api" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "add_blad",
    "tytul": "Błąd w danych",
    "messenger": "Opis błędu który znalazłem na stronie",
    "email": "test@example.com",
    "id_admin": 1,
    "imie_and_nazwisko": "Jan Kowalski",
    "p1": "A",
    "p2": "1",
    "p3": "001"
  }' \
  https://subdomena.grobnet.eu/api/blad

Maps

Endpoint: /api/maps

Base URL: https://{parish-slug}.grobnet.eu/api/maps

Akcje
get_maps

Pobiera mapy sektorów.

Parametry:

  • action (wymagane) - get_maps
  • page (opcjonalne) - Numer strony (domyślnie: 1)
  • limit (opcjonalne) - Liczba wyników na stronę (domyślnie: 20, max: 100)
  • sektor (opcjonalne) - Nazwa sektora
  • aktywna (opcjonalne) - 1 = aktywne, 0 = nieaktywne, -1 = wszystkie

Przykład:

curl -X GET \
  -H "X-API-Key: twoj_klucz_api" \
  "https://subdomena.grobnet.eu/api/maps?action=get_maps&sektor=A_I"
get_koordynaty

Pobiera współrzędne grobów dla danego sektora.

Parametry:

  • action (wymagane) - get_koordynaty
  • sektor (wymagane) - Nazwa sektora
  • nr_grobu (opcjonalne) - Numer grobu

Przykład:

curl -X GET \
  -H "X-API-Key: twoj_klucz_api" \
  "https://subdomena.grobnet.eu/api/maps?action=get_koordynaty&sektor=A_I"
add_koordynaty ADMIN

Dodaje lub aktualizuje współrzędne grobu.

Parametry:

  • action (wymagane) - add_koordynaty
  • sektor (wymagane) - Nazwa sektora
  • nr_grobu (wymagane) - Numer grobu
  • top_px (wymagane) - Współrzędna Y (piksele)
  • left_px (wymagane) - Współrzędna X (piksele)

Przykład:

curl -X POST \
  -H "X-API-Key: twoj_klucz_api" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "add_koordynaty",
    "sektor": "A_I",
    "nr_grobu": "001",
    "top_px": 100,
    "left_px": 200
  }' \
  https://subdomena.grobnet.eu/api/maps
Uwaga: Jeśli współrzędne już istnieją dla danego sektora i numeru grobu, zostaną zaktualizowane.

Zdjęcia Panel

Endpoint: /api/zdjecia_panel

Base URL: https://{parish-slug}.grobnet.eu/api/zdjecia_panel

Akcje
get_zdjecia

Pobiera listę zdjęć.

Parametry:

  • action (wymagane) - get_zdjecia
  • page (opcjonalne) - Numer strony (domyślnie: 1)
  • limit (opcjonalne) - Liczba wyników na stronę (domyślnie: 20, max: 100)
  • grob_id (opcjonalne) - ID grobu
  • status (opcjonalne) - Status: oczekujace, zatwierdzone, odrzucone
  • user_id (opcjonalne) - ID użytkownika

Przykład:

curl -X GET \
  -H "X-API-Key: twoj_klucz_api" \
  "https://subdomena.grobnet.eu/api/zdjecia_panel?action=get_zdjecia&grob_id=123&status=oczekujace"
add_zdjecie

Wgrywa zdjęcie pomnika.

Parametry:

  • action (wymagane) - add_zdjecie
  • grob_id (wymagane) - ID grobu (lub grvid)
  • grvid (wymagane jeśli brak grob_id) - ID grobu (grvid)
  • opis (opcjonalne) - Opis zdjęcia
  • zdjecie_file (wymagane) - Plik zdjęcia (multipart/form-data)
  • file_base64 (alternatywa) - Zdjęcie w formacie base64 (JSON)
  • filename (wymagane z base64) - Nazwa pliku

Formaty plików: jpg, jpeg, png, gif

Maksymalny rozmiar: 5MB (domyślnie, konfigurowalne)

Maksymalne wymiary: 1920x1080px (domyślnie, konfigurowalne)

Przykład (multipart/form-data):

curl -X POST \
  -H "X-API-Key: twoj_klucz_api" \
  -F "action=add_zdjecie" \
  -F "grob_id=123" \
  -F "opis=Zdjęcie pomnika" \
  -F "zdjecie_file=@zdjecie.jpg" \
  https://subdomena.grobnet.eu/api/zdjecia_panel

Przykład (base64 JSON):

curl -X POST \
  -H "X-API-Key: twoj_klucz_api" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "add_zdjecie",
    "grob_id": 123,
    "opis": "Zdjęcie pomnika",
    "file_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
    "filename": "zdjecie.jpg"
  }' \
  https://subdomena.grobnet.eu/api/zdjecia_panel
approve_zdjecie ADMIN

Zatwierdza zdjęcie.

Parametry:

  • action (wymagane) - approve_zdjecie
  • id (wymagane) - ID zdjęcia
reject_zdjecie ADMIN

Odrzuca zdjęcie.

Parametry:

  • action (wymagane) - reject_zdjecie
  • id (wymagane) - ID zdjęcia
delete_zdjecie ADMIN

Usuwa zdjęcie (plik i rekord z bazy).

Parametry:

  • action (wymagane) - delete_zdjecie
  • id (wymagane) - ID zdjęcia

Kody odpowiedzi HTTP

  • 200 OK - Sukces
  • 201 Created - Utworzono nowy zasób
  • 400 Bad Request - Błąd walidacji lub nieprawidłowe parametry
  • 401 Unauthorized - Brak lub nieprawidłowy klucz API
  • 403 Forbidden - Brak uprawnień (wymagana autoryzacja admina)
  • 404 Not Found - Zasób nie został znaleziony
  • 500 Internal Server Error - Błąd serwera

Format odpowiedzi

Wszystkie odpowiedzi są w formacie JSON z następującą strukturą:

{
  "status": "success|error|warning",
  "message": "Komunikat odpowiedzi",
  "data": { ... }
}

Statusy:

  • success - Operacja zakończona sukcesem
  • error - Wystąpił błąd
  • warning - Ostrzeżenie (np. zgłoszenie już istnieje)
Przykładowa odpowiedź
{
  "data": [
    {
      "id": 12345,
      "imie": "Jan",
      "drugie_imie": "Marian",
      "nazwisko": "Kowalski",
      "nazwisko_rodowe": "Nowak",
      "data_urodzenia": "1950-05-15",
      "data_zgonu": "2023-01-20",
      "data_pogrzebu": "2023-01-25",
      "miejsce_zamieszkania": "Warszawa",
      "cmentarz": {
        "id": 1,
        "nazwa": "Cmentarz Komunalny w Warszawie",
        "adres": "ul. Wałbrzyska 1, 00-001 Warszawa"
      },
      "kwatera": "A15",
      "rzad": 5,
      "miejsce": 12,
      "zdjecie": "https://przykladowy-cmentarz.pl/zdjecia/12345.jpg",
      "dodatkowe_informacje": "Pogrzeb odbędzie się w kaplicy cmentarnej o godzinie 12:00.",
      "data_utworzenia": "2023-01-21T10:30:00Z",
      "data_aktualizacji": "2023-01-21T10:30:00Z"
    }
    // ... więcej wpisów
  ],
  "links": {
    "first": "https://api.grobnet.pl/api/v1/zmarli?page=1",
    "last": "https://api.grobnet.pl/api/v1/zmarli?page=5",
    "prev": null,
    "next": "https://api.grobnet.pl/api/v1/zmarli?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 5,
    "path": "https://api.grobnet.pl/api/v1/zmarli",
    "per_page": 20,
    "to": 20,
    "total": 98
  }
}
POST

/api/v1/zmarli

Dodaje nowego zmarłego do systemu.

Wymagane uwierzytelnienie z uprawnieniami do zapisu
Parametry żądania (JSON)
Parametr Typ Wymagane Opis
imie string Tak Imię zmarłego
drugie_imie string Nie Drugie imię zmarłego
nazwisko string Tak Nazwisko zmarłego
nazwisko_rodowe string Nie Nazwisko rodowe (dla kobiet)
data_urodzenia date (YYYY-MM-DD) Tak Data urodzenia
data_zgonu date (YYYY-MM-DD) Tak Data zgonu
data_pogrzebu date (YYYY-MM-DD) Nie Planowana data pogrzebu
cmentarz_id integer Tak ID cmentarza
kwatera string Nie Numer kwatery
rzad string Nie Numer rzędu
miejsce string Nie Numer miejsca
zdjecie file/URL Nie Zdjęcie zmarłego (plik lub URL)
dodatkowe_informacje text Nie Dodatkowe informacje
Przykładowe żądanie
POST /api/v1/zmarli Content-Type: application/json Authorization: Bearer twoj_klucz_api_tutaj { "imie": "Jan", "nazwisko": "Kowalski", "data_urodzenia": "1950-05-15", "data_zgonu": "2023-01-20", "cmentarz_id": 1, "kwatera": "A15", "rzad": 5, "miejsce": 12, "dodatkowe_informacje": "Pogrzeb odbędzie się w kaplicy cmentarnej o godzinie 12:00." }
Przykładowa odpowiedź (sukces)
{
  "success": true,
  "message": "Zmarły został pomyślnie dodany",
  "data": {
    "id": 12345,
    "imie": "Jan",
    "nazwisko": "Kowalski",
    "data_urodzenia": "1950-05-15",
    "data_zgonu": "2023-01-20",
    "cmentarz_id": 1,
    "kwatera": "A15",
    "rzad": 5,
    "miejsce": 12,
    "created_at": "2023-01-21T10:30:00Z",
    "updated_at": "2023-01-21T10:30:00Z"
  }
}
Przykładowa odpowiedź (błąd walidacji)
{
  "success": false,
  "message": "Wystąpił błąd walidacji",
  "errors": {
    "imie": ["Pole imię jest wymagane"],
    "nazwisko": ["Pole nazwisko jest wymagane"],
    "data_urodzenia": ["Nieprawidłowy format daty urodzenia"],
    "cmentarz_id": ["Wybrany cmentarz nie istnieje"]
  }
}
GET

/api/v1/zmarli/{id}

Zwraca szczegółowe informacje o zmarłym o podanym ID.

Wymagane uwierzytelnienie
Parametry ścieżki
Parametr Typ Wymagane Opis
id integer Tak ID zmarłego
Przykładowe żądanie
GET /api/v1/zmarli/12345 Authorization: Bearer twoj_klucz_api_tutaj
Przykładowa odpowiedź
{
  "data": {
    "id": 12345,
    "imie": "Jan",
    "drugie_imie": "Marian",
    "nazwisko": "Kowalski",
    "nazwisko_rodowe": "Nowak",
    "data_urodzenia": "1950-05-15",
    "data_zgonu": "2023-01-20",
    "data_pogrzebu": "2023-01-25",
    "miejsce_zamieszkania": "Warszawa",
    "cmentarz": {
      "id": 1,
      "nazwa": "Cmentarz Komunalny w Warszawie",
      "adres": "ul. Wałbrzyska 1, 00-001 Warszawa",
      "telefon": "+48 22 123 45 67",
      "email": "kontakt@cmentarz-warszawa.pl",
      "strona_www": "https://cmentarz-warszawa.pl"
    },
    "kwatera": "A15",
    "rzad": 5,
    "miejsce": 12,
    "zdjecie": "https://przykladowy-cmentarz.pl/zdjecia/12345.jpg",
    "dodatkowe_informacje": "Pogrzeb odbędzie się w kaplicy cmentarnej o godzinie 12:00.",
    "data_utworzenia": "2023-01-21T10:30:00Z",
    "data_aktualizacji": "2023-01-21T10:30:00Z",
    "znicze": [
      {
        "id": 1,
        "nazwa": "Znicz duży biały",
        "zapalony": true,
        "data_zapalenia": "2023-01-25",
        "data_zgaszenia": null,
        "zapalony_przez": "Jan Nowak",
        "zgaszony_przez": null
      }
    ],
    "msze": [
      {
        "id": 1,
        "data_mszy": "2023-01-30",
        "godzina_mszy": "18:00",
        "kościół": "Kościół Św. Krzyża w Warszawie",
        "intencja": "W intencji zmarłego Jana Kowalskiego"
      }
    ]
  }
}

Kody błędów

Oto lista kodów błędów, które mogą zostać zwrócone przez API:

Kod błędu Opis HTTP Status
400 Nieprawidłowe żądanie 400 Bad Request
401 Brak autoryzacji 401 Unauthorized
403 Brak uprawnień 403 Forbidden
404 Nie znaleziono zasobu 404 Not Found
422 Nieprawidłowe dane wejściowe 422 Unprocessable Entity
429 Przekroczono limit zapytań 429 Too Many Requests
500 Wewnętrzny błąd serwera 500 Internal Server Error