{"openapi":"3.1.0","info":{"title":"mojaKsięgowa.ai — API","description":"\nAPI dla integracji sklepów i systemów sprzedażowych z mojaKsięgowa.ai.\n\n## Uwierzytelnianie\n\nKażde żądanie niesie klucz API w nagłówku `Authorization: Bearer <sekret>`.\nKlucz tworzy właściciel organizacji w aplikacji (Ustawienia → Integracje API); sekret\n`mk_live_…` widać tylko raz, przy utworzeniu. Sekret w adresie URL jest odrzucany.\n\n## Sandbox\n\nKlucz testowy `mk_test_…` (środowisko „piaskownica\" przy tworzeniu klucza) działa pod tymi samymi\nadresami, ale w osobnej organizacji piaskownicowej: własne faktury, klienci, produkty i webhooki,\nten sam NIP i dane sprzedawcy co produkcja. Faktury z sandboxu przechodzą pełną walidację FA(3)\n(schemat XSD) bez wysyłki do KSeF — `ksef.status` kończy na `przyjeta` z numerem `DEMO-…` albo\n`odrzucona` z powodem. Limit 1000 faktur testowych na miesiąc (`422 LIMIT_SANDBOX`); sandbox można\nzresetować w aplikacji (klucze i webhooki zostają). Nie wprowadzaj do sandboxu prawdziwych danych\nosobowych.\n\n## Limity\n\nLimity zapytań liczone są per klucz w oknie 60 s, osobno dla odczytu (GET) i zapisu\n(POST/PUT/PATCH/DELETE). Każda odpowiedź niesie `X-RateLimit-Limit`,\n`X-RateLimit-Remaining` i `X-RateLimit-Reset`; po przekroczeniu — `429` z `Retry-After`.\n\n## Błędy\n\nKażdy błąd ma ten sam kształt: `{\"blad\": {\"kod\": \"…\", \"komunikat\": \"…\", \"pola\": [...]}}`.\nRozpoznawaj przypadki po stabilnym `kod`, nie po treści komunikatu.\n\n## Listy i paginacja\n\nListy zwracają `{\"dane\": [...], \"nastepny_kursor\": \"…\", \"ma_wiecej\": true}` w kolejności od\nnajstarszego rekordu. Przekaż `nastepny_kursor` jako `kursor` w kolejnym żądaniu; `limit` 1–100.\n\n## Twoje identyfikatory\n\nKlienci, produkty i faktury przyjmują `zewnetrzny_id` — id z Twojego systemu (dla faktury np. numer\nzamówienia), unikalny w organizacji. Duplikat → `409 DUPLIKAT_ZEWNETRZNY_ID` z `id` istniejącego rekordu.\nKlientów i produkty możesz tworzyć-lub-aktualizować jednym `PUT /{zasób}/zewnetrzne/{zewnetrzny_id}`.\n\n## Faktury i KSeF\n\n`POST /faktury` odpowiada `201` synchronicznie (numer nadany, dokument zapisany), a wysyłka do KSeF\njest asynchroniczna — śledź `ksef.status` (`oczekuje` → `przyjeta` z numerem KSeF, albo `odrzucona`\nz listą błędów) przez `GET /faktury/{id}`. Każda faktura, także dla konsumenta, trafia do KSeF.\nPDF (z kodem QR do weryfikacji) i wysyłka e-mailem są dostępne po przyjęciu przez KSeF.\n\n## Idempotencja\n\nNa `POST /faktury` i `POST /faktury/{id}/platnosci` wyślij nagłówek `Idempotency-Key` (np. UUID\nper zamówienie). Powtórka z tą samą treścią zwraca zapisaną odpowiedź z `Idempotent-Replayed: true`,\ninna treść pod tym samym kluczem → `422 IDEMPOTENCY_KEY_KONFLIKT`. Klucze żyją 24 h.\n\n## Webhooki\n\nZamiast odpytywać `GET /faktury/{id}`, zarejestruj webhook (`POST /webhooki`, adres `https`) na zdarzenia\n`faktura.wystawiona`, `faktura.ksef.przyjeta`, `faktura.ksef.odrzucona`, `faktura.oplacona` (także zapłata\nzarejestrowana w aplikacji lub dopasowana z wyciągu), `faktura.anulowana`. Wysyłamy `POST` z JSON\n(`PayloadWebhooka`: cienki, bez danych nabywcy — szczegóły dociągnij z API) i nagłówkiem\n`X-MK-Signature: t=<unix>,v1=<hex>`, gdzie `v1 = HMAC-SHA256(sekret, \"<t>.<ciało>\")`; odrzucaj `t` starsze\nniż 5 min. Odpowiedz `2xx` w 10 s — inaczej ponawiamy (łącznie 6 prób: po 1 min, 5 min, 30 min, 2 h i 12 h),\npoza `4xx` (z wyjątkiem 408/425/429). To samo `id` zdarzenia trafia do wszystkich Twoich webhooków i przy każdej\npróbie — deduplikuj po nim. Po 50 nieudanych próbach z rzędu webhook wyłącza się sam (włączysz go `PATCH` z\n`aktywny: true`). `POST /webhooki/{id}/test` wysyła `ping` i od razu pokazuje odpowiedź Twojego serwera.\n\n## Wersjonowanie\n\nWersja jest częścią ścieżki (`/api/public/v1`). Zmiany addytywne (nowe pola, nowe\nendpointy) nie podbijają wersji; zmiany łamiące trafią do `v2` z co najmniej\n12-miesięczną nakładką.\n","version":"1.0.0"},"paths":{"/ja":{"get":{"tags":["Tożsamość"],"summary":"Tożsamość klucza i organizacji","description":"Zwraca organizację, środowisko, zakresy klucza, stan połączenia KSeF i limity.\n\n`ksef_polaczony=false` oznacza, że wystawianie faktur zakończy się błędem\n`KSEF_NIESKONFIGUROWANY` — sprawdź to przed pierwszą fakturą, nie po.","operationId":"ja_ja_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/ja\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/ja\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/ja');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/ja\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/ja\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/klienci":{"get":{"tags":["Klienci"],"summary":"Lista klientów","description":"Kolejność: od najstarszego (`utworzono`, `id`), paginacja kursorem.","operationId":"lista_klientow_klienci_get","parameters":[{"name":"nip","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":20},{"type":"null"}],"description":"Dokładny NIP (10 cyfr; myślniki i prefiks PL są ignorowane)","title":"Nip"},"description":"Dokładny NIP (10 cyfr; myślniki i prefiks PL są ignorowane)"},{"name":"zewnetrzny_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}],"description":"Dokładny id z Twojego systemu","title":"Zewnetrzny Id"},"description":"Dokładny id z Twojego systemu"},{"name":"szukaj","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":100},{"type":"null"}],"description":"Fragment nazwy, NIP lub e-maila","title":"Szukaj"},"description":"Fragment nazwy, NIP lub e-maila"},{"name":"tylko_aktywni","in":"query","required":false,"schema":{"type":"boolean","description":"Pomiń klientów zdezaktywowanych","default":true,"title":"Tylko Aktywni"},"description":"Pomiń klientów zdezaktywowanych"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Rozmiar strony (1–100)","default":50,"title":"Limit"},"description":"Rozmiar strony (1–100)"},{"name":"kursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`nastepny_kursor` z poprzedniej odpowiedzi","title":"Kursor"},"description":"`nastepny_kursor` z poprzedniej odpowiedzi"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Strona_KlientApiResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/klienci?limit=50\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/klienci?limit=50\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/klienci?limit=50');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/klienci?limit=50\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/klienci?limit=50\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"post":{"tags":["Klienci"],"summary":"Utwórz klienta","description":"`zewnetrzny_id` zajęty → 409 `DUPLIKAT_ZEWNETRZNY_ID` z `id` istniejącego klienta.","operationId":"utworz_klienta_klienci_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlientApiCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlientApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/klienci\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"zewnetrzny_id\": \"k-1\", \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\", \"nip\": \"5261040828\", \"ulica\": \"Polna\", \"numer_domu\": \"1\", \"kod_pocztowy\": \"00-001\", \"miasto\": \"Warszawa\", \"email\": \"fv@hurtownia.example.com\"}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/klienci\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"zewnetrzny_id\": \"k-1\",\n      \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n      \"nip\": \"5261040828\",\n      \"ulica\": \"Polna\",\n      \"numer_domu\": \"1\",\n      \"kod_pocztowy\": \"00-001\",\n      \"miasto\": \"Warszawa\",\n      \"email\": \"fv@hurtownia.example.com\"\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/klienci');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'zewnetrzny_id' => 'k-1',\n        'nazwa' => 'Hurtownia Kwiatów sp. z o.o.',\n        'nip' => '5261040828',\n        'ulica' => 'Polna',\n        'numer_domu' => '1',\n        'kod_pocztowy' => '00-001',\n        'miasto' => 'Warszawa',\n        'email' => 'fv@hurtownia.example.com'\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"zewnetrzny_id\": \"k-1\",\n      \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n      \"nip\": \"5261040828\",\n      \"ulica\": \"Polna\",\n      \"numer_domu\": \"1\",\n      \"kod_pocztowy\": \"00-001\",\n      \"miasto\": \"Warszawa\",\n      \"email\": \"fv@hurtownia.example.com\"\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/klienci\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/klienci\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"zewnetrzny_id\": \"k-1\",\n    \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n    \"nip\": \"5261040828\",\n    \"ulica\": \"Polna\",\n    \"numer_domu\": \"1\",\n    \"kod_pocztowy\": \"00-001\",\n    \"miasto\": \"Warszawa\",\n    \"email\": \"fv@hurtownia.example.com\"\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/klienci/zewnetrzne/{zewnetrzny_id}":{"put":{"tags":["Klienci"],"summary":"Utwórz lub zaktualizuj klienta po id z Twojego systemu","description":"Idempotentne: brak → 201 (utworzono), istnieje → 200 (nadpisane przesłanymi polami).\n\nZgodność NIP-u, kraju i rodzaju klienta sprawdzamy na danych po zapisie: przy aktualizacji pominięte pola\nzachowują dotychczasowe wartości.","operationId":"upsert_klienta_klienci_zewnetrzne__zewnetrzny_id__put","parameters":[{"name":"zewnetrzny_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Zewnetrzny Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlientApiUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlientApiResponse"}}}},"201":{"description":"Utworzono","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlientApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X PUT \"https://api.mojaksiegowa.ai/api/public/v1/klienci/zewnetrzne/zam-10245\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\", \"nip\": \"5261040828\", \"email\": \"fv@hurtownia.example.com\"}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.put(\n    \"https://api.mojaksiegowa.ai/api/public/v1/klienci/zewnetrzne/zam-10245\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n      \"nip\": \"5261040828\",\n      \"email\": \"fv@hurtownia.example.com\"\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/klienci/zewnetrzne/zam-10245');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'nazwa' => 'Hurtownia Kwiatów sp. z o.o.',\n        'nip' => '5261040828',\n        'email' => 'fv@hurtownia.example.com'\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n      \"nip\": \"5261040828\",\n      \"email\": \"fv@hurtownia.example.com\"\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/klienci/zewnetrzne/zam-10245\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/klienci/zewnetrzne/zam-10245\", {\n  method: \"PUT\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n    \"nip\": \"5261040828\",\n    \"email\": \"fv@hurtownia.example.com\"\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/klienci/{klient_id}":{"get":{"tags":["Klienci"],"summary":"Pobierz klienta","operationId":"pobierz_klienta_klienci__klient_id__get","parameters":[{"name":"klient_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Klient Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlientApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"patch":{"tags":["Klienci"],"summary":"Zmień wybrane pola klienta","operationId":"aktualizuj_klienta_klienci__klient_id__patch","parameters":[{"name":"klient_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Klient Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlientApiUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlientApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X PATCH \"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\": \"faktury@hurtownia.example.com\", \"domyslny_termin_platnosci_dni\": 30}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.patch(\n    \"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"email\": \"faktury@hurtownia.example.com\",\n      \"domyslny_termin_platnosci_dni\": 30\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'email' => 'faktury@hurtownia.example.com',\n        'domyslny_termin_platnosci_dni' => 30\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"email\": \"faktury@hurtownia.example.com\",\n      \"domyslny_termin_platnosci_dni\": 30\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"email\": \"faktury@hurtownia.example.com\",\n    \"domyslny_termin_platnosci_dni\": 30\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"delete":{"tags":["Klienci"],"summary":"Dezaktywuj klienta","description":"Dezaktywacja, nie kasowanie — klient może być nabywcą na wystawionych fakturach.","operationId":"dezaktywuj_klienta_klienci__klient_id__delete","parameters":[{"name":"klient_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Klient Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X DELETE \"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.delete(\n    \"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/klienci/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/produkty":{"get":{"tags":["Produkty"],"summary":"Lista produktów","description":"Kolejność: od najstarszego (`utworzono`, `id`), paginacja kursorem.","operationId":"lista_produktow_produkty_get","parameters":[{"name":"zewnetrzny_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}],"description":"Dokładny id/SKU z Twojego systemu","title":"Zewnetrzny Id"},"description":"Dokładny id/SKU z Twojego systemu"},{"name":"szukaj","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":100},{"type":"null"}],"description":"Fragment nazwy lub kodu produktu","title":"Szukaj"},"description":"Fragment nazwy lub kodu produktu"},{"name":"tylko_aktywne","in":"query","required":false,"schema":{"type":"boolean","description":"Pomiń produkty zdezaktywowane","default":true,"title":"Tylko Aktywne"},"description":"Pomiń produkty zdezaktywowane"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Rozmiar strony (1–100)","default":50,"title":"Limit"},"description":"Rozmiar strony (1–100)"},{"name":"kursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`nastepny_kursor` z poprzedniej odpowiedzi","title":"Kursor"},"description":"`nastepny_kursor` z poprzedniej odpowiedzi"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Strona_ProduktApiResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/produkty?limit=50\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/produkty?limit=50\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/produkty?limit=50');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/produkty?limit=50\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/produkty?limit=50\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"post":{"tags":["Produkty"],"summary":"Utwórz produkt","description":"`zewnetrzny_id` zajęty → 409 `DUPLIKAT_ZEWNETRZNY_ID` z `id` istniejącego produktu.","operationId":"utworz_produkt_produkty_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProduktApiCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProduktApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/produkty\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"zewnetrzny_id\": \"SKU-1\", \"nazwa\": \"Doniczka ceramiczna 20 cm\", \"rodzaj\": \"towar\", \"cena_netto\": \"24.39\", \"stawka_vat\": \"23\", \"kod_produktu\": \"SKU-1\"}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/produkty\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"zewnetrzny_id\": \"SKU-1\",\n      \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n      \"rodzaj\": \"towar\",\n      \"cena_netto\": \"24.39\",\n      \"stawka_vat\": \"23\",\n      \"kod_produktu\": \"SKU-1\"\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/produkty');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'zewnetrzny_id' => 'SKU-1',\n        'nazwa' => 'Doniczka ceramiczna 20 cm',\n        'rodzaj' => 'towar',\n        'cena_netto' => '24.39',\n        'stawka_vat' => '23',\n        'kod_produktu' => 'SKU-1'\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"zewnetrzny_id\": \"SKU-1\",\n      \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n      \"rodzaj\": \"towar\",\n      \"cena_netto\": \"24.39\",\n      \"stawka_vat\": \"23\",\n      \"kod_produktu\": \"SKU-1\"\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/produkty\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/produkty\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"zewnetrzny_id\": \"SKU-1\",\n    \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n    \"rodzaj\": \"towar\",\n    \"cena_netto\": \"24.39\",\n    \"stawka_vat\": \"23\",\n    \"kod_produktu\": \"SKU-1\"\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/produkty/zewnetrzne/{zewnetrzny_id}":{"put":{"tags":["Produkty"],"summary":"Utwórz lub zaktualizuj produkt po id/SKU z Twojego systemu","description":"Idempotentne: brak → 201 (utworzono), istnieje → 200 (nadpisane przesłanymi polami).","operationId":"upsert_produktu_produkty_zewnetrzne__zewnetrzny_id__put","parameters":[{"name":"zewnetrzny_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Zewnetrzny Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProduktApiUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProduktApiResponse"}}}},"201":{"description":"Utworzono","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProduktApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X PUT \"https://api.mojaksiegowa.ai/api/public/v1/produkty/zewnetrzne/zam-10245\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"nazwa\": \"Doniczka ceramiczna 20 cm\", \"rodzaj\": \"towar\", \"cena_netto\": \"24.39\", \"stawka_vat\": \"23\"}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.put(\n    \"https://api.mojaksiegowa.ai/api/public/v1/produkty/zewnetrzne/zam-10245\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n      \"rodzaj\": \"towar\",\n      \"cena_netto\": \"24.39\",\n      \"stawka_vat\": \"23\"\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/produkty/zewnetrzne/zam-10245');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'nazwa' => 'Doniczka ceramiczna 20 cm',\n        'rodzaj' => 'towar',\n        'cena_netto' => '24.39',\n        'stawka_vat' => '23'\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n      \"rodzaj\": \"towar\",\n      \"cena_netto\": \"24.39\",\n      \"stawka_vat\": \"23\"\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/produkty/zewnetrzne/zam-10245\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/produkty/zewnetrzne/zam-10245\", {\n  method: \"PUT\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n    \"rodzaj\": \"towar\",\n    \"cena_netto\": \"24.39\",\n    \"stawka_vat\": \"23\"\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/produkty/{produkt_id}":{"get":{"tags":["Produkty"],"summary":"Pobierz produkt","operationId":"pobierz_produkt_produkty__produkt_id__get","parameters":[{"name":"produkt_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Produkt Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProduktApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"patch":{"tags":["Produkty"],"summary":"Zmień wybrane pola produktu","operationId":"aktualizuj_produkt_produkty__produkt_id__patch","parameters":[{"name":"produkt_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Produkt Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProduktApiUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProduktApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X PATCH \"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"cena_netto\": \"26.90\"}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.patch(\n    \"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"cena_netto\": \"26.90\"\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'cena_netto' => '26.90'\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"cena_netto\": \"26.90\"\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"cena_netto\": \"26.90\"\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"delete":{"tags":["Produkty"],"summary":"Dezaktywuj produkt","description":"Dezaktywacja (jak w aplikacji) — produkt może być na pozycjach wystawionych faktur.","operationId":"dezaktywuj_produkt_produkty__produkt_id__delete","parameters":[{"name":"produkt_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Produkt Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X DELETE \"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.delete(\n    \"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/produkty/9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury":{"get":{"tags":["Faktury"],"summary":"Lista faktur sprzedażowych","description":"Kolejność: od najstarszej (`utworzono`, `id`), paginacja kursorem. Tylko sprzedaż.","operationId":"lista_faktur_faktury_get","parameters":[{"name":"data_od","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Data wystawienia od (włącznie)","title":"Data Od"},"description":"Data wystawienia od (włącznie)"},{"name":"data_do","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Data wystawienia do (włącznie)","title":"Data Do"},"description":"Data wystawienia do (włącznie)"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/StatusFaktury"},{"type":"null"}],"title":"Status"}},{"name":"status_ksef","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/StatusKsefApi"},{"type":"null"}],"title":"Status Ksef"}},{"name":"status_platnosci","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/StatusPlatnosci"},{"type":"null"}],"title":"Status Platnosci"}},{"name":"rodzaj","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/RodzajDokumentuApi"},{"type":"null"}],"title":"Rodzaj"}},{"name":"klient_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Klient Id"}},{"name":"zewnetrzny_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zewnetrzny Id"}},{"name":"numer_zamowienia","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numer Zamowienia"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Rozmiar strony (1–100)","default":50,"title":"Limit"},"description":"Rozmiar strony (1–100)"},{"name":"kursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`nastepny_kursor` z poprzedniej odpowiedzi","title":"Kursor"},"description":"`nastepny_kursor` z poprzedniej odpowiedzi"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Strona_FakturaApiResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/faktury?limit=50\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury?limit=50\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury?limit=50');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury?limit=50\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury?limit=50\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"post":{"tags":["Faktury"],"summary":"Wystaw fakturę (do KSeF) albo utwórz szkic","description":"Synchronicznie: walidacja, numer, zapis. Asynchronicznie: KSeF — śledź `ksef.status`\n(`oczekuje` → `przyjeta` / `odrzucona`) przez GET /faktury/{id} albo webhook.\n\nNagłówek `Idempotency-Key` chroni przed zdublowaniem przy retry: ta sama treść → odtworzona\nodpowiedź z `Idempotent-Replayed: true`; inna treść → 422.","operationId":"utworz_fakture_faktury_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FakturaApiCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FakturaApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/faktury\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Idempotency-Key: zamowienie-10245\" \\\n  -d '{\"zewnetrzny_id\": \"10245\", \"numer_zamowienia\": \"ZAM/2026/10245\", \"nabywca\": {\"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\", \"nip\": \"5261040828\", \"ulica\": \"Polna\", \"numer_domu\": \"1\", \"kod_pocztowy\": \"00-001\", \"miasto\": \"Warszawa\"}, \"pozycje\": [{\"nazwa\": \"Doniczka ceramiczna 20 cm\", \"ilosc\": 2, \"cena_jednostkowa_brutto\": \"30.00\", \"stawka_vat\": \"23\"}]}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury\",\n    headers={\"Authorization\": \"Bearer mk_live_…\", \"Idempotency-Key\": \"zamowienie-10245\"},\n    json={\n      \"zewnetrzny_id\": \"10245\",\n      \"numer_zamowienia\": \"ZAM/2026/10245\",\n      \"nabywca\": {\n        \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n        \"nip\": \"5261040828\",\n        \"ulica\": \"Polna\",\n        \"numer_domu\": \"1\",\n        \"kod_pocztowy\": \"00-001\",\n        \"miasto\": \"Warszawa\"\n      },\n      \"pozycje\": [\n        {\n          \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n          \"ilosc\": 2,\n          \"cena_jednostkowa_brutto\": \"30.00\",\n          \"stawka_vat\": \"23\"\n        }\n      ]\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n        'Idempotency-Key: zamowienie-10245',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'zewnetrzny_id' => '10245',\n        'numer_zamowienia' => 'ZAM/2026/10245',\n        'nabywca' => [\n            'nazwa' => 'Hurtownia Kwiatów sp. z o.o.',\n            'nip' => '5261040828',\n            'ulica' => 'Polna',\n            'numer_domu' => '1',\n            'kod_pocztowy' => '00-001',\n            'miasto' => 'Warszawa'\n        ],\n        'pozycje' => [[\n                'nazwa' => 'Doniczka ceramiczna 20 cm',\n                'ilosc' => 2,\n                'cena_jednostkowa_brutto' => '30.00',\n                'stawka_vat' => '23'\n            ]]\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"zewnetrzny_id\": \"10245\",\n      \"numer_zamowienia\": \"ZAM/2026/10245\",\n      \"nabywca\": {\n        \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n        \"nip\": \"5261040828\",\n        \"ulica\": \"Polna\",\n        \"numer_domu\": \"1\",\n        \"kod_pocztowy\": \"00-001\",\n        \"miasto\": \"Warszawa\"\n      },\n      \"pozycje\": [\n        {\n          \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n          \"ilosc\": 2,\n          \"cena_jednostkowa_brutto\": \"30.00\",\n          \"stawka_vat\": \"23\"\n        }\n      ]\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"zamowienie-10245\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n    \"Idempotency-Key\": \"zamowienie-10245\",\n  },\n  body: JSON.stringify({\n    \"zewnetrzny_id\": \"10245\",\n    \"numer_zamowienia\": \"ZAM/2026/10245\",\n    \"nabywca\": {\n      \"nazwa\": \"Hurtownia Kwiatów sp. z o.o.\",\n      \"nip\": \"5261040828\",\n      \"ulica\": \"Polna\",\n      \"numer_domu\": \"1\",\n      \"kod_pocztowy\": \"00-001\",\n      \"miasto\": \"Warszawa\"\n    },\n    \"pozycje\": [\n      {\n        \"nazwa\": \"Doniczka ceramiczna 20 cm\",\n        \"ilosc\": 2,\n        \"cena_jednostkowa_brutto\": \"30.00\",\n        \"stawka_vat\": \"23\"\n      }\n    ]\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury/{faktura_id}":{"get":{"tags":["Faktury"],"summary":"Pobierz fakturę (z blokiem ksef)","operationId":"pobierz_fakture_faktury__faktura_id__get","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FakturaApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"delete":{"tags":["Faktury"],"summary":"Usuń szkic","description":"Tylko szkic. Wystawionej faktury nie usuwa się — wystaw korektę (`POST /faktury/{id}/korekty`).","operationId":"usun_szkic_faktury__faktura_id__delete","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X DELETE \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.delete(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury/{faktura_id}/wystaw":{"post":{"tags":["Faktury"],"summary":"Wystaw szkic (faktura → KSeF)","description":"Szkic faktury → numer + wysyłka do KSeF; szkic proformy → wystawiona. Ponowne wystawienie po\nodrzuceniu (`ksef.status = odrzucona`, dokument wrócił do szkicu) jest dozwolone po poprawieniu\ndanych w aplikacji — numer z pierwszego wystawienia zostaje. Faktura już wystawiona (oczekuje na KSeF albo\nma numer) → 409 `JUZ_WYSTAWIONA`; błędy tymczasowe KSeF ponawiamy sami — śledź `ksef.status`.","operationId":"wystaw_fakture_faktury__faktura_id__wystaw_post","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FakturaApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wystaw\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wystaw\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wystaw');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wystaw\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wystaw\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury/{faktura_id}/korekty":{"post":{"tags":["Faktury"],"summary":"Wystaw korektę (zwrot, reklamacja, rabat) — do KSeF","description":"Korekta „nowe okoliczności” faktury przyjętej w KSeF: zwroty ilościowe per `lp` albo `pelna` (do zera).\nPozycje odpowiedzi to różnice (zwrot = ujemna ilość i wartości). Kolejne korekty liczą się od stanu po\npoprzedniej. Wysyłka do KSeF jak przy fakturze — śledź `ksef.status` albo webhook. Honoruje `Idempotency-Key`.","operationId":"wystaw_korekte_faktury__faktura_id__korekty_post","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KorektaApiCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FakturaApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/korekty\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Idempotency-Key: zamowienie-10245\" \\\n  -d '{\"zewnetrzny_id\": \"RMA-311\", \"przyczyna\": \"Zwrot towaru przez klienta\", \"powod\": \"zwrot_towaru\", \"pozycje\": [{\"lp\": 1, \"ilosc_zwrocona\": 1}]}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/korekty\",\n    headers={\"Authorization\": \"Bearer mk_live_…\", \"Idempotency-Key\": \"zamowienie-10245\"},\n    json={\n      \"zewnetrzny_id\": \"RMA-311\",\n      \"przyczyna\": \"Zwrot towaru przez klienta\",\n      \"powod\": \"zwrot_towaru\",\n      \"pozycje\": [\n        {\n          \"lp\": 1,\n          \"ilosc_zwrocona\": 1\n        }\n      ]\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/korekty');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n        'Idempotency-Key: zamowienie-10245',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'zewnetrzny_id' => 'RMA-311',\n        'przyczyna' => 'Zwrot towaru przez klienta',\n        'powod' => 'zwrot_towaru',\n        'pozycje' => [[\n                'lp' => 1,\n                'ilosc_zwrocona' => 1\n            ]]\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"zewnetrzny_id\": \"RMA-311\",\n      \"przyczyna\": \"Zwrot towaru przez klienta\",\n      \"powod\": \"zwrot_towaru\",\n      \"pozycje\": [\n        {\n          \"lp\": 1,\n          \"ilosc_zwrocona\": 1\n        }\n      ]\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/korekty\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"zamowienie-10245\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/korekty\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n    \"Idempotency-Key\": \"zamowienie-10245\",\n  },\n  body: JSON.stringify({\n    \"zewnetrzny_id\": \"RMA-311\",\n    \"przyczyna\": \"Zwrot towaru przez klienta\",\n    \"powod\": \"zwrot_towaru\",\n    \"pozycje\": [\n      {\n        \"lp\": 1,\n        \"ilosc_zwrocona\": 1\n      }\n    ]\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury/{faktura_id}/platnosci":{"post":{"tags":["Faktury"],"summary":"Zarejestruj płatność","description":"Częściowa → `czesciowo_oplacone`, pełna → `oplacone`. Honoruje `Idempotency-Key`.","operationId":"zarejestruj_platnosc_faktury__faktura_id__platnosci_post","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatnoscApiCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FakturaApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/platnosci\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Idempotency-Key: zamowienie-10245\" \\\n  -d '{\"kwota\": \"60.00\", \"data_zaplaty\": \"2026-09-24\"}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/platnosci\",\n    headers={\"Authorization\": \"Bearer mk_live_…\", \"Idempotency-Key\": \"zamowienie-10245\"},\n    json={\n      \"kwota\": \"60.00\",\n      \"data_zaplaty\": \"2026-09-24\"\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/platnosci');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n        'Idempotency-Key: zamowienie-10245',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'kwota' => '60.00',\n        'data_zaplaty' => '2026-09-24'\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"kwota\": \"60.00\",\n      \"data_zaplaty\": \"2026-09-24\"\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/platnosci\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"zamowienie-10245\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/platnosci\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n    \"Idempotency-Key\": \"zamowienie-10245\",\n  },\n  body: JSON.stringify({\n    \"kwota\": \"60.00\",\n    \"data_zaplaty\": \"2026-09-24\"\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury/{faktura_id}/wyslij-email":{"post":{"tags":["Faktury"],"summary":"Wyślij PDF e-mailem","description":"PDF z numerem KSeF i kodem QR (po przyjęciu) do nabywcy. Bez e-maila w kartotece podaj `email`.","operationId":"wyslij_fakture_emailem_faktury__faktura_id__wyslij_email_post","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WyslijEmailApiRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WyslanoEmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wyslij-email\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\": \"fv@hurtownia.example.com\", \"jezyk\": \"pl\"}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wyslij-email\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"email\": \"fv@hurtownia.example.com\",\n      \"jezyk\": \"pl\"\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wyslij-email');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'email' => 'fv@hurtownia.example.com',\n        'jezyk' => 'pl'\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"email\": \"fv@hurtownia.example.com\",\n      \"jezyk\": \"pl\"\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wyslij-email\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/wyslij-email\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"email\": \"fv@hurtownia.example.com\",\n    \"jezyk\": \"pl\"\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury/{faktura_id}/pdf":{"get":{"tags":["Faktury"],"summary":"PDF faktury","description":"Faktura: po nadaniu numeru KSeF (z kodem QR do weryfikacji); proforma: zawsze, także szkic.","operationId":"pobierz_pdf_faktury__faktura_id__pdf_get","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"jezyk","in":"query","required":false,"schema":{"type":"string","pattern":"^(pl|en)$","description":"Język dokumentu","default":"pl","title":"Jezyk"},"description":"Język dokumentu"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}},"application/pdf":{}}},"409":{"description":"Faktura jeszcze niewystawiona"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/pdf\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/pdf\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/pdf');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/pdf\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/pdf\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury/{faktura_id}/xml":{"get":{"tags":["Faktury"],"summary":"XML FA(3) wysłany do KSeF","operationId":"pobierz_xml_faktury__faktura_id__xml_get","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}},"application/xml":{}}},"409":{"description":"Brak XML"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/xml\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/xml\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/xml');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/xml\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/xml\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/faktury/{faktura_id}/upo":{"get":{"tags":["Faktury"],"summary":"UPO z KSeF","operationId":"pobierz_upo_faktury__faktura_id__upo_get","parameters":[{"name":"faktura_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Faktura Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}},"application/xml":{}}},"409":{"description":"Brak UPO"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/upo\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/upo\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/upo');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/upo\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/faktury/6f1d2c3e-9a4b-4c8d-b2e1-0f5a6b7c8d9e/upo\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/webhooki":{"get":{"tags":["Webhooki"],"summary":"Lista webhooków","description":"Wszystkie webhooki organizacji (najwyżej 10) — bez sekretów.","operationId":"lista_webhookow_webhooki_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookApiResponse"},"title":"Response Lista Webhookow Webhooki Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/webhooki\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"post":{"tags":["Webhooki"],"summary":"Zarejestruj webhook","description":"Nowy webhook. Odpowiedź zawiera `sekret` — jedyny raz, kiedy jest widoczny.","operationId":"utworz_webhook_webhooki_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookApiCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookApiUtworzonyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/webhooki\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"url\": \"https://sklep.example.com/hooks/mojaksiegowa\", \"zdarzenia\": [\"faktura.wystawiona\", \"faktura.ksef.przyjeta\", \"faktura.oplacona\"], \"opis\": \"Sklep — produkcja\"}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"url\": \"https://sklep.example.com/hooks/mojaksiegowa\",\n      \"zdarzenia\": [\n        \"faktura.wystawiona\",\n        \"faktura.ksef.przyjeta\",\n        \"faktura.oplacona\"\n      ],\n      \"opis\": \"Sklep — produkcja\"\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'url' => 'https://sklep.example.com/hooks/mojaksiegowa',\n        'zdarzenia' => ['faktura.wystawiona', 'faktura.ksef.przyjeta', 'faktura.oplacona'],\n        'opis' => 'Sklep — produkcja'\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"url\": \"https://sklep.example.com/hooks/mojaksiegowa\",\n      \"zdarzenia\": [\n        \"faktura.wystawiona\",\n        \"faktura.ksef.przyjeta\",\n        \"faktura.oplacona\"\n      ],\n      \"opis\": \"Sklep — produkcja\"\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"url\": \"https://sklep.example.com/hooks/mojaksiegowa\",\n    \"zdarzenia\": [\n      \"faktura.wystawiona\",\n      \"faktura.ksef.przyjeta\",\n      \"faktura.oplacona\"\n    ],\n    \"opis\": \"Sklep — produkcja\"\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/webhooki/{webhook_id}":{"get":{"tags":["Webhooki"],"summary":"Pobierz webhook","operationId":"pobierz_webhook_webhooki__webhook_id__get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"patch":{"tags":["Webhooki"],"summary":"Zmień webhook (także włącz ponownie)","description":"Częściowa aktualizacja; `aktywny: true` po auto-wyłączeniu włącza ponownie i zeruje licznik błędów.","operationId":"aktualizuj_webhook_webhooki__webhook_id__patch","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookApiUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X PATCH \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\" \\\n  -H \"Authorization: Bearer mk_live_…\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"aktywny\": true}'"},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.patch(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    json={\n      \"aktywny\": true\n    },\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode([\n        'aktywny' => true\n    ], JSON_UNESCAPED_UNICODE),\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString cialo = \"\"\"\n    {\n      \"aktywny\": true\n    }\n    \"\"\";\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(cialo))\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"aktywny\": true\n  }),\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]},"delete":{"tags":["Webhooki"],"summary":"Usuń webhook","description":"Usuwa webhook razem z logiem doręczeń.","operationId":"usun_webhook_webhooki__webhook_id__delete","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X DELETE \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.delete(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/webhooki/{webhook_id}/sekret":{"post":{"tags":["Webhooki"],"summary":"Rotuj sekret","description":"Nowy sekret — obowiązuje natychmiast, zaktualizuj weryfikację po swojej stronie przed wywołaniem.","operationId":"rotuj_sekret_webhooka_webhooki__webhook_id__sekret_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookApiUtworzonyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/sekret\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/sekret\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/sekret');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/sekret\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/sekret\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/webhooki/{webhook_id}/test":{"post":{"tags":["Webhooki"],"summary":"Wyślij ping testowy","description":"Wysyła zdarzenie `ping` i czeka na odpowiedź serwera (do 10 s); działa też dla webhooka nieaktywnego.","operationId":"testuj_webhook_webhooki__webhook_id__test_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DostarczenieApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/test\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/test\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/test');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/test\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/test\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/webhooki/{webhook_id}/dostarczenia":{"get":{"tags":["Webhooki"],"summary":"Log doręczeń","description":"Log doręczeń z ostatnich 14 dni, od najstarszego; kursor jak w innych listach.","operationId":"lista_dostarczen_webhooki__webhook_id__dostarczenia_get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/StatusDostarczeniaWebhooka"},{"type":"null"}],"description":"oczekuje | dostarczono | nieudane","title":"Status"},"description":"oczekuje | dostarczono | nieudane"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Rozmiar strony (1–100)","default":50,"title":"Limit"},"description":"Rozmiar strony (1–100)"},{"name":"kursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`nastepny_kursor` z poprzedniej odpowiedzi","title":"Kursor"},"description":"`nastepny_kursor` z poprzedniej odpowiedzi"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Strona_DostarczenieApiResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X GET \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia?limit=50\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.get(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia?limit=50\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia?limit=50');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia?limit=50\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia?limit=50\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}},"/webhooki/{webhook_id}/dostarczenia/{dostarczenie_id}/ponow":{"post":{"tags":["Webhooki"],"summary":"Ponów doręczenie","description":"Ręczne ponowienie doręczenia (np. po naprawie serwera) — nowy cykl prób, ten sam payload.","operationId":"ponow_dostarczenie_webhooki__webhook_id__dostarczenia__dostarczenie_id__ponow_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"dostarczenie_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dostarczenie Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DostarczenieApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"cURL","label":"curl","source":"curl -X POST \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia/7d6c5b4a-3f2e-4d1c-b0a9-f8e7d6c5b4a3/ponow\" \\\n  -H \"Authorization: Bearer mk_live_…\""},{"lang":"Python","label":"Python (requests)","source":"import requests\n\nodpowiedz = requests.post(\n    \"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia/7d6c5b4a-3f2e-4d1c-b0a9-f8e7d6c5b4a3/ponow\",\n    headers={\"Authorization\": \"Bearer mk_live_…\"},\n    timeout=30,\n)\nodpowiedz.raise_for_status()\nprint(odpowiedz.json())"},{"lang":"PHP","label":"PHP (curl)","source":"<?php\n$ch = curl_init('https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia/7d6c5b4a-3f2e-4d1c-b0a9-f8e7d6c5b4a3/ponow');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer mk_live_…',\n    ],\n]);\n$odpowiedz = json_decode(curl_exec($ch), true);\n$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\ncurl_close($ch);"},{"lang":"Java","label":"Java 15+ (HttpClient)","source":"import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest zadanie = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia/7d6c5b4a-3f2e-4d1c-b0a9-f8e7d6c5b4a3/ponow\"))\n    .header(\"Authorization\", \"Bearer mk_live_…\")\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> odpowiedz = HttpClient.newHttpClient()\n    .send(zadanie, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(odpowiedz.statusCode() + \" \" + odpowiedz.body());"},{"lang":"JavaScript","label":"JavaScript (fetch)","source":"const odpowiedz = await fetch(\"https://api.mojaksiegowa.ai/api/public/v1/webhooki/3c2b1a0f-9e8d-4c7b-a6f5-e4d3c2b1a0f9/dostarczenia/7d6c5b4a-3f2e-4d1c-b0a9-f8e7d6c5b4a3/ponow\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer mk_live_…\",\n  },\n});\nif (!odpowiedz.ok) {\n  throw new Error(`HTTP ${odpowiedz.status}: ${await odpowiedz.text()}`);\n}\nconst dane = odpowiedz.status === 204 ? null : await odpowiedz.json();"}]}}},"components":{"schemas":{"DaneFakturyZdarzenia":{"properties":{"faktura_id":{"type":"string","format":"uuid","title":"Faktura Id"},"zewnetrzny_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zewnetrzny Id"},"numer":{"type":"string","title":"Numer"},"rodzaj":{"$ref":"#/components/schemas/RodzajFaktury"},"status":{"$ref":"#/components/schemas/StatusFaktury"},"status_platnosci":{"$ref":"#/components/schemas/StatusPlatnosci"},"waluta":{"type":"string","title":"Waluta"},"kwota_brutto":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Kwota Brutto"},"kwota_zaplacona":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Kwota Zaplacona"},"pozostalo_do_zaplaty":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Pozostalo Do Zaplaty"},"numer_zamowienia":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numer Zamowienia"},"ksef":{"anyOf":[{"$ref":"#/components/schemas/KsefBlok"},{"type":"null"}],"description":"null dla proformy"}},"type":"object","required":["faktura_id","zewnetrzny_id","numer","rodzaj","status","status_platnosci","waluta","kwota_brutto","kwota_zaplacona","pozostalo_do_zaplaty","numer_zamowienia"],"title":"DaneFakturyZdarzenia","description":"`dane` zdarzeń `faktura.*` — podzbiór `FakturaApiResponse` bez nabywcy i pozycji (bez danych osobowych\nw webhooku); szczegóły pobierz przez `GET /faktury/{id}`."},"DanePingu":{"properties":{"webhook_id":{"type":"string","format":"uuid","title":"Webhook Id"}},"type":"object","required":["webhook_id"],"title":"DanePingu"},"DostarczenieApiResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"zdarzenie_id":{"type":"string","format":"uuid","title":"Zdarzenie Id"},"zdarzenie":{"type":"string","title":"Zdarzenie"},"zasob_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Zasob Id","description":"Id faktury (null dla `ping`)"},"status":{"$ref":"#/components/schemas/StatusDostarczeniaWebhooka"},"proba":{"type":"integer","title":"Proba"},"status_http":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Http"},"blad":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blad"},"nastepna_proba":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Nastepna Proba"},"dostarczono":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Dostarczono"},"utworzono":{"type":"string","format":"date-time","title":"Utworzono"},"payload":{"$ref":"#/components/schemas/PayloadWebhooka","description":"Dokładnie to, co wysłaliśmy"}},"type":"object","required":["id","zdarzenie_id","zdarzenie","status","proba","status_http","blad","nastepna_proba","dostarczono","utworzono","payload"],"title":"DostarczenieApiResponse"},"FakturaApiCreate":{"properties":{"zewnetrzny_id":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Zewnetrzny Id","description":"Id faktury (np. zamówienia) w Twoim systemie — unikalny w organizacji; duplikat → 409"},"numer_zamowienia":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Numer Zamowienia","description":"Trafia na fakturę i do filtrów listy"},"rodzaj":{"$ref":"#/components/schemas/RodzajFakturyApi","default":"faktura"},"data_wystawienia":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Wystawienia","description":"Domyślnie dziś (Europe/Warsaw); data wsteczna → 422"},"data_sprzedazy":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Sprzedazy","description":"Domyślnie = data wystawienia"},"termin_platnosci":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Termin Platnosci","description":"Domyślnie data wystawienia + termin klienta (14 dni)"},"metoda_platnosci":{"$ref":"#/components/schemas/MetodaPlatnosci","default":"przelew"},"waluta":{"type":"string","pattern":"^[A-Za-z]{3}$","title":"Waluta","description":"ISO 4217 (np. PLN, EUR); obca → kurs NBP z dnia D-1; waluta bez kursu NBP → 422","default":"PLN"},"konto_bankowe_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Konto Bankowe Id","description":"Domyślnie konto oznaczone jako domyślne w aplikacji"},"nabywca":{"anyOf":[{"$ref":"#/components/schemas/NabywcaRef"},{"$ref":"#/components/schemas/NabywcaInline"}],"title":"Nabywca","description":"`{klient_id}` | `{zewnetrzny_id}` (klient z kartoteki) albo dane nabywcy wprost (`nazwa`, `nip`…)"},"odbiorcy":{"anyOf":[{"items":{"$ref":"#/components/schemas/OdbiorcaApi"},"type":"array","maxItems":10},{"type":"null"}],"title":"Odbiorcy","description":"Odbiorcy inni niż nabywca (np. szkoła przy gminie jako nabywcy). Pominięte = bez odbiorców"},"pozycje":{"items":{"$ref":"#/components/schemas/PozycjaApiCreate"},"type":"array","maxItems":500,"minItems":1,"title":"Pozycje"},"uwagi":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Uwagi"},"liczona_od_brutto":{"type":"boolean","title":"Liczona Od Brutto","description":"true = pozycje z `cena_jednostkowa_brutto` liczone od brutto (art. 106e ust. 7–8): wartość brutto pozycji dokładnie z ceny brutto, VAT zawarty w brutto, netto jako różnica — suma faktury zgadza się z kwotą zamówienia co do grosza; w KSeF cena i wartość brutto (P_9B, P_11A). Korekta takiej pozycji przyjmuje tylko `cena_jednostkowa_brutto_po`. false (domyślnie) — cena brutto przeliczana na netto z 4 miejscami","default":false},"wystaw":{"type":"boolean","title":"Wystaw","description":"False = zostaje szkic; wystaw później przez POST /faktury/{id}/wystaw","default":true},"ksef":{"$ref":"#/components/schemas/TrybKsef","description":"auto / wyslij = do KSeF; pomin — niedostępne (422)","default":"auto"},"podstawa_zwolnienia_vat":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Podstawa Zwolnienia Vat","description":"Podstawa prawna zwolnienia z VAT — wymagana, gdy któraś pozycja ma stawkę `zw` (trafia na fakturę i do KSeF), np. „art. 43 ust. 1 pkt 19 ustawy o VAT”. Pominięta u sprzedawcy zwolnionego ze względu na limit sprzedaży — wpisujemy „art. 113 ust. 1 ustawy o VAT” (w roku rozpoczęcia działalności — ust. 9); w pozostałych przypadkach brak przy pozycji `zw` → 422 `BRAK_PODSTAWY_ZWOLNIENIA`"}},"additionalProperties":false,"type":"object","required":["nabywca","pozycje"],"title":"FakturaApiCreate"},"FakturaApiResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"zewnetrzny_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zewnetrzny Id"},"numer":{"type":"string","title":"Numer"},"rodzaj":{"$ref":"#/components/schemas/RodzajFaktury"},"status":{"$ref":"#/components/schemas/StatusFaktury","description":"Cykl życia dokumentu (szkic → wystawiona → wyslana → zaksiegowana …)"},"status_platnosci":{"$ref":"#/components/schemas/StatusPlatnosci"},"data_wystawienia":{"type":"string","format":"date","title":"Data Wystawienia"},"data_sprzedazy":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Sprzedazy"},"termin_platnosci":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Termin Platnosci"},"metoda_platnosci":{"anyOf":[{"$ref":"#/components/schemas/MetodaPlatnosci"},{"type":"null"}]},"waluta":{"type":"string","title":"Waluta"},"nabywca":{"$ref":"#/components/schemas/NabywcaApiResponse"},"odbiorcy":{"items":{"$ref":"#/components/schemas/OdbiorcaApiResponse"},"type":"array","title":"Odbiorcy","description":"Odbiorcy inni niż nabywca. Korekta bez podanych odbiorców przejmuje ich z faktury korygowanej"},"kwota_netto":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Kwota Netto"},"kwota_vat":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Kwota Vat"},"kwota_brutto":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Kwota Brutto"},"kwota_zaplacona":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Kwota Zaplacona"},"pozostalo_do_zaplaty":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Pozostalo Do Zaplaty"},"numer_zamowienia":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numer Zamowienia"},"uwagi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uwagi"},"mechanizm_podzielonej_platnosci":{"type":"boolean","title":"Mechanizm Podzielonej Platnosci","description":"Faktura z oznaczeniem „mechanizm podzielonej płatności” — nabywca płaci VAT na rachunek VAT. Ustawiane, gdy faktura dla firmy przekracza 15 000 zł i obejmuje pozycję z `zalacznik_15`","default":false},"pozycje":{"items":{"$ref":"#/components/schemas/PozycjaApiResponse"},"type":"array","title":"Pozycje","description":"Dla korekty: różnice względem stanu przed korektą (zwrot = ujemna ilość i wartości)"},"faktura_korygowana_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Faktura Korygowana Id","description":"Dla korekty: faktura pierwotna"},"numer_faktury_korygowanej":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numer Faktury Korygowanej"},"przyczyna_korekty":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Przyczyna Korekty"},"podstawa_zwolnienia_vat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Podstawa Zwolnienia Vat","description":"Podstawa prawna zwolnienia z VAT (pozycje `zw`)"},"ksef":{"anyOf":[{"$ref":"#/components/schemas/KsefBlok"},{"type":"null"}],"description":"null dla proformy"},"utworzono":{"type":"string","format":"date-time","title":"Utworzono"},"zaktualizowano":{"type":"string","format":"date-time","title":"Zaktualizowano"}},"type":"object","required":["id","zewnetrzny_id","numer","rodzaj","status","status_platnosci","data_wystawienia","data_sprzedazy","termin_platnosci","metoda_platnosci","waluta","nabywca","kwota_netto","kwota_vat","kwota_brutto","kwota_zaplacona","pozostalo_do_zaplaty","numer_zamowienia","uwagi","pozycje","utworzono","zaktualizowano"],"title":"FakturaApiResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JaKlucz":{"properties":{"nazwa":{"type":"string","title":"Nazwa"},"prefiks":{"type":"string","title":"Prefiks","description":"Publiczna część sekretu, np. mk_live_a1b2c3d4"},"wygasa":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Wygasa"}},"type":"object","required":["nazwa","prefiks"],"title":"JaKlucz"},"JaLimity":{"properties":{"odczyt_na_minute":{"type":"integer","title":"Odczyt Na Minute","description":"Limit zapytań GET na 60 s dla tego klucza"},"zapis_na_minute":{"type":"integer","title":"Zapis Na Minute","description":"Limit zapytań POST/PUT/PATCH/DELETE na 60 s dla tego klucza"},"faktury_api_w_miesiacu":{"type":"integer","title":"Faktury Api W Miesiacu","description":"Faktury wystawione przez API w bieżącym miesiącu"},"max_faktur_api_miesiac":{"type":"integer","title":"Max Faktur Api Miesiac","description":"Limit planu na miesiąc; -1 = bez limitu"}},"type":"object","required":["odczyt_na_minute","zapis_na_minute","faktury_api_w_miesiacu","max_faktur_api_miesiac"],"title":"JaLimity"},"JaOrganizacja":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"nazwa":{"type":"string","title":"Nazwa"},"nip":{"type":"string","title":"Nip"}},"type":"object","required":["id","nazwa","nip"],"title":"JaOrganizacja"},"JaResponse":{"properties":{"organizacja":{"$ref":"#/components/schemas/JaOrganizacja"},"srodowisko":{"$ref":"#/components/schemas/SrodowiskoKluczaApi"},"zakresy":{"items":{"$ref":"#/components/schemas/ZakresKluczaApi"},"type":"array","title":"Zakresy"},"klucz":{"$ref":"#/components/schemas/JaKlucz"},"ksef_polaczony":{"type":"boolean","title":"Ksef Polaczony","description":"Czy organizacja ma aktywne połączenie z KSeF. Bez niego wystawianie faktur zakończy się błędem KSEF_NIESKONFIGUROWANY — właściciel musi podłączyć KSeF w aplikacji."},"limity":{"$ref":"#/components/schemas/JaLimity"}},"type":"object","required":["organizacja","srodowisko","zakresy","klucz","ksef_polaczony","limity"],"title":"JaResponse","description":"Kto pyta i co może — pierwsze wywołanie każdej integracji."},"JednostkaMiary":{"type":"string","enum":["szt.","kpl.","opak.","para","l","ml","m³","kg","g","t","m","cm","km","m²","godz.","dzień","mies.","rok","usł.","rbg"],"title":"JednostkaMiary","description":"Jednostka miary pozycji albo produktu."},"Jezyk":{"type":"string","enum":["pl","en"],"title":"Jezyk","description":"Język dokumentu."},"KlientApiCreate":{"properties":{"kraj":{"type":"string","maxLength":2,"minLength":2,"title":"Kraj","description":"Kod kraju ISO 3166-1 alpha-2, np. PL, DE","default":"PL"},"ulica":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Ulica"},"numer_domu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Domu"},"numer_lokalu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Lokalu"},"kod_pocztowy":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Kod Pocztowy"},"miasto":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Miasto"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"telefon":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Telefon"},"domyslny_termin_platnosci_dni":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":0.0},{"type":"null"}],"title":"Domyslny Termin Platnosci Dni","default":14},"nazwa":{"type":"string","maxLength":255,"minLength":1,"title":"Nazwa","description":"Nazwa firmy albo imię i nazwisko konsumenta"},"nazwa_pelna":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Nazwa Pelna"},"rodzaj":{"anyOf":[{"$ref":"#/components/schemas/RodzajKlienta"},{"type":"null"}],"description":"firma | konsument. Pominięte: firma, gdy podano nip lub numer_vat_ue; inaczej konsument."},"nip":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Nip","description":"Polski NIP (10 cyfr, sprawdzana suma kontrolna; prefiks PL i separatory są ignorowane). Tylko dla kraju PL."},"numer_vat_ue":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Vat Ue","description":"Zagraniczny numer podatkowy: VAT-UE (z prefiksem lub bez) albo Tax ID spoza UE. Tylko dla kraju ≠ PL."},"zewnetrzny_id":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Zewnetrzny Id","description":"Id klienta w Twoim systemie — unikalny w organizacji"}},"additionalProperties":false,"type":"object","required":["nazwa"],"title":"KlientApiCreate"},"KlientApiResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"zewnetrzny_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zewnetrzny Id"},"nazwa":{"type":"string","title":"Nazwa"},"nazwa_pelna":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nazwa Pelna"},"rodzaj":{"$ref":"#/components/schemas/RodzajKlienta"},"nip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nip"},"numer_vat_ue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numer Vat Ue","description":"Bez prefiksu kraju (kraj w polu `kraj`)"},"kraj":{"type":"string","title":"Kraj"},"ulica":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ulica"},"numer_domu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numer Domu"},"numer_lokalu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numer Lokalu"},"kod_pocztowy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kod Pocztowy"},"miasto":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Miasto"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"telefon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telefon"},"domyslny_termin_platnosci_dni":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domyslny Termin Platnosci Dni"},"jest_aktywny":{"type":"boolean","title":"Jest Aktywny"},"utworzono":{"type":"string","format":"date-time","title":"Utworzono"},"zaktualizowano":{"type":"string","format":"date-time","title":"Zaktualizowano"}},"type":"object","required":["id","zewnetrzny_id","nazwa","nazwa_pelna","rodzaj","nip","kraj","ulica","numer_domu","numer_lokalu","kod_pocztowy","miasto","email","telefon","domyslny_termin_platnosci_dni","jest_aktywny","utworzono","zaktualizowano"],"title":"KlientApiResponse"},"KlientApiUpdate":{"properties":{"zewnetrzny_id":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Zewnetrzny Id"},"nazwa":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Nazwa"},"nazwa_pelna":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Nazwa Pelna"},"rodzaj":{"anyOf":[{"$ref":"#/components/schemas/RodzajKlienta"},{"type":"null"}]},"nip":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Nip"},"numer_vat_ue":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Vat Ue"},"kraj":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Kraj"},"ulica":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Ulica"},"numer_domu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Domu"},"numer_lokalu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Lokalu"},"kod_pocztowy":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Kod Pocztowy"},"miasto":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Miasto"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"telefon":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Telefon"},"domyslny_termin_platnosci_dni":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":0.0},{"type":"null"}],"title":"Domyslny Termin Platnosci Dni"},"jest_aktywny":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Jest Aktywny"}},"additionalProperties":false,"type":"object","title":"KlientApiUpdate","description":"PATCH — zmieniane są tylko przesłane pola; `null` w polu wymaganym → 422."},"KlientApiUpsert":{"properties":{"kraj":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Kraj","description":"Kod kraju ISO 3166-1 alpha-2; pominięty = PL przy utworzeniu, bez zmiany przy aktualizacji"},"ulica":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Ulica"},"numer_domu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Domu"},"numer_lokalu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Lokalu"},"kod_pocztowy":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Kod Pocztowy"},"miasto":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Miasto"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"telefon":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Telefon"},"domyslny_termin_platnosci_dni":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":0.0},{"type":"null"}],"title":"Domyslny Termin Platnosci Dni","default":14},"nazwa":{"type":"string","maxLength":255,"minLength":1,"title":"Nazwa","description":"Nazwa firmy albo imię i nazwisko konsumenta"},"nazwa_pelna":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Nazwa Pelna"},"rodzaj":{"anyOf":[{"$ref":"#/components/schemas/RodzajKlienta"},{"type":"null"}],"description":"firma | konsument. Pominięte: firma, gdy podano nip lub numer_vat_ue; inaczej konsument."},"nip":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Nip","description":"Polski NIP (10 cyfr, sprawdzana suma kontrolna; prefiks PL i separatory są ignorowane). Tylko dla kraju PL."},"numer_vat_ue":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Vat Ue","description":"Zagraniczny numer podatkowy: VAT-UE (z prefiksem lub bez) albo Tax ID spoza UE. Tylko dla kraju ≠ PL."}},"additionalProperties":false,"type":"object","required":["nazwa"],"title":"KlientApiUpsert","description":"Ciało `PUT /klienci/zewnetrzne/{zewnetrzny_id}` — id przychodzi w ścieżce. Przy aktualizacji zmieniają\nsię tylko przesłane pola."},"KodGTU":{"type":"string","enum":["GTU_01","GTU_02","GTU_03","GTU_04","GTU_05","GTU_06","GTU_07","GTU_08","GTU_09","GTU_10","GTU_11","GTU_12","GTU_13"],"title":"KodGTU","description":"Kod GTU (grupa towarów i usług) pozycji — trafia do ewidencji JPK_VAT."},"KorektaApiCreate":{"properties":{"zewnetrzny_id":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Zewnetrzny Id","description":"Id zwrotu (np. RMA) w Twoim systemie — unikalny w organizacji razem z fakturami; duplikat → 409"},"przyczyna":{"type":"string","maxLength":256,"minLength":1,"title":"Przyczyna","description":"Przyczyna korekty — trafia na dokument i do KSeF"},"powod":{"$ref":"#/components/schemas/PowodKorektyApi","default":"zwrot_towaru"},"pelna":{"type":"boolean","title":"Pelna","description":"Korekta do zera — wszystkie pozycje zwrócone w całości","default":false},"pozycje":{"items":{"$ref":"#/components/schemas/PozycjaKorektyApi"},"type":"array","maxItems":500,"title":"Pozycje","description":"Zmiany per pozycja (pomiń przy `pelna: true`)"},"data_wystawienia":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Wystawienia","description":"Domyślnie dziś (Europe/Warsaw); data wsteczna → 422"},"podstawa_zwolnienia_vat":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Podstawa Zwolnienia Vat","description":"Podstawa prawna zwolnienia z VAT dla pozycji `zw` — domyślnie ta z faktury korygowanej"}},"additionalProperties":false,"type":"object","required":["przyczyna"],"title":"KorektaApiCreate","description":"Korekta faktury (zwrot, reklamacja, rabat po sprzedaży): zwrot ilości i/lub obniżka ceny per pozycja.\nPozycje niewymienione zostają bez zmian;\n`pelna: true` koryguje fakturę do zera. Kolejne korekty liczą się od stanu po poprzedniej."},"KsefBlok":{"properties":{"status":{"$ref":"#/components/schemas/StatusKsefApi"},"numer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numer","description":"Numer KSeF po przyjęciu"},"bledy":{"items":{"type":"string"},"type":"array","title":"Bledy","description":"Powody odrzucenia (błąd permanentny)"},"nastepna_proba":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Nastepna Proba","description":"Zaplanowany retry po błędzie tymczasowym"},"link_weryfikacyjny":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Weryfikacyjny","description":"Link weryfikacyjny KSeF (kod I) — po przyjęciu"}},"type":"object","required":["status"],"title":"KsefBlok"},"MetodaPlatnosci":{"type":"string","enum":["przelew","gotowka","karta","bon","czek","kredyt","platnosc_mobilna"],"title":"MetodaPlatnosci","description":"Metoda płatności na fakturze (zgodna z kodami KSeF FA(3))."},"NabywcaApiResponse":{"properties":{"klient_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Klient Id"},"nazwa":{"type":"string","title":"Nazwa"},"nip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nip"},"adres":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adres"},"kraj":{"type":"string","title":"Kraj"}},"type":"object","required":["klient_id","nazwa","nip","adres","kraj"],"title":"NabywcaApiResponse"},"NabywcaInline":{"properties":{"nazwa":{"type":"string","maxLength":255,"minLength":1,"title":"Nazwa","description":"Nazwa firmy albo imię i nazwisko konsumenta"},"rodzaj":{"anyOf":[{"$ref":"#/components/schemas/RodzajKlienta"},{"type":"null"}],"description":"firma | konsument. Pominięte: firma, gdy podano nip."},"nip":{"anyOf":[{"type":"string","maxLength":15},{"type":"null"}],"title":"Nip","description":"Polski NIP (10 cyfr, sprawdzana suma kontrolna)"},"kraj":{"type":"string","maxLength":2,"minLength":2,"title":"Kraj","description":"Na razie tylko PL","default":"PL"},"ulica":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Ulica"},"numer_domu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Domu"},"numer_lokalu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Lokalu"},"kod_pocztowy":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Kod Pocztowy"},"miasto":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Miasto"}},"additionalProperties":false,"type":"object","required":["nazwa"],"title":"NabywcaInline","description":"Nabywca podany wprost — tylko dane, które trafiają na fakturę (bez zapisu w kartotece klientów;\nna razie tylko nabywcy z Polski).\n\nBez e-maila, telefonu i terminu płatności — te pola odrzucamy (422). E-mail do wysyłki podaj\nw `POST /faktury/{id}/wyslij-email`, a stałego nabywcę załóż przez `POST /klienci` i wskaż przez `klient_id`."},"NabywcaRef":{"properties":{"klient_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Klient Id"},"zewnetrzny_id":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Zewnetrzny Id"}},"additionalProperties":false,"type":"object","title":"NabywcaRef","description":"Nabywca z kartoteki klientów — po naszym `id` albo po `zewnetrzny_id` integratora."},"OdbiorcaApi":{"properties":{"rola":{"$ref":"#/components/schemas/RolaPodmiotuTrzeciego"},"nazwa":{"type":"string","maxLength":512,"minLength":1,"title":"Nazwa"},"nip":{"anyOf":[{"type":"string","maxLength":15},{"type":"null"}],"title":"Nip","description":"Polski NIP odbiorcy (10 cyfr, sprawdzana suma kontrolna)"},"id_wew":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Id Wew","description":"Identyfikator wewnętrzny z KSeF w formacie NIP-xxxxx (NIP nabywcy i 5 cyfr nadanych jednostce) — dla jednostki bez własnego NIP. Podaj NIP albo id_wew, nie oba"},"kraj":{"type":"string","maxLength":2,"minLength":2,"title":"Kraj","description":"Na razie tylko PL","default":"PL"},"ulica":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Ulica"},"numer_domu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Domu"},"numer_lokalu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Numer Lokalu"},"kod_pocztowy":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Kod Pocztowy"},"miasto":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Miasto"}},"additionalProperties":false,"type":"object","required":["rola","nazwa"],"title":"OdbiorcaApi","description":"Odbiorca inny niż nabywca — np. szkoła, gdy nabywcą jest gmina, albo oddział firmy nabywcy. W KSeF trafia do\nsekcji Podmiot3; odbiorca z NIP albo identyfikatorem wewnętrznym widzi fakturę w KSeF.\n\nRola `jst_odbiorca` (jednostka podrzędna samorządu) i `gv_odbiorca` (członek grupy VAT) wymaga NIP albo\n`id_wew` odbiorcy oraz nabywcy z polskim NIP; faktura dostaje wtedy oznaczenie JST / grupy VAT u nabywcy."},"OdbiorcaApiResponse":{"properties":{"rola":{"$ref":"#/components/schemas/RolaPodmiotuTrzeciego"},"nazwa":{"type":"string","title":"Nazwa"},"nip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nip"},"id_wew":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Wew"},"adres":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adres"},"kraj":{"type":"string","title":"Kraj","default":"PL"}},"type":"object","required":["rola","nazwa"],"title":"OdbiorcaApiResponse","description":"Odbiorca zapisany na fakturze — adres w jednej linii."},"PayloadWebhooka":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Id zdarzenia — to samo dla wszystkich webhooków organizacji; dedup po Twojej stronie"},"zdarzenie":{"$ref":"#/components/schemas/ZdarzenieWebhooka"},"utworzono":{"type":"string","format":"date-time","title":"Utworzono"},"dane":{"anyOf":[{"$ref":"#/components/schemas/DaneFakturyZdarzenia"},{"$ref":"#/components/schemas/DanePingu"}],"title":"Dane"}},"type":"object","required":["id","zdarzenie","utworzono","dane"],"title":"PayloadWebhooka","description":"Treść żądania POST na adres webhooka.\n\nNagłówki: `Content-Type: application/json`, `X-MK-Event` (zdarzenie), `X-MK-Event-Id` (= `id`),\n`X-MK-Delivery` (id doręczenia do JEDNEGO webhooka — stałe także przy ponowieniach; deduplikuj po\n`id` zdarzenia) oraz `X-MK-Signature: t=<unix>,v1=<hex>`, gdzie `v1 = HMAC-SHA256(sekret,\n\"<t>.<ciało>\")`; po rotacji sekretu przez chwilę akceptuj podpis starym i nowym.\nOdpowiedz 2xx w ciągu 10 s (czytamy najwyżej 64 KiB odpowiedzi); inne odpowiedzi i błędy sieci\nponawiamy — łącznie 6 prób: po 1 min, 5 min, 30 min, 2 h i 12 h; 4xx (poza 408/425/429) nie ponawiamy."},"PlatnoscApiCreate":{"properties":{"data_zaplaty":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Zaplaty","description":"Domyślnie dziś"},"kwota":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,14}|(?=[\\d.]{1,17}0*$)\\d{0,14}\\.\\d{0,2}0*$)"},{"type":"null"}],"title":"Kwota","description":"Domyślnie cała kwota pozostała do zapłaty"}},"additionalProperties":false,"type":"object","title":"PlatnoscApiCreate"},"PowodKorektyApi":{"type":"string","enum":["zwrot_towaru","reklamacja","rabat","inny"],"title":"PowodKorektyApi","description":"Powód korekty z API — zawsze „nowe okoliczności” (ujęcie w okresie korekty, nie wstecz). Korekty\nbłędów pierwotnych (wstecz, do okresu faktury) wystawia się w aplikacji."},"PozycjaApiCreate":{"properties":{"produkt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Produkt Id"},"produkt_zewnetrzny_id":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Produkt Zewnetrzny Id"},"nazwa":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Nazwa"},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis"},"ilosc":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,10}|(?=[\\d.]{1,15}0*$)\\d{0,10}\\.\\d{0,4}0*$)"}],"title":"Ilosc"},"jednostka":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Jednostka","description":"Domyślnie z produktu albo `szt.`"},"cena_jednostkowa_netto":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,12}|(?=[\\d.]{1,17}0*$)\\d{0,12}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Cena Jednostkowa Netto"},"cena_jednostkowa_brutto":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,12}|(?=[\\d.]{1,17}0*$)\\d{0,12}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Cena Jednostkowa Brutto","description":"Alternatywa dla netto: przeliczana na netto z 4 miejscami; sumy faktury liczone od netto. Z `liczona_od_brutto: true` na fakturze — pozycja liczona od brutto (wartość brutto dokładnie z tej ceny)"},"stawka_vat":{"anyOf":[{"$ref":"#/components/schemas/StawkaVAT"},{"type":"null"}],"description":"Domyślnie z produktu"},"rabat_procent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"}],"title":"Rabat Procent","default":"0"},"kod_gtu":{"anyOf":[{"$ref":"#/components/schemas/KodGTU"},{"type":"null"}]},"pkwiu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Pkwiu"},"zalacznik_15":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Zalacznik 15","description":"Towar lub usługa z załącznika nr 15 do ustawy o VAT (w KSeF znacznik P_12_Zal_15). Pominięte — ustalamy z `pkwiu` pozycji albo produktu, tylko gdy symbol jednoznacznie należy do załącznika (grupy oznaczone w ustawie „ex” i pozycje bez symbolu PKWiU wskaż sam). Faktura dla firmy z taką pozycją w stawce z VAT i kwotą należności powyżej 15 000 zł (waluta obca — po przeliczeniu kursem faktury) dostaje oznaczenie „mechanizm podzielonej płatności”"}},"additionalProperties":false,"type":"object","required":["ilosc"],"title":"PozycjaApiCreate","description":"Pozycja: z katalogu (`produkt_id` / `produkt_zewnetrzny_id`, domyślne z produktu) albo wprost.\n\nKod GTU nazywa się `kod_gtu` (jak w produkcie); nieznane pole (np. `gtu`) → 422, nie ciche pominięcie."},"PozycjaApiResponse":{"properties":{"lp":{"type":"integer","title":"Lp"},"produkt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Produkt Id"},"nazwa":{"type":"string","title":"Nazwa"},"ilosc":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Ilosc"},"jednostka":{"type":"string","title":"Jednostka"},"cena_jednostkowa_netto":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Cena Jednostkowa Netto","description":"Dla korekty: cena po korekcie (ilość i wartości pozycji korekty to różnice); dla pozycji liczonej od brutto — wyliczona z ceny brutto"},"cena_jednostkowa_brutto":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Cena Jednostkowa Brutto","description":"Wypełniona = pozycja liczona od brutto (podana w cena_jednostkowa_brutto); dla korekty — cena po korekcie"},"rabat_procent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Rabat Procent"},"stawka_vat":{"$ref":"#/components/schemas/StawkaVAT"},"wartosc_netto":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Wartosc Netto"},"kwota_vat":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Kwota Vat"},"wartosc_brutto":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Wartosc Brutto"},"kod_gtu":{"anyOf":[{"$ref":"#/components/schemas/KodGTU"},{"type":"null"}]},"pkwiu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pkwiu"},"zalacznik_15":{"type":"boolean","title":"Zalacznik 15","description":"Towar lub usługa z załącznika nr 15 do ustawy o VAT — podane albo ustalone z PKWiU","default":false}},"type":"object","required":["lp","produkt_id","nazwa","ilosc","jednostka","cena_jednostkowa_netto","rabat_procent","stawka_vat","wartosc_netto","kwota_vat","wartosc_brutto","kod_gtu","pkwiu"],"title":"PozycjaApiResponse"},"PozycjaKorektyApi":{"properties":{"lp":{"type":"integer","minimum":1.0,"title":"Lp","description":"Lp pozycji faktury korygowanej (jak w `pozycje[].lp` odpowiedzi)"},"ilosc_zwrocona":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,12}|(?=[\\d.]{1,17}0*$)\\d{0,12}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Ilosc Zwrocona","description":"O ile zmniejszyć ilość (zwrot) — nie więcej niż zostało"},"cena_jednostkowa_netto_po":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,12}|(?=[\\d.]{1,17}0*$)\\d{0,12}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Cena Jednostkowa Netto Po","description":"Nowa cena jednostkowa netto (przed rabatem % pozycji) — nie wyższa niż obecna; pozycja liczona od brutto przyjmuje tylko cena_jednostkowa_brutto_po"},"cena_jednostkowa_brutto_po":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,12}|(?=[\\d.]{1,17}0*$)\\d{0,12}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Cena Jednostkowa Brutto Po","description":"Alternatywa dla netto: przeliczana na netto z 4 miejscami, jak przy wystawianiu faktury; dla pozycji liczonej od brutto (faktura z `liczona_od_brutto`) — nowa cena brutto wprost"}},"additionalProperties":false,"type":"object","required":["lp"],"title":"PozycjaKorektyApi","description":"Zmiana jednej pozycji: zwrot ilości, obniżka ceny albo oba naraz."},"ProduktApiCreate":{"properties":{"nazwa":{"type":"string","maxLength":255,"minLength":1,"title":"Nazwa"},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis"},"kod_produktu":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Kod Produktu","description":"Kod widoczny na fakturze (np. SKU)"},"rodzaj":{"$ref":"#/components/schemas/RodzajProduktu","description":"towar | usluga | material — wpływa na magazyn i transakcje zagraniczne","default":"usluga"},"jednostka":{"$ref":"#/components/schemas/JednostkaMiary","description":"Jednostka miary, np. `szt.`, `kg`, `godz.`","default":"szt."},"cena_netto":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,14}|(?=[\\d.]{1,17}0*$)\\d{0,14}\\.\\d{0,2}0*$)"}],"title":"Cena Netto","description":"Cena jednostkowa netto"},"stawka_vat":{"$ref":"#/components/schemas/StawkaVAT","description":"`23` | `8` | `5` | `0` | `zw` | `np` | `oo`","default":"23"},"stawka_ryczaltu":{"anyOf":[{"$ref":"#/components/schemas/StawkaRyczaltu"},{"type":"null"}],"description":"Tylko dla organizacji na ryczałcie"},"kod_gtu":{"anyOf":[{"$ref":"#/components/schemas/KodGTU"},{"type":"null"}]},"kod_pkwiu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Kod Pkwiu"},"kod_cn":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Kod Cn"},"zewnetrzny_id":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Zewnetrzny Id","description":"Id/SKU produktu w Twoim systemie — unikalny w organizacji"}},"additionalProperties":false,"type":"object","required":["nazwa","cena_netto"],"title":"ProduktApiCreate"},"ProduktApiResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"zewnetrzny_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zewnetrzny Id"},"nazwa":{"type":"string","title":"Nazwa"},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis"},"kod_produktu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kod Produktu"},"rodzaj":{"$ref":"#/components/schemas/RodzajProduktu"},"jednostka":{"$ref":"#/components/schemas/JednostkaMiary"},"cena_netto":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Cena Netto"},"cena_brutto":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Cena Brutto","description":"Wyliczona z ceny netto i stawki VAT (zaokrąglenie do grosza, połówki w górę)"},"stawka_vat":{"$ref":"#/components/schemas/StawkaVAT"},"stawka_ryczaltu":{"anyOf":[{"$ref":"#/components/schemas/StawkaRyczaltu"},{"type":"null"}]},"kod_gtu":{"anyOf":[{"$ref":"#/components/schemas/KodGTU"},{"type":"null"}]},"kod_pkwiu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kod Pkwiu"},"kod_cn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kod Cn"},"jest_aktywny":{"type":"boolean","title":"Jest Aktywny"},"utworzono":{"type":"string","format":"date-time","title":"Utworzono"},"zaktualizowano":{"type":"string","format":"date-time","title":"Zaktualizowano"}},"type":"object","required":["id","zewnetrzny_id","nazwa","opis","kod_produktu","rodzaj","jednostka","cena_netto","cena_brutto","stawka_vat","stawka_ryczaltu","kod_gtu","kod_pkwiu","kod_cn","jest_aktywny","utworzono","zaktualizowano"],"title":"ProduktApiResponse"},"ProduktApiUpdate":{"properties":{"zewnetrzny_id":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Zewnetrzny Id"},"nazwa":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Nazwa"},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis"},"kod_produktu":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Kod Produktu"},"rodzaj":{"anyOf":[{"$ref":"#/components/schemas/RodzajProduktu"},{"type":"null"}]},"jednostka":{"anyOf":[{"$ref":"#/components/schemas/JednostkaMiary"},{"type":"null"}]},"cena_netto":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,14}|(?=[\\d.]{1,17}0*$)\\d{0,14}\\.\\d{0,2}0*$)"},{"type":"null"}],"title":"Cena Netto"},"stawka_vat":{"anyOf":[{"$ref":"#/components/schemas/StawkaVAT"},{"type":"null"}]},"stawka_ryczaltu":{"anyOf":[{"$ref":"#/components/schemas/StawkaRyczaltu"},{"type":"null"}]},"kod_gtu":{"anyOf":[{"$ref":"#/components/schemas/KodGTU"},{"type":"null"}]},"kod_pkwiu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Kod Pkwiu"},"kod_cn":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Kod Cn"},"jest_aktywny":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Jest Aktywny"}},"additionalProperties":false,"type":"object","title":"ProduktApiUpdate","description":"PATCH — zmieniane są tylko przesłane pola; `null` w polu wymaganym → 422."},"ProduktApiUpsert":{"properties":{"nazwa":{"type":"string","maxLength":255,"minLength":1,"title":"Nazwa"},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis"},"kod_produktu":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Kod Produktu","description":"Kod widoczny na fakturze (np. SKU)"},"rodzaj":{"$ref":"#/components/schemas/RodzajProduktu","description":"towar | usluga | material — wpływa na magazyn i transakcje zagraniczne","default":"usluga"},"jednostka":{"$ref":"#/components/schemas/JednostkaMiary","description":"Jednostka miary, np. `szt.`, `kg`, `godz.`","default":"szt."},"cena_netto":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,14}|(?=[\\d.]{1,17}0*$)\\d{0,14}\\.\\d{0,2}0*$)"}],"title":"Cena Netto","description":"Cena jednostkowa netto"},"stawka_vat":{"$ref":"#/components/schemas/StawkaVAT","description":"`23` | `8` | `5` | `0` | `zw` | `np` | `oo`","default":"23"},"stawka_ryczaltu":{"anyOf":[{"$ref":"#/components/schemas/StawkaRyczaltu"},{"type":"null"}],"description":"Tylko dla organizacji na ryczałcie"},"kod_gtu":{"anyOf":[{"$ref":"#/components/schemas/KodGTU"},{"type":"null"}]},"kod_pkwiu":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Kod Pkwiu"},"kod_cn":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Kod Cn"}},"additionalProperties":false,"type":"object","required":["nazwa","cena_netto"],"title":"ProduktApiUpsert","description":"Ciało `PUT /produkty/zewnetrzne/{zewnetrzny_id}` — id przychodzi w ścieżce."},"RodzajDokumentuApi":{"type":"string","enum":["faktura","proforma","korekta"],"title":"RodzajDokumentuApi","description":"Filtr listy faktur — dokumenty, które powstają przez API."},"RodzajFaktury":{"type":"string","enum":["faktura","korekta","zaliczkowa","koncowa","proforma","marza","oss"],"title":"RodzajFaktury","description":"Rodzaj dokumentu sprzedaży."},"RodzajFakturyApi":{"type":"string","enum":["faktura","proforma"],"title":"RodzajFakturyApi","description":"Rodzaj dokumentu wystawianego przez `POST /faktury`. Korekta ma własny endpoint\n(`POST /faktury/{id}/korekty`), bo powstaje zawsze z faktury pierwotnej."},"RodzajKlienta":{"type":"string","enum":["firma","konsument"],"title":"RodzajKlienta","description":"Firma albo konsument — decyduje o danych nabywcy na fakturze (z NIP-em albo bez identyfikatora)."},"RodzajProduktu":{"type":"string","enum":["towar","usluga","material"],"title":"RodzajProduktu","description":"Rodzaj produktu: towar, usługa albo materiał."},"RolaPodmiotuTrzeciego":{"type":"string","enum":["odbiorca","jst_odbiorca","gv_odbiorca"],"title":"RolaPodmiotuTrzeciego","description":"Rola odbiorcy na fakturze: `odbiorca` — oddział lub jednostka wewnętrzna nabywcy, która sama nie jest\nnabywcą; `jst_odbiorca` — jednostka podrzędna jednostki samorządu terytorialnego (np. szkoła, gdy nabywcą jest\ngmina); `gv_odbiorca` — członek grupy VAT, gdy nabywcą jest grupa VAT."},"SrodowiskoKluczaApi":{"type":"string","enum":["produkcja","piaskownica"],"title":"SrodowiskoKluczaApi","description":"Środowisko klucza API, widoczne w prefiksie sekretu: `produkcja` (`mk_live_…`) — prawdziwe dokumenty wysyłane do KSeF; `piaskownica` (`mk_test_…`) — osobna organizacja testowa, dokumenty bez wysyłki do KSeF."},"StatusDostarczeniaWebhooka":{"type":"string","enum":["oczekuje","dostarczono","nieudane"],"title":"StatusDostarczeniaWebhooka","description":"Stan doręczenia zdarzenia do webhooka: `oczekuje` (przed pierwszą próbą albo między ponowieniami), `dostarczono` (odpowiedź 2xx), `nieudane` (wyczerpane próby albo odpowiedź, której nie ponawiamy)."},"StatusFaktury":{"type":"string","enum":["szkic","wystawiona","wymaga_decyzji","wyslana","zaksiegowana","zadeklarowana","anulowana"],"title":"StatusFaktury","description":"Status dokumentu: `szkic` → `wystawiona` → `wyslana` (przyjęta w KSeF) → `zaksiegowana` → `zadeklarowana`; szkic można usunąć. Stan płatności jest osobno — w `status_platnosci`."},"StatusKsefApi":{"type":"string","enum":["szkic","oczekuje","przyjeta","odrzucona","anulowana"],"title":"StatusKsefApi"},"StatusPlatnosci":{"type":"string","enum":["do_zaplaty","czesciowo_oplacone","oplacone","po_terminie","anulowane"],"title":"StatusPlatnosci","description":"Stan płatności faktury."},"StawkaRyczaltu":{"type":"string","enum":["3","5_5","8_5","10","12","12_5","14","15","17"],"title":"StawkaRyczaltu","description":"Stawka ryczałtu od przychodów ewidencjonowanych (%) — dotyczy organizacji na ryczałcie."},"StawkaVAT":{"type":"string","enum":["23","8","5","0","zw","np","oo"],"title":"StawkaVAT","description":"Stawka VAT pozycji."},"Strona_DostarczenieApiResponse_":{"properties":{"dane":{"items":{"$ref":"#/components/schemas/DostarczenieApiResponse"},"type":"array","title":"Dane"},"nastepny_kursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nastepny Kursor","description":"Wartość do przekazania jako `kursor` w kolejnym żądaniu; null = ostatnia strona"},"ma_wiecej":{"type":"boolean","title":"Ma Wiecej","description":"Czy istnieje kolejna strona"}},"type":"object","required":["dane","ma_wiecej"],"title":"Strona[DostarczenieApiResponse]"},"Strona_FakturaApiResponse_":{"properties":{"dane":{"items":{"$ref":"#/components/schemas/FakturaApiResponse"},"type":"array","title":"Dane"},"nastepny_kursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nastepny Kursor","description":"Wartość do przekazania jako `kursor` w kolejnym żądaniu; null = ostatnia strona"},"ma_wiecej":{"type":"boolean","title":"Ma Wiecej","description":"Czy istnieje kolejna strona"}},"type":"object","required":["dane","ma_wiecej"],"title":"Strona[FakturaApiResponse]"},"Strona_KlientApiResponse_":{"properties":{"dane":{"items":{"$ref":"#/components/schemas/KlientApiResponse"},"type":"array","title":"Dane"},"nastepny_kursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nastepny Kursor","description":"Wartość do przekazania jako `kursor` w kolejnym żądaniu; null = ostatnia strona"},"ma_wiecej":{"type":"boolean","title":"Ma Wiecej","description":"Czy istnieje kolejna strona"}},"type":"object","required":["dane","ma_wiecej"],"title":"Strona[KlientApiResponse]"},"Strona_ProduktApiResponse_":{"properties":{"dane":{"items":{"$ref":"#/components/schemas/ProduktApiResponse"},"type":"array","title":"Dane"},"nastepny_kursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nastepny Kursor","description":"Wartość do przekazania jako `kursor` w kolejnym żądaniu; null = ostatnia strona"},"ma_wiecej":{"type":"boolean","title":"Ma Wiecej","description":"Czy istnieje kolejna strona"}},"type":"object","required":["dane","ma_wiecej"],"title":"Strona[ProduktApiResponse]"},"TrybKsef":{"type":"string","enum":["auto","wyslij","pomin"],"title":"TrybKsef"},"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"},"WebhookApiCreate":{"properties":{"url":{"type":"string","maxLength":2048,"minLength":12,"title":"Url","description":"Adres https, pod który wysyłamy POST z JSON. Sieć lokalna i adresy prywatne są odrzucane."},"zdarzenia":{"items":{"$ref":"#/components/schemas/ZdarzenieWebhooka"},"type":"array","minItems":1,"title":"Zdarzenia","description":"Subskrybowane zdarzenia (bez `ping`)."},"opis":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Opis","description":"Np. „Sklep WooCommerce — produkcja”"}},"additionalProperties":false,"type":"object","required":["url","zdarzenia"],"title":"WebhookApiCreate"},"WebhookApiResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"url":{"type":"string","title":"Url"},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis"},"zdarzenia":{"items":{"type":"string"},"type":"array","title":"Zdarzenia"},"aktywny":{"type":"boolean","title":"Aktywny"},"bledow_z_rzedu":{"type":"integer","title":"Bledow Z Rzedu","description":"Nieudane próby doręczenia z rzędu; po 50 webhook wyłącza się sam"},"wylaczony_automatycznie":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Wylaczony Automatycznie"},"ostatnie_dostarczenie":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ostatnie Dostarczenie"},"ostatni_status_http":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ostatni Status Http"},"utworzono":{"type":"string","format":"date-time","title":"Utworzono"}},"type":"object","required":["id","url","opis","zdarzenia","aktywny","bledow_z_rzedu","wylaczony_automatycznie","ostatnie_dostarczenie","ostatni_status_http","utworzono"],"title":"WebhookApiResponse"},"WebhookApiUpdate":{"properties":{"url":{"anyOf":[{"type":"string","maxLength":2048,"minLength":12},{"type":"null"}],"title":"Url","description":"Adres https, pod który wysyłamy POST z JSON. Sieć lokalna i adresy prywatne są odrzucane."},"zdarzenia":{"anyOf":[{"items":{"$ref":"#/components/schemas/ZdarzenieWebhooka"},"type":"array","minItems":1},{"type":"null"}],"title":"Zdarzenia"},"opis":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Opis"},"aktywny":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Aktywny","description":"`true` po automatycznym wyłączeniu włącza webhook ponownie i zeruje licznik błędów."}},"additionalProperties":false,"type":"object","title":"WebhookApiUpdate"},"WebhookApiUtworzonyResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"url":{"type":"string","title":"Url"},"opis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opis"},"zdarzenia":{"items":{"type":"string"},"type":"array","title":"Zdarzenia"},"aktywny":{"type":"boolean","title":"Aktywny"},"bledow_z_rzedu":{"type":"integer","title":"Bledow Z Rzedu","description":"Nieudane próby doręczenia z rzędu; po 50 webhook wyłącza się sam"},"wylaczony_automatycznie":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Wylaczony Automatycznie"},"ostatnie_dostarczenie":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ostatnie Dostarczenie"},"ostatni_status_http":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ostatni Status Http"},"utworzono":{"type":"string","format":"date-time","title":"Utworzono"},"sekret":{"type":"string","title":"Sekret","description":"Sekret do weryfikacji nagłówka `X-MK-Signature`. Widoczny TYLKO przy utworzeniu i rotacji."}},"type":"object","required":["id","url","opis","zdarzenia","aktywny","bledow_z_rzedu","wylaczony_automatycznie","ostatnie_dostarczenie","ostatni_status_http","utworzono","sekret"],"title":"WebhookApiUtworzonyResponse"},"WyslanoEmailResponse":{"properties":{"message_id":{"type":"string","title":"Message Id"}},"type":"object","required":["message_id"],"title":"WyslanoEmailResponse"},"WyslijEmailApiRequest":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email","description":"Domyślnie e-mail nabywcy z kartoteki"},"jezyk":{"$ref":"#/components/schemas/Jezyk","default":"pl"}},"additionalProperties":false,"type":"object","title":"WyslijEmailApiRequest"},"ZakresKluczaApi":{"type":"string","enum":["faktury:odczyt","faktury:zapis","klienci:odczyt","klienci:zapis","produkty:odczyt","produkty:zapis","webhooki:zarzadzanie"],"title":"ZakresKluczaApi","description":"Zakres uprawnień klucza API. Klucz ma listę zakresów; operacja spoza nich kończy się `403 BRAK_ZAKRESU`. Wartości są stałe w obrębie wersji API."},"ZdarzenieWebhooka":{"type":"string","enum":["faktura.wystawiona","faktura.ksef.przyjeta","faktura.ksef.odrzucona","faktura.oplacona","faktura.anulowana","ping"],"title":"ZdarzenieWebhooka","description":"Zdarzenia, na które można zapisać webhook. Dotyczą faktur sprzedażowych organizacji — także wystawionych lub opłaconych w aplikacji, nie tylko przez API. `ping` to zdarzenie testowe (`POST /webhooki/{id}/test`) — nie da się na nie zapisać."}},"securitySchemes":{"KluczApi":{"type":"http","scheme":"bearer","bearerFormat":"mk_live_… / mk_test_…","description":"Klucz API z ustawień aplikacji (Ustawienia → Integracje API)."}}},"security":[{"KluczApi":[]}],"servers":[{"url":"/api/public/v1"}]}