{"openapi":"3.1.0","info":{"title":"Rejestr Środków Ochrony Roślin API","description":"Polski rejestr środków ochrony roślin jako czyste, odpytywalne API. Zapytaj **co wolno legalnie zastosować na danej uprawie przeciwko danemu agrofagowi** (chorobie / szkodnikowi / chwastowi), w jakiej dawce i jaką metodą — na podstawie oficjalnego rejestru Ministerstwa Rolnictwa i Rozwoju Wsi.\n\n**Uwierzytelnianie:** nagłówek `X-API-Key: <klucz>` (lub `Authorization: Bearer <klucz>`). Bez klucza działa darmowy tier (limit per-IP) do oceny. Klucz kupisz na stronie głównej.\n\n**Limity:** każdy plan ma limit zapytań/min oraz miesięczny quota; po przekroczeniu API zwraca `429`, a nagłówek `X-Quota-Remaining` pokazuje pozostały budżet.\n\n**Świeżość:** dane aktualizujemy automatycznie, gdy MRiRW opublikuje nową wersję rejestru (zwykle ~połowa miesiąca). `GET /meta` zwraca `source_date` bieżących danych.\n\n**Wersjonowanie:** obecnie v1. Zmiany dodające pola/endpointy są wstecznie zgodne; zmiany łamiące poprzedzimy nową wersją i powiadomieniem na e-mail przypisany do klucza.\n\n**Typowe użycie (cookbook):**\n1. Autouzupełnianie nazw — `GET /crops?q=…` oraz `GET /pests?q=…`.\n2. Wyszukanie — `GET /search?crop=jabłoń&pest=parch` (zawęź filtrami `rodzaj`, `uzytkownik`, `active_only`; stronicuj `limit`/`offset` wg `total`).\n3. Szczegóły produktu — `GET /products/{nr_zezw}` (status, etykieta, zastosowania, opakowanie).\nWykrywanie zmian — pollinguj `GET /meta` i obserwuj `source_date`. Pełne scenariusze i przykłady kodu: [Szybki start](https://pesticides.apitide.dev/guide).\n\n**Dane:** Ministerstwo Rolnictwa i Rozwoju Wsi (MRiRW) / gov.pl, licencja danych publicznych — zachowaj atrybucję źródła. Informacyjnie; dokumentem wiążącym prawnie pozostaje etykieta produktu.","license":{"name":"Commercial / dane: MRiRW (gov.pl)"},"version":"1.0.0"},"paths":{"/health":{"get":{"tags":["serwis"],"summary":"Status usługi","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -H \"X-API-Key: TWÓJ_KLUCZ\" \\\n  \"https://pesticides.apitide.dev/health\""},{"lang":"Python","source":"import requests\n\nr = requests.get(\"https://pesticides.apitide.dev/health\", headers={\"X-API-Key\": \"TWÓJ_KLUCZ\"})\nprint(r.json())"},{"lang":"JavaScript","source":"const res = await fetch(\n  \"https://pesticides.apitide.dev/health\",\n  { headers: { \"X-API-Key\": \"TWÓJ_KLUCZ\" } }\n);\nconsole.log(await res.json());"}]}},"/meta":{"get":{"tags":["serwis"],"summary":"Metadane i świeżość danych","description":"Source publication date and dataset sizes. `source_date` = data wersji\nrejestru, którą serwujemy; aktualizujemy automatycznie, gdy MRiRW opublikuje\nnową (zwykle ~połowa miesiąca). Użyj jako sygnału świeżości / do re-fetchu.","operationId":"meta_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetaResponse"},"example":{"source":"gov.pl/web/rolnictwo","source_date":"2026-06-16","refreshed_at":"2026-06-20T07:00:00","products":2966,"applications":18294,"disclaimer":"Dane informacyjne — dokumentem wiążącym prawnie jest etykieta produktu."}}}}},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -H \"X-API-Key: TWÓJ_KLUCZ\" \\\n  \"https://pesticides.apitide.dev/meta\""},{"lang":"Python","source":"import requests\n\nr = requests.get(\"https://pesticides.apitide.dev/meta\", headers={\"X-API-Key\": \"TWÓJ_KLUCZ\"})\nprint(r.json())"},{"lang":"JavaScript","source":"const res = await fetch(\n  \"https://pesticides.apitide.dev/meta\",\n  { headers: { \"X-API-Key\": \"TWÓJ_KLUCZ\" } }\n);\nconsole.log(await res.json());"}]}},"/search":{"get":{"tags":["wyszukiwanie"],"summary":"Wyszukiwarka — co wolno na uprawie","description":"**Hero query.** Jakie środki ochrony roślin wolno zastosować na danej\nuprawie (`crop`), opcjonalnie przeciwko danemu agrofagowi (`pest`) — z dawką,\nmetodą, terminem, statusem oraz danymi z etykiety (karencja/prewencja/pszczoły).\nJeden wpis na produkt. Wejście wybaczające: ignoruje diakrytyki/wielkość liter,\na przy braku trafienia zwraca `suggestions` (podpowiedzi nazw).","operationId":"search_search_get","parameters":[{"name":"crop","in":"query","required":true,"schema":{"type":"string","description":"Uprawa, np. „pszenica ozima”. Tolerancja diakrytyków (działa „pszenica ozima” i „pszenica”). Wartości odkryjesz przez /crops.","examples":["pszenica ozima"],"title":"Crop"},"description":"Uprawa, np. „pszenica ozima”. Tolerancja diakrytyków (działa „pszenica ozima” i „pszenica”). Wartości odkryjesz przez /crops."},{"name":"pest","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Agrofag (choroba/szkodnik/chwast), dopasowanie po fragmencie, np. „mączniak”. Wartości przez /pests.","examples":["mączniak"],"title":"Pest"},"description":"Agrofag (choroba/szkodnik/chwast), dopasowanie po fragmencie, np. „mączniak”. Wartości przez /pests."},{"name":"rodzaj","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtr rodzaju środka, np. „Fungicyd”, „Herbicyd”, „Insektycyd”.","title":"Rodzaj"},"description":"Filtr rodzaju środka, np. „Fungicyd”, „Herbicyd”, „Insektycyd”."},{"name":"uzytkownik","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtr klasy użytkownika: „profesjonalne” lub „amatorskie”.","title":"Uzytkownik"},"description":"Filtr klasy użytkownika: „profesjonalne” lub „amatorskie”."},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Tylko produkty legalne do stosowania dziś (domyślnie `true`).","default":true,"title":"Active Only"},"description":"Tylko produkty legalne do stosowania dziś (domyślnie `true`)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Rozmiar strony (1–200).","default":50,"title":"Limit"},"description":"Rozmiar strony (1–200)."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Przesunięcie do stronicowania (użyj z `total` z odpowiedzi).","default":0,"title":"Offset"},"description":"Przesunięcie do stronicowania (użyj z `total` z odpowiedzi)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"},"example":{"crop":"jabłoń","pest":"parch","total":165,"items":[{"nr_zezw":"R-84/2017","nazwa":"Alcedo 100 EC","producent":"Isagro S.p.A. - Republika Włoska","rodzaj":"Fungicyd","substancja_czynna":"tetrakonazol - 100 g","legalny_do":"2028-03-31","sprzedaz_do":"2028-03-31","status":"aktywny","etykieta_dostepna":true,"etykieta_powod":null,"klasyfikacja":"H302, H304, H315, H319, H336, H411, H226","toksyczny_dla_organizmow_wodnych":true,"etykieta":{"karencja":{"uprawy":"jabłka","dni":14,"nie_wymagana":null},"karencja_wszystkie":[{"uprawy":"jabłka","dni":14,"nie_wymagana":null}],"prewencja":"Nie wchodzić do czasu całkowitego wyschnięcia cieczy użytkowej.","pszczoly":{"uwaga":true,"toksyczny":false,"opis":"W czasie kwitnienia stosować poza okresami aktywności pszczół."},"etykieta_url":"https://www.gov.pl/attachment/b1d85312-d6ca-4cf5-abdc-0d1849aec07c","dopasowano_przez":"nazwa","uwaga":null},"zastosowania":[{"agrofag":"parch jabłoni, mączniak prawdziwy","dawka":"Maksymalna/zalecana dawka dla jednorazowego zastosowania: 0,4 l/ha","termin":"Od fazy różowego pąka do początku opadania owoców (BBCH 57-83)","karencja":null,"metoda":"opryskiwanie","grupa":"ROŚLINY SADOWNICZE","uzytkownik":"profesjonalne","maloobszarowe":false}]}],"suggestions":null}}}},"401":{"description":"Nieprawidłowy lub nieaktywny klucz API.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Nieprawidłowy lub nieaktywny klucz API."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"},"example":{"detail":[{"loc":["query","crop"],"msg":"Field required","type":"missing"}]}}}},"429":{"description":"Przekroczony limit (zapytań/min lub miesięczny quota). Nagłówek `X-Quota-Remaining` pokazuje pozostały budżet.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Przekroczony limit darmowego tieru. Dodaj klucz API, by mieć więcej."}}}}},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -H \"X-API-Key: TWÓJ_KLUCZ\" \\\n  \"https://pesticides.apitide.dev/search?crop=jab%C5%82o%C5%84&pest=parch\""},{"lang":"Python","source":"import requests\n\nr = requests.get(\n    \"https://pesticides.apitide.dev/search\",\n    params={\n        \"crop\": \"jabłoń\",\n        \"pest\": \"parch\"\n    },\n    headers={\"X-API-Key\": \"TWÓJ_KLUCZ\"},\n)\nprint(r.json())"},{"lang":"JavaScript","source":"const res = await fetch(\n  \"https://pesticides.apitide.dev/search?crop=jab%C5%82o%C5%84&pest=parch\",\n  { headers: { \"X-API-Key\": \"TWÓJ_KLUCZ\" } }\n);\nconsole.log(await res.json());"}],"security":[{"ApiKeyAuth":[]}]}},"/products":{"get":{"tags":["produkty"],"summary":"Lista i wyszukiwanie produktów","description":"Wyszukaj / listuj zarejestrowane produkty (po nazwie lub substancji czynnej).\nInny widok na ten sam zbiór co /search — gdy szukasz po produkcie, nie po uprawie.","operationId":"products_products_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Szukaj po nazwie handlowej lub substancji czynnej (fragment).","title":"Q"},"description":"Szukaj po nazwie handlowej lub substancji czynnej (fragment)."},{"name":"rodzaj","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtr rodzaju środka, np. „Herbicyd”.","title":"Rodzaj"},"description":"Filtr rodzaju środka, np. „Herbicyd”."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Rozmiar strony (1–200).","default":50,"title":"Limit"},"description":"Rozmiar strony (1–200)."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Przesunięcie do stronicowania.","default":0,"title":"Offset"},"description":"Przesunięcie do stronicowania."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductListResponse"},"example":{"total":1,"items":[{"nr_zezw":"R-84/2017","nazwa":"Alcedo 100 EC","producent":"Isagro S.p.A. - Republika Włoska","rodzaj":"Fungicyd","substancja_czynna":"tetrakonazol - 100 g","legalny_do":"2028-03-31","sprzedaz_do":"2028-03-31","status":"aktywny","etykieta_dostepna":true,"etykieta_powod":null,"klasyfikacja":"H302, H304, H315, H319, H336, H411, H226","toksyczny_dla_organizmow_wodnych":true}]}}}},"401":{"description":"Nieprawidłowy lub nieaktywny klucz API.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Nieprawidłowy lub nieaktywny klucz API."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"},"example":{"detail":[{"loc":["query","crop"],"msg":"Field required","type":"missing"}]}}}},"429":{"description":"Przekroczony limit (zapytań/min lub miesięczny quota). Nagłówek `X-Quota-Remaining` pokazuje pozostały budżet.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Przekroczony limit darmowego tieru. Dodaj klucz API, by mieć więcej."}}}}},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -H \"X-API-Key: TWÓJ_KLUCZ\" \\\n  \"https://pesticides.apitide.dev/products?q=parch&limit=5\""},{"lang":"Python","source":"import requests\n\nr = requests.get(\n    \"https://pesticides.apitide.dev/products\",\n    params={\n        \"q\": \"parch\",\n        \"limit\": \"5\"\n    },\n    headers={\"X-API-Key\": \"TWÓJ_KLUCZ\"},\n)\nprint(r.json())"},{"lang":"JavaScript","source":"const res = await fetch(\n  \"https://pesticides.apitide.dev/products?q=parch&limit=5\",\n  { headers: { \"X-API-Key\": \"TWÓJ_KLUCZ\" } }\n);\nconsole.log(await res.json());"}],"security":[{"ApiKeyAuth":[]}]}},"/products/{nr_zezw}":{"get":{"tags":["produkty"],"summary":"Szczegóły produktu","description":"Jeden produkt po numerze zezwolenia (np. `R-14/2025`) ze wszystkimi\nzarejestrowanymi zastosowaniami, statusem i danymi z etykiety. Typowe użycie:\nwzbogacenie strony produktu w e-commerce / karty środka w apce. `404`, gdy\nnumeru nie ma.","operationId":"product_detail_products__nr_zezw__get","parameters":[{"name":"nr_zezw","in":"path","required":true,"schema":{"type":"string","title":"Nr Zezw"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductDetail"},"example":{"nr_zezw":"R-84/2017","nazwa":"Alcedo 100 EC","producent":"Isagro S.p.A. - Republika Włoska","rodzaj":"Fungicyd","substancja_czynna":"tetrakonazol - 100 g","legalny_do":"2028-03-31","sprzedaz_do":"2028-03-31","status":"aktywny","etykieta_dostepna":true,"etykieta_powod":null,"klasyfikacja":"H302, H304, H315, H319, H336, H411, H226","toksyczny_dla_organizmow_wodnych":true,"etykieta":{"karencja":{"uprawy":"jabłka","dni":14,"nie_wymagana":null},"karencja_wszystkie":[{"uprawy":"jabłka","dni":14,"nie_wymagana":null}],"prewencja":"Nie wchodzić do czasu całkowitego wyschnięcia cieczy użytkowej.","pszczoly":{"uwaga":true,"toksyczny":false,"opis":"W czasie kwitnienia stosować poza okresami aktywności pszczół."},"etykieta_url":"https://www.gov.pl/attachment/b1d85312-d6ca-4cf5-abdc-0d1849aec07c","dopasowano_przez":"nazwa","uwaga":null},"zastosowania":[{"agrofag":"parch jabłoni, mączniak prawdziwy","dawka":"Maksymalna/zalecana dawka dla jednorazowego zastosowania: 0,4 l/ha","termin":"Od fazy różowego pąka do początku opadania owoców (BBCH 57-83)","karencja":null,"metoda":"opryskiwanie","grupa":"ROŚLINY SADOWNICZE","uzytkownik":"profesjonalne","maloobszarowe":false}],"podmiot":"Isagro S.p.A.","opakowanie":"1 l, 5 l","produkt_referencyjny":null,"uwagi":null}}}},"401":{"description":"Nieprawidłowy lub nieaktywny klucz API.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Nieprawidłowy lub nieaktywny klucz API."}}}},"404":{"description":"Produkt o podanym numerze zezwolenia nie istnieje.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Nie znaleziono produktu"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"},"example":{"detail":[{"loc":["query","crop"],"msg":"Field required","type":"missing"}]}}}},"429":{"description":"Przekroczony limit (zapytań/min lub miesięczny quota). Nagłówek `X-Quota-Remaining` pokazuje pozostały budżet.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Przekroczony limit darmowego tieru. Dodaj klucz API, by mieć więcej."}}}}},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -H \"X-API-Key: TWÓJ_KLUCZ\" \\\n  \"https://pesticides.apitide.dev/products/R-14/2025\""},{"lang":"Python","source":"import requests\n\nr = requests.get(\"https://pesticides.apitide.dev/products/R-14/2025\", headers={\"X-API-Key\": \"TWÓJ_KLUCZ\"})\nprint(r.json())"},{"lang":"JavaScript","source":"const res = await fetch(\n  \"https://pesticides.apitide.dev/products/R-14/2025\",\n  { headers: { \"X-API-Key\": \"TWÓJ_KLUCZ\" } }\n);\nconsole.log(await res.json());"}],"security":[{"ApiKeyAuth":[]}]}},"/crops":{"get":{"tags":["słowniki"],"summary":"Słownik upraw","description":"Słownik upraw — do autouzupełniania i odkrywania poprawnych wartości\nparametru `crop` w /search.","operationId":"crops_crops_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtr po fragmencie nazwy.","title":"Q"},"description":"Filtr po fragmencie nazwy."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"description":"Maks. liczba zwracanych nazw.","default":100,"title":"Limit"},"description":"Maks. liczba zwracanych nazw."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VocabResponse"},"example":{"items":["jabłka","jabłoń","jabłoń dzika","jabłoń płonka"]}}}},"401":{"description":"Nieprawidłowy lub nieaktywny klucz API.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Nieprawidłowy lub nieaktywny klucz API."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"},"example":{"detail":[{"loc":["query","crop"],"msg":"Field required","type":"missing"}]}}}},"429":{"description":"Przekroczony limit (zapytań/min lub miesięczny quota). Nagłówek `X-Quota-Remaining` pokazuje pozostały budżet.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Przekroczony limit darmowego tieru. Dodaj klucz API, by mieć więcej."}}}}},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -H \"X-API-Key: TWÓJ_KLUCZ\" \\\n  \"https://pesticides.apitide.dev/crops?q=jab\""},{"lang":"Python","source":"import requests\n\nr = requests.get(\n    \"https://pesticides.apitide.dev/crops\",\n    params={\n        \"q\": \"jab\"\n    },\n    headers={\"X-API-Key\": \"TWÓJ_KLUCZ\"},\n)\nprint(r.json())"},{"lang":"JavaScript","source":"const res = await fetch(\n  \"https://pesticides.apitide.dev/crops?q=jab\",\n  { headers: { \"X-API-Key\": \"TWÓJ_KLUCZ\" } }\n);\nconsole.log(await res.json());"}],"security":[{"ApiKeyAuth":[]}]}},"/pests":{"get":{"tags":["słowniki"],"summary":"Słownik agrofagów","description":"Słownik agrofagów (choroby / szkodniki / chwasty) — do autouzupełniania i\nodkrywania wartości parametru `pest` w /search.","operationId":"pests_pests_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtr po fragmencie nazwy.","title":"Q"},"description":"Filtr po fragmencie nazwy."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"description":"Maks. liczba zwracanych nazw.","default":100,"title":"Limit"},"description":"Maks. liczba zwracanych nazw."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VocabResponse"},"example":{"items":["parch gruszy","parch jabłoni","mączniak prawdziwy"]}}}},"401":{"description":"Nieprawidłowy lub nieaktywny klucz API.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Nieprawidłowy lub nieaktywny klucz API."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"},"example":{"detail":[{"loc":["query","crop"],"msg":"Field required","type":"missing"}]}}}},"429":{"description":"Przekroczony limit (zapytań/min lub miesięczny quota). Nagłówek `X-Quota-Remaining` pokazuje pozostały budżet.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Przekroczony limit darmowego tieru. Dodaj klucz API, by mieć więcej."}}}}},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -H \"X-API-Key: TWÓJ_KLUCZ\" \\\n  \"https://pesticides.apitide.dev/pests?q=parch\""},{"lang":"Python","source":"import requests\n\nr = requests.get(\n    \"https://pesticides.apitide.dev/pests\",\n    params={\n        \"q\": \"parch\"\n    },\n    headers={\"X-API-Key\": \"TWÓJ_KLUCZ\"},\n)\nprint(r.json())"},{"lang":"JavaScript","source":"const res = await fetch(\n  \"https://pesticides.apitide.dev/pests?q=parch\",\n  { headers: { \"X-API-Key\": \"TWÓJ_KLUCZ\" } }\n);\nconsole.log(await res.json());"}],"security":[{"ApiKeyAuth":[]}]}},"/validate":{"get":{"tags":["walidacja"],"summary":"Walidacja zabiegu — czy wolno (legalność wg rejestru)","description":"**Compliance-as-code.** Sprawdza, czy dany środek (`product` = numer zezwolenia) wolno legalnie zastosować na danej uprawie (`crop`), opcjonalnie przeciw agrofagowi (`pest`), w danej dawce (`dose`+`dose_unit`) i dniu (`date`). Zwraca `verdict` (`allowed`/`warning`/`not_allowed`) oraz rozbite `checks` z powodami. Wejście wybaczające (diakrytyki); przy nietrafionej uprawie/agrofagu zwraca `suggestions`. Dawka z rejestru bywa tekstem swobodnym — gdy nieporównywalna, `dose_within_label` ma status `indeterminate` (zwracamy surową dawkę). Wynik informacyjny; wiążąca jest etykieta produktu.","operationId":"validate_validate_get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"product","in":"query","required":true,"schema":{"type":"string","description":"Numer zezwolenia środka (nr_zezw, np. „R-14/2011”) LUB nazwa handlowa (np. „Adengo 315 SC”). Uwaga: to NIE numer decyzji z etykiety (np. „R-867/2024d”). Gdy nazwa pasuje do wielu środków, odpowiedź zwróci `candidates` z prośbą o nr_zezw.","examples":["R-14/2011","Adengo 315 SC"],"title":"Product"},"description":"Numer zezwolenia środka (nr_zezw, np. „R-14/2011”) LUB nazwa handlowa (np. „Adengo 315 SC”). Uwaga: to NIE numer decyzji z etykiety (np. „R-867/2024d”). Gdy nazwa pasuje do wielu środków, odpowiedź zwróci `candidates` z prośbą o nr_zezw."},{"name":"crop","in":"query","required":true,"schema":{"type":"string","description":"Uprawa, np. „jabłoń”. Tolerancja diakrytyków. Wartości przez /crops.","examples":["jabłoń"],"title":"Crop"},"description":"Uprawa, np. „jabłoń”. Tolerancja diakrytyków. Wartości przez /crops."},{"name":"pest","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Agrofag (choroba/szkodnik/chwast), np. „parch jabłoni”. Bez niego walidacja pomija sprawdzenie agrofaga. Wartości przez /pests.","examples":["parch jabłoni"],"title":"Pest"},"description":"Agrofag, np. „parch jabłoni”. Bez niego pomija sprawdzenie agrofaga."},{"name":"dose","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Planowana dawka (liczba), np. 0.4. Porównywana z dawką z rejestru gdy jednostki zgodne.","examples":[0.4],"title":"Dose"},"description":"Planowana dawka (liczba), np. 0.4."},{"name":"dose_unit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Jednostka dawki, np. „l/ha”, „kg/ha”, „%”.","examples":["l/ha"],"title":"Dose Unit"},"description":"Jednostka dawki, np. „l/ha”."},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Dzień zabiegu (YYYY-MM-DD). Domyślnie dziś. Sprawdza, czy termin stosowania nie minął.","examples":["2026-05-10"],"title":"Date"},"description":"Dzień zabiegu (YYYY-MM-DD). Domyślnie dziś."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateResponse"},"example":{"verdict":"allowed","product":{"nr_zezw":"R-84/2017","nazwa":"Alcedo 100 EC","substancja_czynna":"tetrakonazol - 100 g"},"matched_use":{"uprawa":"jabłoń","agrofag":"parch jabłoni, mączniak prawdziwy","dawka":"Maksymalna/zalecana dawka dla jednorazowego zastosowania: 0,4 l/ha","termin":"Od fazy różowego pąka do początku opadania owoców (BBCH 57-83)","maloobszarowe":false},"checks":[{"code":"product_found","status":"pass","message":"Środek „Alcedo 100 EC” odnaleziony w rejestrze."},{"code":"registration_valid","status":"pass","message":"Dopuszczenie ważne na dzień zabiegu (termin stosowania: 2028-03-31)."},{"code":"crop_registered","status":"pass","message":"Środek ma zarejestrowane zastosowanie na uprawie „jabłoń”."},{"code":"pest_registered","status":"pass","message":"Zastosowanie przeciw „parch jabłoni” na uprawie „jabłoń” jest zarejestrowane."},{"code":"dose_within_label","status":"pass","message":"Dawka 0.4 l/ha mieści się w dawce z rejestru (0,4 l/ha)."}],"resolved":{"crop":{"input":"jabłoń","matched":"jabłoń","exact":true},"pest":{"input":"parch jabłoni","matched":"parch jabłoni","exact":true},"product":{"input":"R-14/2011","matched":"R-14/2011","by":"nr_zezw"}},"suggestions":null,"disclaimer":"Wynik informacyjny — dokumentem wiążącym prawnie jest etykieta produktu.","candidates":null}}}},"401":{"description":"Nieprawidłowy lub nieaktywny klucz API.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Nieprawidłowy lub nieaktywny klucz API."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"},"example":{"detail":[{"loc":["query","crop"],"msg":"Field required","type":"missing"}]}}}},"429":{"description":"Przekroczony limit (zapytań/min lub miesięczny quota). Nagłówek `X-Quota-Remaining` pokazuje pozostały budżet.","content":{"application/json":{"schema":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string","description":"Komunikat błędu."}}},"example":{"detail":"Przekroczony limit darmowego tieru. Dodaj klucz API, by mieć więcej."}}}}}}}},"components":{"schemas":{"Bee":{"properties":{"uwaga":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Uwaga","description":"`true`, gdy etykieta zawiera ostrzeżenie/zalecenie dot. pszczół."},"toksyczny":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Toksyczny","description":"`true`, gdy etykieta klasyfikuje środek jako toksyczny dla pszczół."},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis","description":"Fragment etykiety z treścią ostrzeżenia."}},"type":"object","title":"Bee","description":"Ostrzeżenie dot. pszczół, odczytane z etykiety."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status","description":"„ok”, gdy usługa żyje."}},"type":"object","required":["status"],"title":"HealthResponse"},"Karencja":{"properties":{"dni":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dni","description":"Karencja w dniach, jeśli podana w `termin`."},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis","description":"Dosłowny fragment tekstu, z którego odczytano karencję."}},"type":"object","title":"Karencja","description":"Najlepiej-jak-się-da karencja wyciągnięta z pola `termin` w rejestrze\n(rzadka — ~1% zastosowań). Pełna, wiarygodna karencja jest w `etykieta`."},"KarencjaEntry":{"properties":{"uprawy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uprawy","description":"Uprawy, których dotyczy ta karencja, np. „jabłka”."},"dni":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dni","description":"Karencja w dniach. `0` zwykle oznacza „nie dotyczy/nie wymagana” — patrz `nie_wymagana`."},"nie_wymagana":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Nie Wymagana","description":"`true`, gdy etykieta wprost mówi, że karencja nie jest wymagana."}},"type":"object","title":"KarencjaEntry","description":"Karencja dla konkretnej grupy upraw, z etykiety produktu."},"LabelInfo":{"properties":{"karencja":{"anyOf":[{"$ref":"#/components/schemas/KarencjaEntry"},{"type":"null"}],"description":"Karencja dopasowana do uprawy z zapytania `crop`. `null` = brak dopasowanej pozycji (sprawdź `karencja_wszystkie`)."},"karencja_wszystkie":{"anyOf":[{"items":{"$ref":"#/components/schemas/KarencjaEntry"},"type":"array"},{"type":"null"}],"title":"Karencja Wszystkie","description":"Wszystkie grupy karencji z etykiety (per uprawa) — przydatne, gdy pytasz bez konkretnej uprawy lub chcesz pełny obraz."},"prewencja":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prewencja","description":"Okres prewencji — czas, po którym ludzie/zwierzęta/pszczoły mogą wrócić na obszar (z etykiety)."},"pszczoly":{"anyOf":[{"$ref":"#/components/schemas/Bee"},{"type":"null"}],"description":"Ostrzeżenie dot. pszczół: {uwaga, toksyczny, opis}."},"etykieta_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Etykieta Url","description":"URL do oficjalnego PDF etykiety (źródło rozstrzygające — zawsze najświeższe i wiążące)."},"dopasowano_przez":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dopasowano Przez","description":"Jak dopasowano etykietę do produktu: `nrzezw` (po numerze) / `nazwa` (po nazwie) / `referencyjny` (po produkcie referencyjnym)."},"uwaga":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uwaga","description":"Zastrzeżenie, np. że dane pochodzą z etykiety produktu referencyjnego."}},"type":"object","title":"LabelInfo","description":"Dane z **etykiety** produktu (wiarygodne źródło karencji/prewencji/pszczół).\nDopasowane do uprawy z zapytania, gdy to możliwe."},"MetaResponse":{"properties":{"source":{"type":"string","title":"Source","description":"Źródło danych."},"source_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Date","description":"Data wersji rejestru, którą serwujemy (ISO). Sygnał świeżości."},"refreshed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refreshed At","description":"Kiedy ostatnio odświeżyliśmy bazę po naszej stronie."},"products":{"type":"integer","title":"Products","description":"Liczba produktów w zbiorze."},"applications":{"type":"integer","title":"Applications","description":"Liczba zarejestrowanych zastosowań."},"disclaimer":{"type":"string","title":"Disclaimer","description":"Zastrzeżenie prawne."}},"type":"object","required":["source","products","applications","disclaimer"],"title":"MetaResponse","description":"Metadane zbioru: źródło, data publikacji, rozmiary."},"Product":{"properties":{"nr_zezw":{"type":"string","title":"Nr Zezw","description":"Numer zezwolenia (klucz produktu), np. „R-14/2025 h.r.”. Użyj w GET /products/{nr_zezw}."},"nazwa":{"type":"string","title":"Nazwa","description":"Nazwa handlowa produktu."},"producent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producent","description":"Producent / wytwórca środka."},"rodzaj":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rodzaj","description":"Rodzaj środka: Fungicyd / Herbicyd / Insektycyd / Zoocyd / … Filtruj parametrem `rodzaj`."},"substancja_czynna":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Substancja Czynna","description":"Substancja czynna + zawartość, np. „tetrakonazol - 100 g”."},"legalny_do":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legalny Do","description":"Data, do której produkt jest legalny do **stosowania** (ISO `YYYY-MM-DD`)."},"sprzedaz_do":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sprzedaz Do","description":"Data, do której produkt jest legalny do **sprzedaży** (ISO)."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Cykl życia: `aktywny` / `wygasa` (≤90 dni do końca legalności) / `wycofany`. Klucz dla integratora, by nie polecić wycofanego środka."},"etykieta_dostepna":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Etykieta Dostepna","description":"Czy znaleziono dane z etykiety dla tego produktu."},"etykieta_powod":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Etykieta Powod","description":"Gdy brak danych z etykiety — czytelny powód (np. brak opublikowanej etykiety, produkt wycofany)."},"klasyfikacja":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Klasyfikacja","description":"Klasyfikacja zagrożeń CLP (kody H), np. „H302, H319, H411”."},"toksyczny_dla_organizmow_wodnych":{"type":"boolean","title":"Toksyczny Dla Organizmow Wodnych","description":"Wyliczone z kodów CLP (H400/H410/H411/H412) — szybka flaga zagrożenia dla organizmów wodnych.","default":false},"etykieta":{"anyOf":[{"$ref":"#/components/schemas/LabelInfo"},{"type":"null"}],"description":"Dane z etykiety: karencja / prewencja / pszczoły (gdy dostępne)."},"zastosowania":{"anyOf":[{"items":{"$ref":"#/components/schemas/Use"},"type":"array"},{"type":"null"}],"title":"Zastosowania","description":"Wszystkie zarejestrowane zastosowania produktu (po jednym wpisie na kombinację agrofag/dawka/termin)."}},"type":"object","required":["nr_zezw","nazwa"],"title":"Product","description":"Produkt z danymi z etykiety i zastosowaniami — wynik `/search`."},"ProductDetail":{"properties":{"nr_zezw":{"type":"string","title":"Nr Zezw","description":"Numer zezwolenia (klucz produktu), np. „R-14/2025 h.r.”. Użyj w GET /products/{nr_zezw}."},"nazwa":{"type":"string","title":"Nazwa","description":"Nazwa handlowa produktu."},"producent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producent","description":"Producent / wytwórca środka."},"rodzaj":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rodzaj","description":"Rodzaj środka: Fungicyd / Herbicyd / Insektycyd / Zoocyd / … Filtruj parametrem `rodzaj`."},"substancja_czynna":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Substancja Czynna","description":"Substancja czynna + zawartość, np. „tetrakonazol - 100 g”."},"legalny_do":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legalny Do","description":"Data, do której produkt jest legalny do **stosowania** (ISO `YYYY-MM-DD`)."},"sprzedaz_do":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sprzedaz Do","description":"Data, do której produkt jest legalny do **sprzedaży** (ISO)."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Cykl życia: `aktywny` / `wygasa` (≤90 dni do końca legalności) / `wycofany`. Klucz dla integratora, by nie polecić wycofanego środka."},"etykieta_dostepna":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Etykieta Dostepna","description":"Czy znaleziono dane z etykiety dla tego produktu."},"etykieta_powod":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Etykieta Powod","description":"Gdy brak danych z etykiety — czytelny powód (np. brak opublikowanej etykiety, produkt wycofany)."},"klasyfikacja":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Klasyfikacja","description":"Klasyfikacja zagrożeń CLP (kody H), np. „H302, H319, H411”."},"toksyczny_dla_organizmow_wodnych":{"type":"boolean","title":"Toksyczny Dla Organizmow Wodnych","description":"Wyliczone z kodów CLP (H400/H410/H411/H412) — szybka flaga zagrożenia dla organizmów wodnych.","default":false},"etykieta":{"anyOf":[{"$ref":"#/components/schemas/LabelInfo"},{"type":"null"}],"description":"Dane z etykiety: karencja / prewencja / pszczoły (gdy dostępne)."},"zastosowania":{"anyOf":[{"items":{"$ref":"#/components/schemas/Use"},"type":"array"},{"type":"null"}],"title":"Zastosowania","description":"Wszystkie zarejestrowane zastosowania produktu (po jednym wpisie na kombinację agrofag/dawka/termin)."},"podmiot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Podmiot","description":"Podmiot odpowiedzialny — posiadacz zezwolenia."},"opakowanie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opakowanie","description":"Dostępne opakowania / wielkości."},"produkt_referencyjny":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Produkt Referencyjny","description":"Produkt referencyjny — gdy ten jest importem równoległym / odpowiednikiem."},"uwagi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uwagi","description":"Dodatkowe uwagi z rejestru."}},"type":"object","required":["nr_zezw","nazwa"],"title":"ProductDetail","description":"Pełne szczegóły produktu — `GET /products/{nr_zezw}` (te pola są tylko tutaj)."},"ProductListResponse":{"properties":{"total":{"type":"integer","title":"Total","description":"Łączna liczba pasujących produktów (przed paginacją)."},"items":{"items":{"$ref":"#/components/schemas/ProductSummary"},"type":"array","title":"Items","description":"Strona wyników — podstawowe pola produktu. Po pełne dane (zastosowania, opakowanie, uwagi) wywołaj GET /products/{nr_zezw}."}},"type":"object","required":["total","items"],"title":"ProductListResponse","description":"Wynik /products — strona produktów (podstawowe pola) + łączna liczba trafień."},"ProductSummary":{"properties":{"nr_zezw":{"type":"string","title":"Nr Zezw","description":"Numer zezwolenia (klucz produktu), np. „R-14/2025 h.r.”. Użyj w GET /products/{nr_zezw}."},"nazwa":{"type":"string","title":"Nazwa","description":"Nazwa handlowa produktu."},"producent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Producent","description":"Producent / wytwórca środka."},"rodzaj":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rodzaj","description":"Rodzaj środka: Fungicyd / Herbicyd / Insektycyd / Zoocyd / … Filtruj parametrem `rodzaj`."},"substancja_czynna":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Substancja Czynna","description":"Substancja czynna + zawartość, np. „tetrakonazol - 100 g”."},"legalny_do":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legalny Do","description":"Data, do której produkt jest legalny do **stosowania** (ISO `YYYY-MM-DD`)."},"sprzedaz_do":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sprzedaz Do","description":"Data, do której produkt jest legalny do **sprzedaży** (ISO)."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Cykl życia: `aktywny` / `wygasa` (≤90 dni do końca legalności) / `wycofany`. Klucz dla integratora, by nie polecić wycofanego środka."},"etykieta_dostepna":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Etykieta Dostepna","description":"Czy znaleziono dane z etykiety dla tego produktu."},"etykieta_powod":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Etykieta Powod","description":"Gdy brak danych z etykiety — czytelny powód (np. brak opublikowanej etykiety, produkt wycofany)."},"klasyfikacja":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Klasyfikacja","description":"Klasyfikacja zagrożeń CLP (kody H), np. „H302, H319, H411”."},"toksyczny_dla_organizmow_wodnych":{"type":"boolean","title":"Toksyczny Dla Organizmow Wodnych","description":"Wyliczone z kodów CLP (H400/H410/H411/H412) — szybka flaga zagrożenia dla organizmów wodnych.","default":false}},"type":"object","required":["nr_zezw","nazwa"],"title":"ProductSummary","description":"Podstawowe pola produktu — widok listy (`/products`). Po pełne dane\n(etykieta, zastosowania, opakowanie itd.) wywołaj `GET /products/{nr_zezw}`."},"SearchResponse":{"properties":{"crop":{"type":"string","title":"Crop","description":"Uprawa z zapytania (echo)."},"pest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pest","description":"Agrofag z zapytania (echo), jeśli podany."},"total":{"type":"integer","title":"Total","description":"Łączna liczba pasujących produktów (przed paginacją). Użyj z `limit`/`offset` do stronicowania."},"items":{"items":{"$ref":"#/components/schemas/Product"},"type":"array","title":"Items","description":"Strona wyników — po jednym wpisie na produkt."},"suggestions":{"anyOf":[{"$ref":"#/components/schemas/Suggestions"},{"type":"null"}],"description":"Tylko gdy `total=0` i nie udało się dopasować uprawy/agrofaga (nawet ignorując diakrytyki): najbliższe poprawne nazwy, np. `{\"crop\": [\"jabłoń\", \"jabłka\"], \"pest\": null}`. Ponów z jedną z nich."}},"type":"object","required":["crop","total","items"],"title":"SearchResponse"},"Suggestions":{"properties":{"crop":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Crop","description":"Najbliższe poprawne nazwy upraw (gdy nie trafiono `crop`)."},"pest":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Pest","description":"Najbliższe poprawne nazwy agrofagów (gdy nie trafiono `pest`)."}},"type":"object","title":"Suggestions","description":"Podpowiedzi nazw, gdy wyszukiwanie nie trafiło. Zawsze obie pary kluczy —\nwypełniona jest ta, której dotyczyło nietrafione zapytanie, druga to `null`,\nnp. `{\"crop\": [\"jabłoń\", \"jabłka\"], \"pest\": null}`."},"Use":{"properties":{"agrofag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agrofag","description":"Zwalczany organizm/organizmy dla tego zastosowania, np. „parch jabłoni, mączniak prawdziwy”."},"dawka":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dawka","description":"Dawka tak jak na etykiecie (często wielowierszowo: dawka maksymalna i zalecana, jednostka l/ha lub kg/ha)."},"termin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Termin","description":"Termin/uwagi stosowania — zwykle w fazach **BBCH** (2-cyfrowy kod fenologiczny), nie data."},"karencja":{"anyOf":[{"$ref":"#/components/schemas/Karencja"},{"type":"null"}],"description":"Karencja odczytana z `termin` (rzadka). `null` = „brak informacji w rejestrze”, NIE „karencja zerowa”. Wiarygodna karencja → pole `etykieta.karencja`."},"metoda":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metoda","description":"Metoda aplikacji, np. „opryskiwanie”, „zaprawianie”."},"grupa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grupa","description":"Grupa zastosowań, np. ROŚLINY ROLNICZE / SADOWNICZE / WARZYWNE."},"uzytkownik":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uzytkownik","description":"Klasa użytkownika: „profesjonalne” albo „amatorskie”. Filtruj parametrem `uzytkownik` w /search."},"maloobszarowe":{"type":"boolean","title":"Maloobszarowe","description":"Czy to rejestracja małoobszarowa (minor use).","default":false}},"type":"object","title":"Use","description":"Jedno zarejestrowane zastosowanie produktu (kombinacja agrofag × dawka ×\ntermin × metoda). Produkt może mieć wiele zastosowań."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VocabResponse":{"properties":{"items":{"items":{"type":"string"},"type":"array","title":"Items","description":"Posortowana lista nazw — do autouzupełniania i odkrywania wartości dla /search."}},"type":"object","required":["items"],"title":"VocabResponse","description":"Lista nazw słownikowych (uprawy lub agrofagi)."},"ValidateCheck":{"properties":{"code":{"type":"string","title":"Code","description":"Identyfikator sprawdzenia, np. „registration_valid”, „dose_within_label”."},"status":{"type":"string","enum":["pass","fail","warn","indeterminate","skipped"],"title":"Status","description":"Wynik pojedynczego sprawdzenia."},"message":{"type":"string","title":"Message","description":"Czytelne uzasadnienie (po polsku)."}},"type":"object","required":["code","status","message"],"title":"ValidateCheck","description":"Pojedyncze sprawdzenie składające się na werdykt."},"ResolvedField":{"properties":{"input":{"type":"string","title":"Input","description":"Wartość podana przez klienta."},"matched":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched","description":"Dopasowana nazwa kanoniczna z rejestru (lub null)."},"exact":{"type":"boolean","title":"Exact","description":"Czy dopasowanie było dokładne (false = rozmyte/po sugestiach)."}},"type":"object","required":["input","exact"],"title":"ResolvedField","description":"Jak rozpoznano uprawę/agrofaga z wejścia (tolerancja diakrytyków)."},"MatchedUse":{"properties":{"uprawa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uprawa"},"agrofag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agrofag"},"dawka":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dawka","description":"Surowa dawka z rejestru (tekst swobodny)."},"termin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Termin"},"maloobszarowe":{"type":"boolean","title":"Maloobszarowe","default":false}},"type":"object","title":"MatchedUse","description":"Zastosowanie z rejestru dopasowane do zapytania (źródło dawki/terminu)."},"ValidateResponse":{"properties":{"verdict":{"type":"string","enum":["allowed","warning","not_allowed"],"title":"Verdict","description":"Werdykt zbiorczy. `not_allowed` = twarda niezgodność; `warning` = dopasowanie rozmyte lub dawka niepewna; `allowed` = wszystko zgodne."},"product":{"anyOf":[{"type":"object","properties":{"nr_zezw":{"type":"string"},"nazwa":{"type":"string"},"substancja_czynna":{"anyOf":[{"type":"string"},{"type":"null"}]}}},{"type":"null"}],"title":"Product","description":"Podstawowe dane środka (null gdy nie znaleziono w rejestrze)."},"matched_use":{"anyOf":[{"$ref":"#/components/schemas/MatchedUse"},{"type":"null"}],"description":"Dopasowane zastosowanie (null gdy brak)."},"checks":{"items":{"$ref":"#/components/schemas/ValidateCheck"},"type":"array","title":"Checks","description":"Rozbite sprawdzenia z powodami."},"resolved":{"type":"object","properties":{"crop":{"$ref":"#/components/schemas/ResolvedField"},"pest":{"anyOf":[{"$ref":"#/components/schemas/ResolvedField"},{"type":"null"}]},"product":{"type":"object","properties":{"input":{"type":"string"},"matched":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Dopasowany nr_zezw (lub null)."},"by":{"anyOf":[{"type":"string","enum":["nr_zezw","nazwa"]},{"type":"null"}],"description":"Jak rozpoznano środek: po numerze, po nazwie, albo nie znaleziono (null)."}},"description":"Jak rozpoznano środek z wejścia `product`."}},"title":"Resolved","description":"Jak rozpoznano uprawę i agrofaga."},"suggestions":{"anyOf":[{"$ref":"#/components/schemas/Suggestions"},{"type":"null"}],"description":"Podpowiedzi nazw, gdy uprawa/agrofag nietrafione."},"disclaimer":{"type":"string","title":"Disclaimer"},"candidates":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"nr_zezw":{"type":"string"},"nazwa":{"type":"string"}}}},{"type":"null"}],"title":"Candidates","description":"Gdy `product` (nazwa) pasuje do wielu środków — lista kandydatów do wskazania przez nr_zezw. Inaczej null."}},"type":"object","required":["verdict","checks","resolved","disclaimer"],"title":"ValidateResponse","description":"Wynik walidacji zabiegu: werdykt + rozbite powody + dopasowania."}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Klucz API. Bez klucza działa darmowy tier (limit per-IP). Alternatywnie: nagłówek `Authorization: Bearer <klucz>`."}}}}