{"openapi":"3.1.0","info":{"title":"NIPdata.pl API","description":"Polskie API do weryfikacji firm — GUS, Biała Lista, VIES, KRS, CEIDG.","version":"0.1.0"},"paths":{"/admin/contact":{"get":{"tags":["admin-contact"],"summary":"Contact List","description":"Lista wiadomości z filtrowaniem + paginacją.","operationId":"contact_list_admin_contact_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"status_filter","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status Filter"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/contact/{msg_id}":{"get":{"tags":["admin-contact"],"summary":"Contact Detail","description":"Szczegóły jednej wiadomości.","operationId":"contact_detail_admin_contact__msg_id__get","parameters":[{"name":"msg_id","in":"path","required":true,"schema":{"type":"integer","title":"Msg Id"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/contact/{msg_id}/update":{"post":{"tags":["admin-contact"],"summary":"Contact Update","description":"Update status + notes + responded_at.","operationId":"contact_update_admin_contact__msg_id__update_post","parameters":[{"name":"msg_id","in":"path","required":true,"schema":{"type":"integer","title":"Msg Id"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_contact_update_admin_contact__msg_id__update_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/contact/{msg_id}/delete":{"post":{"tags":["admin-contact"],"summary":"Contact Delete","description":"Permanentnie usuwa wiadomość (np. spam).","operationId":"contact_delete_admin_contact__msg_id__delete_post","parameters":[{"name":"msg_id","in":"path","required":true,"schema":{"type":"integer","title":"Msg Id"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/dashboard/modules":{"get":{"tags":["admin-dashboard-api"],"summary":"List Modules","description":"Returns the registry of all available dashboard modules.","operationId":"list_modules_admin_api_dashboard_modules_get","parameters":[{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Modules Admin Api Dashboard Modules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/dashboard/layout":{"get":{"tags":["admin-dashboard-api"],"summary":"Get Layout","description":"Returns the current user's saved layout, or default if none.","operationId":"get_layout_admin_api_dashboard_layout_get","parameters":[{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Layout Admin Api Dashboard Layout Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-dashboard-api"],"summary":"Save Layout","description":"Saves user's dashboard layout. Returns validated layout that was saved.","operationId":"save_layout_admin_api_dashboard_layout_put","parameters":[{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Save Layout Admin Api Dashboard Layout Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-dashboard-api"],"summary":"Reset Layout","description":"Removes user's saved layout — falls back to default.","operationId":"reset_layout_admin_api_dashboard_layout_delete","parameters":[{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Layout Admin Api Dashboard Layout Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/webhooks":{"get":{"tags":["admin-webhooks"],"summary":"Webhooks List","description":"Lista wszystkich webhooków w systemie + globalne metryki.","operationId":"webhooks_list_admin_webhooks_get","parameters":[{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/webhooks/{webhook_id}":{"get":{"tags":["admin-webhooks"],"summary":"Webhook Detail","description":"Szczegóły webhooka + delivery log.","operationId":"webhook_detail_admin_webhooks__webhook_id__get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/webhooks/{webhook_id}/toggle":{"post":{"tags":["admin-webhooks"],"summary":"Webhook Toggle","description":"Włącz/wyłącz webhook.","operationId":"webhook_toggle_admin_webhooks__webhook_id__toggle_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/webhooks/{webhook_id}/test":{"post":{"tags":["admin-webhooks"],"summary":"Webhook Send Test","description":"Wysyła testowy event 'test.ping' przez ten webhook.","operationId":"webhook_send_test_admin_webhooks__webhook_id__test_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/webhooks/{webhook_id}/replay/{delivery_id}":{"post":{"tags":["admin-webhooks"],"summary":"Webhook Replay Delivery","description":"Replay nieudanej dostawy — kolejkuj ponownie z attempts=0.","operationId":"webhook_replay_delivery_admin_webhooks__webhook_id__replay__delivery_id__post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"delivery_id","in":"path","required":true,"schema":{"type":"integer","title":"Delivery Id"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/webhooks/new/create":{"get":{"tags":["admin-webhooks"],"summary":"Webhook New Form","description":"Formularz tworzenia webhooka (admin wybiera org).","operationId":"webhook_new_form_admin_webhooks_new_create_get","parameters":[{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-webhooks"],"summary":"Webhook Create","description":"Tworzy nowy webhook (admin może omijać limit planu — `force=1`).","operationId":"webhook_create_admin_webhooks_new_create_post","parameters":[{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_webhook_create_admin_webhooks_new_create_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/webhooks/{webhook_id}/delete":{"post":{"tags":["admin-webhooks"],"summary":"Webhook Delete","description":"Usuwa webhook (kasuje też wszystkie deliveries dzięki ON DELETE CASCADE).","operationId":"webhook_delete_admin_webhooks__webhook_id__delete_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"admin_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Session"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/billing/usage":{"get":{"tags":["client-billing"],"summary":"Usage Page","description":"Strona z wykresem zużycia.","operationId":"usage_page_app_billing_usage_get","parameters":[{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/billing/usage/chart-data":{"get":{"tags":["client-billing"],"summary":"Usage Chart Data","description":"JSON z danymi do wykresu — daily usage z query_logs.","operationId":"usage_chart_data_app_billing_usage_chart_data_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/billing/":{"get":{"tags":["client-billing"],"summary":"Billing Index","description":"Redirect do /usage jako default sekcja billingu.","operationId":"billing_index_app_billing__get","parameters":[{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/billing/invoices":{"get":{"tags":["client-billing"],"summary":"Invoices Page","description":"Lista faktur i proform organizacji.","operationId":"invoices_page_app_billing_invoices_get","parameters":[{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/billing/upgrade/{plan_code}":{"post":{"tags":["client-billing"],"summary":"Upgrade Subscription","description":"Rozpocznij upgrade — utwórz proformę + paylink iMoje, redirect do iMoje.","operationId":"upgrade_subscription_app_billing_upgrade__plan_code__post","parameters":[{"name":"plan_code","in":"path","required":true,"schema":{"type":"string","title":"Plan Code"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/billing/return":{"get":{"tags":["client-billing"],"summary":"Billing Return","description":"Strona powrotna z iMoje — pokazuje status.","operationId":"billing_return_app_billing_return_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/billing/cancel":{"post":{"tags":["client-billing"],"summary":"Cancel Subscription Endpoint","description":"Anuluj subskrypcję na końcu bieżącego okresu.","operationId":"cancel_subscription_endpoint_app_billing_cancel_post","parameters":[{"name":"user_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/imoje":{"post":{"tags":["webhooks"],"summary":"Imoje Webhook","description":"Notification od iMoje. Weryfikuje HMAC SHA256 i wywołuje subscriptions.handle.\n\niMoje retry'uje webhook do skutku — odpowiadamy 200 nawet przy nieznanym order_id,\nżeby nie spamowali. Tylko przy invalid signature → 401.","operationId":"imoje_webhook_webhooks_imoje_post","parameters":[{"name":"X-IMoje-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Imoje-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health V1 Health Get"}}}}}}},"/v1/ready":{"get":{"tags":["meta"],"summary":"Ready","operationId":"ready_v1_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ready V1 Ready Get"}}}}}}},"/v1/version":{"get":{"tags":["meta"],"summary":"Version","operationId":"version_v1_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Version V1 Version Get"}}}}}}},"/v1/company/{nip}":{"get":{"tags":["company"],"summary":"Get Company","description":"Pobiera znormalizowane dane firmy łącząc GUS + Biała Lista.\n\nGUS:    nazwa, REGON, adres siedziby, forma prawna, status działalności\nBL:     status VAT, rachunki bankowe, requestId (dowód weryfikacji),\n        data rejestracji, KRS (uzupełnia GUS), reprezentanci, wspólnicy","operationId":"get_company_v1_company__nip__get","parameters":[{"name":"nip","in":"path","required":true,"schema":{"type":"string","minLength":10,"maxLength":13,"description":"NIP polski (10 cyfr)","title":"Nip"},"description":"NIP polski (10 cyfr)"}],"responses":{"200":{"description":"Dane firmy ze wszystkich dostępnych źródeł","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyData"}}}},"404":{"description":"NIP poprawny, ale brak firmy w GUS i Białej Liście"},"422":{"description":"Niepoprawny NIP (suma kontrolna)"},"502":{"description":"Wszystkie zewnętrzne źródła niedostępne"}}}},"/v1/company/{nip}/vies":{"get":{"tags":["company"],"summary":"Get Company Vies","description":"Sprawdza tylko status VAT-UE z VIES (bez GUS i BL — szybsze).\n\nUżyteczne gdy potrzebujesz tylko valid/invalid VAT-UE bez pełnych danych firmy.","operationId":"get_company_vies_v1_company__nip__vies_get","parameters":[{"name":"nip","in":"path","required":true,"schema":{"type":"string","minLength":10,"maxLength":13,"title":"Nip"}}],"responses":{"200":{"description":"Status VAT-UE z VIES (Komisja Europejska)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Company Vies V1 Company  Nip  Vies Get"}}}},"422":{"description":"Niepoprawny NIP"},"502":{"description":"VIES niedostępne"}}}},"/v1/krs/{krs_no}":{"get":{"tags":["company"],"summary":"Get Krs","description":"Pobiera odpis aktualny z KRS bezpośrednio po numerze KRS (bez NIP).\n\nArgs:\n    krs_no: numer KRS (np. 0000006865 lub 6865 — leading zeros uzupełnimy)\n    rejestr: P=przedsiębiorcy (domyślnie), S=stowarzyszenia/fundacje","operationId":"get_krs_v1_krs__krs_no__get","parameters":[{"name":"krs_no","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":10,"description":"Numer KRS (10 cyfr, leading zeros opcjonalne)","title":"Krs No"},"description":"Numer KRS (10 cyfr, leading zeros opcjonalne)"},{"name":"rejestr","in":"query","required":false,"schema":{"type":"string","default":"P","title":"Rejestr"}}],"responses":{"200":{"description":"Dane firmy z KRS (Krajowy Rejestr Sądowy)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Krs V1 Krs  Krs No  Get"}}}},"404":{"description":"Nie znaleziono firmy w KRS"},"422":{"description":"Niepoprawny numer KRS"},"502":{"description":"KRS API niedostępne"}}}},"/v1/krs/{krs_no}/pdf":{"get":{"tags":["company"],"summary":"Get Krs Pdf","description":"Pobiera dane z KRS i renderuje je do PDF.\n\nPDF ma charakter informacyjny — nie zastępuje urzędowego odpisu z PRS.\nZawiera branding nipdata.pl, polski layout, A4.\n\nReturns:\n    Content-Type: application/pdf\n    Content-Disposition: attachment; filename=\"krs_{krs}.pdf\"","operationId":"get_krs_pdf_v1_krs__krs_no__pdf_get","parameters":[{"name":"krs_no","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":10,"description":"Numer KRS (10 cyfr)","title":"Krs No"},"description":"Numer KRS (10 cyfr)"},{"name":"rejestr","in":"query","required":false,"schema":{"type":"string","default":"P","title":"Rejestr"}}],"responses":{"200":{"description":"Odpis KRS w formacie PDF (informacyjny, branded nipdata.pl)","content":{"application/pdf":{}}},"404":{"description":"Nie znaleziono firmy w KRS"},"422":{"description":"Niepoprawny numer KRS"},"502":{"description":"KRS API niedostępne"}}}},"/v1/company/{nip}/ceidg":{"get":{"tags":["company"],"summary":"Get Company Ceidg","description":"Sprawdza tylko CEIDG — dla jednoosobowych działalności gospodarczych.\n\nWymaga skonfigurowanego klucza CEIDG (zmienna CEIDG_JWT w .env).","operationId":"get_company_ceidg_v1_company__nip__ceidg_get","parameters":[{"name":"nip","in":"path","required":true,"schema":{"type":"string","minLength":10,"maxLength":13,"title":"Nip"}}],"responses":{"200":{"description":"Dane JDG z CEIDG (Centralna Ewidencja Działalności Gospodarczej)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Company Ceidg V1 Company  Nip  Ceidg Get"}}}},"404":{"description":"NIP nie znaleziony w CEIDG (prawdopodobnie spółka — sprawdź /v1/company/{nip}/krs)"},"422":{"description":"Niepoprawny NIP"},"503":{"description":"CEIDG nie skonfigurowany (brak klucza API)"}}}},"/v1/usage":{"get":{"tags":["usage","meta"],"summary":"Bieżące zużycie i informacje o subskrypcji","description":"Zwraca aktualne zużycie API key dla bieżącego okresu rozliczeniowego.\n\nEndpoint nie zalicza się do quoty (quota exempt).","operationId":"get_usage_v1_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Usage V1 Usage Get"}}}}}}},"/v1/iban/{iban}":{"get":{"tags":["iban"],"summary":"Search By Iban","description":"Wyszukuje firmy które miały dany NRB w Białej Liście VAT.\n\nOperuje na naszym cache snapshotów BL. Żeby zweryfikować aktualny stan firmy\npo znalezieniu NIPa, użyj `/v1/company/{nip}`.\n\nLiczy się jako 1 zapytanie z quota.","operationId":"search_by_iban_v1_iban__iban__get","parameters":[{"name":"iban","in":"path","required":true,"schema":{"type":"string","minLength":20,"maxLength":34,"description":"IBAN polski (PL+26 cyfr) lub NRB (26 cyfr)","title":"Iban"},"description":"IBAN polski (PL+26 cyfr) lub NRB (26 cyfr)"}],"responses":{"200":{"description":"Lista NIPów z tym numerem konta (z snapshotów BL)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IbanSearchResponse"}}}},"422":{"description":"Niepoprawny format IBAN/NRB"}}}},"/v1/teryt/voivodeships":{"get":{"tags":["teryt","teryt"],"summary":"List Voivodeships","description":"Lista 16 polskich województw z kodami TERYT. Endpoint nie zużywa quoty.","operationId":"list_voivodeships_v1_teryt_voivodeships_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoivodeshipsResponse"}}}}}}},"/v1/teryt/voivodeship/{code}":{"get":{"tags":["teryt","teryt"],"summary":"Get Voivodeship","description":"Dane jednego województwa po kodzie TERYT (2 cyfry, np. '14' dla Mazowieckiego).","operationId":"get_voivodeship_v1_teryt_voivodeship__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"pattern":"^\\d{2}$","description":"Kod TERYT województwa (2 cyfry)","title":"Code"},"description":"Kod TERYT województwa (2 cyfry)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerytEntry"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/test/company/{nip}":{"get":{"tags":["test","test"],"summary":"Test Get Company","description":"Public test endpoint — bez autoryzacji, tylko dla whitelist NIPów. Aby sprawdzić własny NIP, zarejestruj się na https://nipdata.pl","operationId":"test_get_company_v1_test_company__nip__get","parameters":[{"name":"nip","in":"path","required":true,"schema":{"type":"string","minLength":10,"maxLength":10,"pattern":"^\\d{10}$","description":"Jeden z whitelist NIPów testowych","title":"Nip"},"description":"Jeden z whitelist NIPów testowych"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/test/nips":{"get":{"tags":["test","test"],"summary":"List Test Nips","description":"Lista wszystkich whitelistowanych NIPów testowych","operationId":"list_test_nips_v1_test_nips_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestNipsListResponse"}}}}}}},"/v1/companies/search":{"get":{"tags":["companies","companies"],"summary":"Search Companies","description":"Wyszukaj firmy po nazwie (LIKE), REGON lub KRS. Wymagany min. 1 parametr.","operationId":"search_companies_v1_companies_search_get","parameters":[{"name":"regon","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{9}(\\d{5})?$"},{"type":"null"}],"description":"REGON: 9 lub 14 cyfr","title":"Regon"},"description":"REGON: 9 lub 14 cyfr"},{"name":"krs","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{10}$"},{"type":"null"}],"description":"KRS: 10 cyfr","title":"Krs"},"description":"KRS: 10 cyfr"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max wyników (1-100)","default":25,"title":"Limit"},"description":"Max wyników (1-100)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["meta"],"summary":"Health","description":"Liveness — zwraca 200 jeśli proces żyje.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"Address":{"properties":{"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street"},"building_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building No"},"apartment_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apartment No"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"voivodeship":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voivodeship"},"country":{"type":"string","title":"Country","default":"PL"}},"type":"object","title":"Address","description":"Adres znormalizowany."},"Body_contact_update_admin_contact__msg_id__update_post":{"properties":{"new_status":{"type":"string","title":"New Status","default":""},"admin_notes":{"type":"string","title":"Admin Notes","default":""}},"type":"object","title":"Body_contact_update_admin_contact__msg_id__update_post"},"Body_webhook_create_admin_webhooks_new_create_post":{"properties":{"organization_id":{"type":"integer","title":"Organization Id"},"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"events":{"items":{"type":"string"},"type":"array","title":"Events","default":[]},"nip_filter":{"type":"string","title":"Nip Filter","default":""}},"type":"object","required":["organization_id","name","url"],"title":"Body_webhook_create_admin_webhooks_new_create_post"},"CompanyData":{"properties":{"nip":{"type":"string","title":"Nip"},"regon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regon"},"krs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Krs"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"short_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Short Name"},"legal_form":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Form"},"legal_form_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Form Code"},"address":{"anyOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}]},"pkd":{"items":{"$ref":"#/components/schemas/Pkd"},"type":"array","title":"Pkd"},"registration_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Registration Date"},"suspension_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Suspension Date"},"dissolution_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Dissolution Date"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"vat":{"anyOf":[{"$ref":"#/components/schemas/VatInfo"},{"type":"null"}]},"vies_valid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Vies Valid"},"vies_checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Vies Checked At"},"krs_info":{"anyOf":[{"$ref":"#/components/schemas/KrsInfo"},{"type":"null"}]},"ceidg_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ceidg Active"},"ceidg_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ceidg Data"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"fetched_at":{"type":"string","format":"date-time","title":"Fetched At"},"cache_hit":{"type":"boolean","title":"Cache Hit","default":false}},"type":"object","required":["nip","sources","fetched_at"],"title":"CompanyData","description":"Główny model wyjściowy /v1/company/{nip}."},"CompanyMatch":{"properties":{"nip":{"type":"string","title":"Nip"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"regon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regon"},"krs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Krs"},"status_vat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Vat"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At"}},"type":"object","required":["nip","last_seen_at"],"title":"CompanyMatch"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IbanMatch":{"properties":{"nip":{"type":"string","title":"Nip","description":"NIP firmy z tym numerem konta w BL"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Nazwa firmy"},"status_vat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Vat","description":"Status w VAT (Czynny / Zwolniony / Niezarejestrowany)"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At","description":"Kiedy ostatnio widzieliśmy ten rachunek w BL"}},"type":"object","required":["nip","last_seen_at"],"title":"IbanMatch"},"IbanSearchResponse":{"properties":{"iban":{"type":"string","title":"Iban","description":"Znormalizowany NRB (26 cyfr) wyszukany w BL"},"matches":{"items":{"$ref":"#/components/schemas/IbanMatch"},"type":"array","title":"Matches"},"matches_count":{"type":"integer","title":"Matches Count"},"note":{"type":"string","title":"Note"}},"type":"object","required":["iban","matches","matches_count","note"],"title":"IbanSearchResponse"},"KrsInfo":{"properties":{"krs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Krs"},"legal_form":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Form"},"registration_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Date"},"capital":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Capital"},"representation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Representation"},"prokurenci":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Prokurenci"},"pkd_glowne":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pkd Glowne"},"pkd_pozostale":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Pkd Pozostale"},"court":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court"}},"type":"object","title":"KrsInfo","description":"Dane z KRS (Krajowy Rejestr Sądowy / Ministerstwo Sprawiedliwości)."},"Pkd":{"properties":{"code":{"type":"string","title":"Code"},"description":{"type":"string","title":"Description"},"is_main":{"type":"boolean","title":"Is Main","default":false}},"type":"object","required":["code","description"],"title":"Pkd"},"SearchResponse":{"properties":{"query":{"additionalProperties":true,"type":"object","title":"Query"},"matches":{"items":{"$ref":"#/components/schemas/CompanyMatch"},"type":"array","title":"Matches"},"matches_count":{"type":"integer","title":"Matches Count"},"note":{"type":"string","title":"Note"}},"type":"object","required":["query","matches","matches_count","note"],"title":"SearchResponse"},"TerytEntry":{"properties":{"code":{"type":"string","title":"Code","description":"Kod TERYT (2-cyfrowy dla województwa)"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type","description":"voivodeship / district / community"}},"type":"object","required":["code","name","type"],"title":"TerytEntry"},"TestNipsListResponse":{"properties":{"test_nips":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Test Nips"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["test_nips","total"],"title":"TestNipsListResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VatInfo":{"properties":{"status":{"type":"string","enum":["czynny","zwolniony","niezarejestrowany"],"title":"Status"},"bank_accounts":{"items":{"type":"string"},"type":"array","title":"Bank Accounts"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"checked_for_date":{"type":"string","format":"date","title":"Checked For Date"}},"type":"object","required":["status","checked_for_date"],"title":"VatInfo","description":"Status VAT z Białej Listy."},"VoivodeshipsResponse":{"properties":{"voivodeships":{"items":{"$ref":"#/components/schemas/TerytEntry"},"type":"array","title":"Voivodeships"},"total":{"type":"integer","title":"Total"},"source":{"type":"string","title":"Source","default":"GUS TERYT (eteryt.stat.gov.pl)"}},"type":"object","required":["voivodeships","total"],"title":"VoivodeshipsResponse"}}}}