{"openapi":"3.1.0","info":{"title":"ADR Check API","version":"1.0.0","description":"REST API dla weryfikacji towarow niebezpiecznych ADR. Numer UN, klasa, kompatybilnosc zaladunku, kalkulator 1.1.3.6.\n\nAktualna umowa ADR 2025-2027. Bez logowania (na razie FREE tier po IP, 100 zapytan dziennie).","contact":{"email":"kontakt@exportsy.pl","url":"https://adrcheck-public.vercel.app"}},"servers":[{"url":"https://adrcheck-public.vercel.app/api/v1","description":"Production"}],"tags":[{"name":"UN","description":"Wyszukiwanie i pobieranie numerow UN"},{"name":"Klasy","description":"Klasy ADR 1-9"},{"name":"Kompatybilnosc","description":"Mixed loading checker"},{"name":"Kalkulatory","description":"Wylaczenia 1.1.3.6 i LQ"}],"paths":{"/un/{un}":{"get":{"tags":["UN"],"summary":"Pobierz pelne dane numeru UN","parameters":[{"name":"un","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,4}$"},"example":"1203"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnResponse"}}}},"404":{"description":"Nie znaleziono"},"429":{"description":"Rate limit"}}}},"/un":{"get":{"tags":["UN"],"summary":"Wyszukaj UN po nazwie lub klasie","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Fragment nazwy lub numer UN","example":"benzyna"},{"name":"class","in":"query","schema":{"type":"string"},"description":"Filtruj po klasie ADR","example":"3"},{"name":"lang","in":"query","schema":{"type":"string","enum":["pl","en","de","fr"]},"description":"Jezyk wyszukiwania nazwy"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"OK"},"429":{"description":"Rate limit"}}}},"/classes":{"get":{"tags":["Klasy"],"summary":"Lista 13 klas ADR z liczbą UN per klasa","responses":{"200":{"description":"OK"}}}},"/compatibility":{"post":{"tags":["Kompatybilnosc"],"summary":"Sprawdz mixed loading dla 2-20 UN","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["uns"],"properties":{"uns":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":20,"example":["1203","1789"]}}}}}},"responses":{"200":{"description":"verdict: compatible | forbidden","content":{"application/json":{"example":{"verdict":"compatible","forbidden_label_pairs":[],"forbidden_class1_pairs":[]}}}}}}},"/calc/1136":{"post":{"tags":["Kalkulatory"],"summary":"Oblicz sume punktow 1.1.3.6 (wylaczenie do 1000 pkt)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","required":["un","kg"],"properties":{"un":{"type":"string","example":"1203"},"kg":{"type":"number","minimum":0,"example":300}}}}}}}}},"responses":{"200":{"description":"verdict: exempt | requires_full_adr","content":{"application/json":{"example":{"verdict":"exempt","total_points":900,"limit":1000}}}}}}}},"components":{"schemas":{"UnResponse":{"type":"object","properties":{"un_number":{"type":"string","example":"1203"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/UnEntry"}},"meta":{"type":"object"}}},"UnEntry":{"type":"object","properties":{"un_number":{"type":"string"},"name_pl":{"type":"string"},"name_en":{"type":"string"},"adr_class":{"type":"string"},"packing_group":{"type":"string","nullable":true},"kemler_number":{"type":"string","nullable":true},"labels":{"type":"array","items":{"type":"string"}},"tunnel_code":{"type":"string","nullable":true},"transport_category":{"type":"string","nullable":true},"multiplier_1136":{"type":"number","nullable":true},"limited_quantity":{"type":"string","nullable":true}}}}}}