To API umożliwia zewnętrznym aplikacjom sprawdzanie statusu przesyłek w naszym systemie. Dostęp do statusu jest możliwy poprzez numer przesyłki.
API jest publiczne i nie wymaga autoryzacji. Prosimy o odpowiedzialne korzystanie i unikanie nadmiernej liczby zapytań. Wprowadzono podstawowe mechanizmy ochrony przed nadużyciami (tzw. throttling), a wszystkie próby użycia kodu są 👀 rejestrowane.
Pobiera aktualny status i historię zdarzeń dla danej przesyłki.
Endpoint przyjmuje przyjazne adresy URL w następujących formatach:
GET /sledzenie/{PelnyNumerPrzesylki}
lub
GET /sledzenie/{PelnyNumerPrzesylki}/{SkroconeMiasto}
Lub klasyczne adresy endpoint w następujących formatach:
GET /api/tracking-status/{PelnyNumerPrzesylki}
lub
GET /api/tracking-status/{PelnyNumerPrzesylki}/{SkroconeMiasto}
{PelnyNumerPrzesylki} (wymagany, string): Unikalny numer śledzenia
przesyłki.
{SkroconeMiasto} (opcjonalny, string): Nazwa regionu, z którym powiązane
jest
miasto (np. 3city, btom).
{SkroconeMiasto} zostanie podane, API będzie próbować
wyszukać
przesyłkę tylko w przypisanym do tego mieście.{SkroconeMiasto} zostanie pominięte, API
najpierw
spróbuje wyszukać
przesyłkę w mieści 3city. Jeśli tam jej nie znajdzie,
spróbuje wyszukać w mieście btom.W celu ochrony przed nadmiernym obciążeniem serwera i atakami brute-force, API implementuje mechanizm ograniczania liczby zapytań (throttling):
429 Too Many Requests.curl -X GET "https://api.przesylkamiejska.pl/v1/api/tracking-status/1234567890"
PrettyURL: curl -X GET "https://api.przesylkamiejska.pl/v1/api/sledzenie/1234567890"
curl -X GET "https://api.przesylkamiejska.pl/v1/api/tracking-status/1234567890/3city"
PrettyURL: curl -X GET "https://api.przesylkamiejska.pl/v1/api/sledzenie/1234567890/3city"
// Zapytanie bez określania miasta (backend spróbuje domyślnej kolejności)
fetch('https://api.przesylkamiejska.pl/v1/api/tracking-status/1234567890')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
// Zapytanie z określeniem miasta
fetch('https://api.przesylkamiejska.pl/v1/api/tracking-status/ABC9876543/btom')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
PrettyURL:
// Zapytanie bez określania miasta (backend spróbuje domyślnej kolejności)
fetch('https://api.przesylkamiejska.pl/v1/api/sledzenie/1234567890')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
// Zapytanie z określeniem miasta
fetch('https://api.przesylkamiejska.pl/v1/api/sledzenie/ABC9876543/btom')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
{
"status": "success",
"tracking_number": "1234567890",
"notes": [
{
"date": "7 października 2024 o 14:15",
"event": "Zlecenie zostało złożone przez nadawcę"
},
{
"date": "7 października 2024 o 15:30",
"event": "Przesyłka została odebrana przez kuriera."
},
{
"date": "8 października 2024 o 09:00",
"event": "Przesyłka przekazana kurierem zewnętrznym (InPost) o numerze śledzenia: ABC123456789 (Śledź)."
},
{
"date": "8 października 2024 o 14:00",
"event": "Przesyłka została dostarczona do odbiorcy."
}
]
}
status (string): Zawsze 'success' w przypadku powodzenia.tracking_number (string): Numer przesyłki, który został zapytany.notes (array of objects): Tablica obiektów, gdzie każdy obiekt reprezentuje
zdarzenie w historii przesyłki.
date (string): Data i czas zdarzenia w formacie "Dzień
NazwaMiesiąca Rok o GG:MM".event (string): Opis zdarzenia. Może zawierać tagi HTML (np.
<a>, <span>) dla dodatkowych informacji
(np. linki do śledzenia zewnętrznych przewoźników).
{
"status": "error",
"message": "Nie znaleziono przesyłki o podanym numerze."
}
status (string): Zawsze 'error' w przypadku błędu.message (string): Krótki opis błędu.200 OK: Żądanie zostało przetworzone pomyślnie.400 Bad Request: Brak numeru śledzenia lub nieprawidłowy format żądania.
404 Not Found: Przesyłka o podanym numerze nie została znaleziona.405 Method Not Allowed: Użyto nieprawidłowej metody HTTP (np. POST zamiast
GET).429 Too Many Requests: Przekroczono limit liczby zapytań (throttling).500 Internal Server Error: Wystąpił błąd po stronie serwera.