{"openapi": "3.1.0", "info": {"title": "FluxCRM API", "version": "1", "description": "API magazynu szans FluxCRM. Wszystkie odpowiedzi to JSON z polem `ok`; blad to `{ok: false, powod}` (422 dodaje `pola` z opisem kazdego blednego pola).\n\nUwierzytelnianie: klucz integracji z Ustawienia > Klucze API w naglowku `Authorization: Bearer <klucz>` (stary naglowek `x-fluxcrm-klucz` dziala tak samo). Klucz ma zakres (moduly), tryb odczyt albo zapis i date waznosci; poza zakresem odpowiedz to 403, bez klucza lub z cofnietym albo wygaslym 401. Zmiany zrobione kluczem zapisuja sie jak zmiany czlowieka, a autorem w audycie jest nazwa klucza. Wysylki do klientow ida wylacznie przez kolejke akceptacji w panelu: klucz nie moze jej zatwierdzac.\n\nLimity: na klucz domyslnie 60 zadan na minute i 10 000 na dobe (zmienia wlasciciel). Kazda odpowiedz niesie `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` (sekundy, okno minuty) oraz `X-RateLimit-Limit-Day`, `X-RateLimit-Remaining-Day`, `X-RateLimit-Reset-Day`. Po przekroczeniu: 429 z naglowkiem `Retry-After` (sekundy)."}, "servers": [{"url": "https://demo-keller.crm.fluxlab.pl"}], "components": {"securitySchemes": {"klucz": {"type": "apiKey", "in": "header", "name": "x-fluxcrm-klucz"}, "sesja": {"type": "apiKey", "in": "cookie", "name": "fluxcrm_sesja"}, "bearer": {"type": "http", "scheme": "bearer", "bearerFormat": "fxk_...", "description": "Klucz API integracji (Ustawienia > Klucze API): Authorization: Bearer <klucz>."}}, "schemas": {"Blad": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "powod": {"type": "string", "description": "Czytelny powod odmowy po polsku"}, "pola": {"type": "object", "description": "Przy 422: opis kazdego blednego pola", "additionalProperties": {"type": "string"}}}, "required": ["ok", "powod"]}, "Lead": {"type": "object", "description": "Szansa sprzedazy (pelna karta ma jeszcze pola wyliczane, np. priorytet, kompletnosc, osoby).", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "zrodlo": {"type": "string", "description": "Zrodlo (np. reczne, formularz, poczta)"}, "kanal": {"type": "string"}, "nazwa_kontaktu": {"type": ["string", "null"]}, "firma": {"type": ["string", "null"]}, "email": {"type": ["string", "null"]}, "telefon": {"type": ["string", "null"]}, "tytul": {"type": ["string", "null"]}, "status": {"type": "string", "description": "w_trakcie, wygrany, przegrany albo oferta_bez_odzewu"}, "etap": {"type": "string", "description": "Klucz etapu z GET /api/etapy"}, "etap_reczny": {"type": "boolean", "description": "true, gdy etap ustawiono recznie"}, "kwota": {"type": ["number", "null"]}, "opiekun": {"type": ["string", "null"]}, "organizacja_id": {"type": ["integer", "null"]}, "pierwszy_kontakt": {"type": "string", "description": "Data i czas ISO 8601 (czas lokalny instancji)", "format": "date-time"}, "pola": {"type": "object", "description": "Wartosci pol wlasnych {klucz: wartosc} (definicje: GET /api/pola)"}}, "additionalProperties": true}, "LeadNowy": {"type": "object", "properties": {"firma": {"type": "string"}, "nazwa_kontaktu": {"type": "string"}, "email": {"type": "string", "format": "email"}, "tytul": {"type": "string", "description": "O co chodzi w szansie"}}, "description": "Co najmniej jedno z pol firma, nazwa_kontaktu, email."}, "LeadZmiana": {"type": "object", "properties": {"opiekun": {"type": ["string", "null"], "description": "Klucz opiekuna albo login doradcy; null zdejmuje"}, "telefon": {"type": ["string", "null"]}, "nazwa_kontaktu": {"type": ["string", "null"]}, "odlozona_do": {"type": ["string", "null"], "description": "Data odlozenia (RRRR-MM-DD); null przywraca"}, "pola": {"type": "object", "description": "Pola wlasne {klucz: wartosc|null}; null kasuje wartosc, zly typ daje 422"}}, "description": "Dowolny podzbior pol."}, "LeadEtap": {"type": "object", "properties": {"etap": {"type": "string", "description": "Klucz etapu z GET /api/etapy albo auto (powrot do etapu wyliczanego)"}, "kwota": {"type": "number", "description": "Wymagana przy etapach, ktore tego wymagaja (inaczej 422 z lista pol)"}, "termin": {"type": "string", "description": "Termin RRRR-MM-DD, gdy etap go wymaga"}}, "required": ["etap"]}, "LeadStatus": {"type": "object", "properties": {"status": {"type": "string", "description": "w_trakcie, wygrany, przegrany albo oferta_bez_odzewu"}, "powod": {"type": "string"}}, "required": ["status"]}, "OdpowiedzLead": {"type": "object", "properties": {"ok": {"type": "boolean"}, "lead": {"$ref": "#/components/schemas/Lead"}}, "required": ["ok", "lead"]}, "OdpowiedzLeady": {"type": "object", "properties": {"ok": {"type": "boolean"}, "ile": {"type": "integer"}, "ile_w_archiwum": {"type": "integer"}, "ile_odlozonych": {"type": "integer"}, "leady": {"type": "array", "items": {"$ref": "#/components/schemas/Lead"}}}, "required": ["ok", "leady"]}, "Notatka": {"type": "object", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "lead_id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "kiedy": {"type": "string", "description": "Data i czas ISO 8601 (czas lokalny instancji)", "format": "date-time"}, "autor": {"type": ["string", "null"], "description": "Przy zapisie kluczem: nazwa klucza"}, "tresc": {"type": "string"}}, "required": ["id", "lead_id", "tresc"]}, "NotatkaNowa": {"type": "object", "properties": {"tresc": {"type": "string", "maxLength": 4000}}, "required": ["tresc"]}, "Zadanie": {"type": "object", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "lead_id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "utworzono": {"type": "string", "description": "Data i czas ISO 8601 (czas lokalny instancji)", "format": "date-time"}, "termin": {"type": "string", "description": "Termin RRRR-MM-DD albo z godzina"}, "tresc": {"type": "string"}, "autor": {"type": ["string", "null"]}, "zrobione": {"type": ["string", "null"], "description": "Kiedy zamkniete; null = otwarte"}, "zalegle": {"type": "boolean"}, "przypisany": {"type": ["string", "null"]}, "priorytet": {"type": "integer", "description": "1 niski, 2 normalny, 3 wysoki"}, "szacunek_min": {"type": ["integer", "null"]}, "powtarzaj": {"type": ["string", "null"]}}, "additionalProperties": true}, "ZadanieNowe": {"type": "object", "properties": {"tresc": {"type": "string"}, "termin": {"type": "string", "description": "RRRR-MM-DD albo RRRR-MM-DDTGG:MM"}}, "required": ["tresc", "termin"]}, "ZadanieZmiana": {"type": "object", "properties": {"zrobione": {"type": "boolean"}, "termin": {"type": "string"}, "tresc": {"type": "string"}, "przypisany": {"type": ["string", "null"]}, "priorytet": {"type": "integer"}, "szacunek_min": {"type": ["integer", "null"]}, "powtarzaj": {"type": ["string", "null"]}, "powtarzaj_co": {"type": "integer"}}, "description": "Co najmniej jedno pole."}, "OdpowiedzNotatkiZadania": {"type": "object", "properties": {"ok": {"type": "boolean"}, "lead_id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "notatki": {"type": "array", "items": {"$ref": "#/components/schemas/Notatka"}}, "zadania": {"type": "array", "items": {"$ref": "#/components/schemas/Zadanie"}}, "id": {"type": "integer", "description": "Id dodanego albo zmienionego rekordu"}}, "required": ["ok", "lead_id"]}, "OdpowiedzZadania": {"type": "object", "properties": {"ok": {"type": "boolean"}, "zakres": {"type": "string"}, "ile": {"type": "integer"}, "ile_zaleglych": {"type": "integer"}, "zadania": {"type": "array", "items": {"$ref": "#/components/schemas/Zadanie"}}}, "required": ["ok", "zadania"]}, "Etap": {"type": "object", "properties": {"klucz": {"type": "string"}, "tytul": {"type": "string"}, "rola": {"type": ["string", "null"], "description": "Rola etapu w lejku (nowe, oferta, umowa, ...)"}}, "required": ["klucz", "tytul"]}, "OdpowiedzEtapy": {"type": "object", "properties": {"ok": {"type": "boolean"}, "etapy": {"type": "array", "items": {"$ref": "#/components/schemas/Etap"}}}, "required": ["ok", "etapy"]}, "PoleWlasne": {"type": "object", "properties": {"klucz": {"type": "string"}, "tytul": {"type": "string"}, "typ": {"type": "string", "description": "tekst, liczba, data, lista, ..."}, "opcje": {"type": "array", "items": {"type": "string"}}, "w_kanbanie": {"type": "boolean"}, "wymagane_od_etapu": {"type": ["string", "null"]}}, "additionalProperties": true}, "OdpowiedzPola": {"type": "object", "properties": {"ok": {"type": "boolean"}, "pola": {"type": "array", "items": {"$ref": "#/components/schemas/PoleWlasne"}}}, "required": ["ok", "pola"]}, "Osoba": {"type": "object", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "imie": {"type": ["string", "null"]}, "nazwisko": {"type": ["string", "null"]}, "imie_nazwisko": {"type": "string"}, "stanowisko": {"type": ["string", "null"]}, "email": {"type": ["string", "null"]}, "telefon": {"type": ["string", "null"]}, "organizacja_id": {"type": ["integer", "null"]}, "notatka": {"type": ["string", "null"]}}, "additionalProperties": true}, "OsobaNowa": {"type": "object", "properties": {"imie": {"type": "string"}, "nazwisko": {"type": "string"}, "stanowisko": {"type": "string"}, "email": {"type": "string", "format": "email"}, "telefon": {"type": "string"}, "organizacja_id": {"type": "integer"}, "notatka": {"type": "string"}}, "description": "Znana po e-mailu osoba jest zwracana zamiast duplikatu (nowa: false)."}, "Organizacja": {"type": "object", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "nazwa": {"type": "string"}, "nip": {"type": ["string", "null"]}, "regon": {"type": ["string", "null"]}, "krs": {"type": ["string", "null"]}, "kraj": {"type": "string"}, "ulica": {"type": ["string", "null"]}, "kod": {"type": ["string", "null"]}, "miasto": {"type": ["string", "null"]}, "email_faktury": {"type": ["string", "null"]}, "www": {"type": ["string", "null"]}, "telefon": {"type": ["string", "null"]}, "notatka": {"type": ["string", "null"]}}, "additionalProperties": true}, "OrganizacjaNowa": {"type": "object", "properties": {"nazwa": {"type": "string"}, "nip": {"type": "string", "description": "NIP znanej firmy zwraca te firme zamiast duplikatu"}, "regon": {"type": "string"}, "krs": {"type": "string"}, "ulica": {"type": "string"}, "kod": {"type": "string"}, "miasto": {"type": "string"}, "email_faktury": {"type": "string"}, "www": {"type": "string"}, "telefon": {"type": "string"}, "notatka": {"type": "string"}}, "description": "Czesciowa edycja (PUT) przyjmuje te same pola."}, "OdpowiedzOgolna": {"type": "object", "properties": {"ok": {"type": "boolean"}}, "required": ["ok"], "additionalProperties": true}, "ScalenieZ": {"type": "object", "properties": {"z": {"type": "integer", "description": "Id rekordu, ktory zostaje wchloniety"}}, "required": ["z"]}, "NadrzednaFirma": {"type": "object", "properties": {"nadrzedna_id": {"type": ["integer", "null"], "description": "Id centrali; null odpina oddzial"}}, "required": ["nadrzedna_id"]}, "RejestrZapytanie": {"type": "object", "properties": {"nip": {"type": "string"}, "krs": {"type": "string"}}, "description": "Puste = dane firmy z karty."}, "SzybkaWartosc": {"type": "object", "properties": {"wartosc": {"type": "string", "description": "Wartosc jednego pola karty; e-mail dopina osobe"}}, "required": ["wartosc"]}, "RolaOsoby": {"type": "object", "properties": {"klucz": {"type": "string"}, "nazwa": {"type": "string"}}, "required": ["klucz", "nazwa"]}, "RolePodmiana": {"type": "object", "properties": {"role": {"type": "array", "items": {"$ref": "#/components/schemas/RolaOsoby"}}}, "required": ["role"]}, "OdpowiedzOsoba": {"type": "object", "properties": {"ok": {"type": "boolean"}, "nowa": {"type": "boolean"}, "osoba": {"$ref": "#/components/schemas/Osoba"}}, "required": ["ok", "osoba"]}, "OdpowiedzOsoby": {"type": "object", "properties": {"ok": {"type": "boolean"}, "ile": {"type": "integer"}, "osoby": {"type": "array", "items": {"$ref": "#/components/schemas/Osoba"}}}, "required": ["ok", "osoby"]}, "OdpowiedzOrganizacja": {"type": "object", "properties": {"ok": {"type": "boolean"}, "nowa": {"type": "boolean"}, "organizacja": {"$ref": "#/components/schemas/Organizacja"}}, "required": ["ok", "organizacja"]}, "OdpowiedzOrganizacje": {"type": "object", "properties": {"ok": {"type": "boolean"}, "ile": {"type": "integer"}, "organizacje": {"type": "array", "items": {"$ref": "#/components/schemas/Organizacja"}}}, "required": ["ok", "organizacje"]}, "OsobaLeada": {"type": "object", "properties": {"osoba_id": {"type": "integer", "description": "Istniejaca osoba"}, "nowa": {"$ref": "#/components/schemas/OsobaNowa"}, "rola": {"type": "string", "description": "szef, kontaktowa, techniczna, ksiegowosc albo inna"}, "glowna": {"type": "boolean"}, "decydent": {"type": "boolean"}}, "description": "Podaj osoba_id albo nowa."}, "OrganizacjaLeada": {"type": "object", "properties": {"organizacja_id": {"type": ["integer", "null"], "description": "null odpina firme"}, "nowa": {"$ref": "#/components/schemas/OrganizacjaNowa"}}, "description": "Podaj organizacja_id albo nowa."}, "OdpowiedzPowiazania": {"type": "object", "properties": {"ok": {"type": "boolean"}, "lead_id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "osoby": {"type": "array", "items": {"$ref": "#/components/schemas/Osoba"}}, "organizacja": {"anyOf": [{"$ref": "#/components/schemas/Organizacja"}, {"type": "null"}]}}, "required": ["ok", "lead_id"]}, "Webhook": {"type": "object", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "nazwa": {"type": "string"}, "url": {"type": "string", "format": "uri"}, "zdarzenia": {"type": "array", "items": {"type": "string", "enum": ["nowy_lead", "zmiana_etapu", "wygrana", "przegrana", "oferta_wyslana", "wiadomosc_klienta", "wiadomosc_wyslana", "zadanie_utworzone", "zadanie_wykonane", "notatka_dodana", "opiekun_zmieniony", "lead_scalony"]}}, "aktywny": {"type": "boolean"}, "ma_sekret": {"type": "boolean"}, "utworzono": {"type": "string", "description": "Data i czas ISO 8601 (czas lokalny instancji)", "format": "date-time"}, "ostatnia": {"type": ["string", "null"], "description": "Czas ostatniej dostawy"}, "filtr_zrodla": {"type": "array", "description": "Tylko szanse z tych zrodel; pusta lista = wszystkie", "items": {"type": "string"}}, "filtr_etapy": {"type": "array", "description": "Tylko zdarzenia z tych etapow; pusta lista = wszystkie", "items": {"type": "string"}}, "lekki": {"type": "boolean", "description": "Ladunek bez danych osobowych: tylko id i typ"}, "wstrzymany": {"type": ["string", "null"], "description": "Od kiedy wstrzymany po serii bledow"}, "wstrzymanie_powod": {"type": ["string", "null"]}, "bledy_z_rzedu": {"type": "integer"}}, "required": ["id", "nazwa", "url", "zdarzenia"]}, "WebhookNowy": {"type": "object", "properties": {"nazwa": {"type": "string"}, "url": {"type": "string", "description": "https; http tylko dla hostow lokalnych", "format": "uri"}, "zdarzenia": {"type": "array", "items": {"type": "string", "enum": ["nowy_lead", "zmiana_etapu", "wygrana", "przegrana", "oferta_wyslana", "wiadomosc_klienta", "wiadomosc_wyslana", "zadanie_utworzone", "zadanie_wykonane", "notatka_dodana", "opiekun_zmieniony", "lead_scalony"]}}, "sekret": {"type": "string", "description": "Brak = wygenerowany i zwrocony raz"}, "aktywny": {"type": "boolean"}, "nowy_sekret": {"type": "boolean", "description": "Tylko PUT: odnawia sekret"}, "filtr_zrodla": {"type": "array", "description": "Tylko szanse z tych zrodel", "items": {"type": "string"}}, "filtr_etapy": {"type": "array", "description": "Tylko zdarzenia z tych etapow", "items": {"type": "string"}}, "lekki": {"type": "boolean", "description": "Ladunek bez danych osobowych: tylko id i typ"}}, "required": ["nazwa", "url", "zdarzenia"]}, "WebhookDostawa": {"type": "object", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "webhook_id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "zdarzenie": {"type": "string"}, "stan": {"type": "string", "enum": ["czeka", "wysylka", "dostarczone", "blad"]}, "kod": {"type": ["integer", "null"], "description": "Kod HTTP odpowiedzi odbiorcy"}, "czas_ms": {"type": ["integer", "null"], "description": "Czas odpowiedzi w ms"}, "proby": {"type": "integer"}, "sekwencja": {"type": ["integer", "null"], "description": "Numer zdarzenia dla tej szansy, rosnacy"}, "blad": {"type": ["string", "null"]}}, "required": ["id", "webhook_id", "zdarzenie", "stan"]}, "WebhookLadunek": {"type": "object", "properties": {"zdarzenie": {"type": "string", "enum": ["nowy_lead", "zmiana_etapu", "wygrana", "przegrana", "oferta_wyslana", "wiadomosc_klienta", "wiadomosc_wyslana", "zadanie_utworzone", "zadanie_wykonane", "notatka_dodana", "opiekun_zmieniony", "lead_scalony"]}, "id_dostawy": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "kiedy": {"type": "string", "description": "Data i czas ISO 8601 (czas lokalny instancji)", "format": "date-time"}, "sekwencja": {"type": ["integer", "null"], "description": "Rosnacy numer zdarzenia dla szansy; porzadkuj po nim"}, "lead": {"type": "object", "description": "Szansa; w trybie lekkim tylko lead_id i obiekt_id", "additionalProperties": true}, "lead_id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "obiekt_id": {"type": ["integer", "null"]}}, "required": ["zdarzenie", "id_dostawy", "kiedy"]}, "OdpowiedzDostawy": {"type": "object", "properties": {"ok": {"type": "boolean"}, "dostawy": {"type": "array", "items": {"$ref": "#/components/schemas/WebhookDostawa"}}}, "required": ["ok"]}, "WejscieWebhook": {"type": "object", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "nazwa": {"type": "string"}, "prefiks": {"type": "string", "description": "Poczatek tokenu do rozpoznania w panelu"}, "zrodlo": {"type": "string", "description": "Zrodlo szans utworzonych tym tokenem"}, "aktywny": {"type": "boolean"}, "utworzono": {"type": "string", "description": "Data i czas ISO 8601 (czas lokalny instancji)", "format": "date-time"}, "ostatnio": {"type": ["string", "null"]}, "przyjete": {"type": "integer"}, "odrzucone": {"type": "integer"}}, "required": ["id", "nazwa", "zrodlo"]}, "WejscieNowe": {"type": "object", "properties": {"nazwa": {"type": "string", "description": "Do 80 znakow"}, "zrodlo": {"type": "string", "description": "Male litery, cyfry, podkreslenia; domyslnie webhook"}}, "required": ["nazwa"]}, "OdpowiedzWejscia": {"type": "object", "properties": {"ok": {"type": "boolean"}, "id": {"type": "integer"}, "token": {"type": "string", "description": "Tylko przy utworzeniu; zapisz od razu"}, "wejscia": {"type": "array", "items": {"$ref": "#/components/schemas/WejscieWebhook"}}}, "required": ["ok"]}, "ZgloszenieWejscia": {"type": "object", "properties": {"id": {"type": "string", "description": "Id w systemie nadawcy; to samo id drugi raz nie tworzy szansy"}, "nazwa": {"type": "string"}, "email": {"type": "string"}, "telefon": {"type": "string"}, "firma": {"type": "string"}, "tytul": {"type": "string"}, "wiadomosc": {"type": "string"}}, "description": "Wymagane przynajmniej jedno z: nazwa, email, telefon, wiadomosc"}, "OdpowiedzZgloszenia": {"type": "object", "properties": {"ok": {"type": "boolean"}, "lead_id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "nowy_lead": {"type": "boolean"}, "duplikat": {"type": "boolean"}}, "required": ["ok"]}, "OdpowiedzWebhooki": {"type": "object", "properties": {"ok": {"type": "boolean"}, "id": {"type": "integer"}, "sekret": {"type": "string", "description": "Tylko przy tworzeniu i odnowieniu; zapisz od razu"}, "webhooki": {"type": "array", "items": {"$ref": "#/components/schemas/Webhook"}}, "zdarzenia": {"type": "array", "items": {"type": "object", "properties": {"klucz": {"type": "string"}, "nazwa": {"type": "string"}}}}}, "required": ["ok"]}, "KluczIntegracji": {"type": "object", "properties": {"id": {"type": "integer", "description": "Identyfikator", "minimum": 1}, "nazwa": {"type": "string"}, "prefiks": {"type": "string", "description": "Poczatek klucza do rozpoznania w panelu"}, "zakres": {"type": "array", "items": {"type": "string", "enum": ["szanse", "zadania", "poczta", "finanse", "projekty", "raporty", "zespol", "ustawienia"]}, "description": "Moduly otwarte kluczem"}, "tryb": {"type": "string", "enum": ["odczyt", "zapis"]}, "wygasa": {"type": ["string", "null"]}, "wygasl": {"type": "boolean"}, "limit_min": {"type": "integer", "description": "Zadan na minute"}, "limit_dzien": {"type": "integer", "description": "Zadan na dobe"}, "aktywny": {"type": "boolean"}, "utworzono": {"type": "string", "description": "Data i czas ISO 8601 (czas lokalny instancji)", "format": "date-time"}, "ostatnio": {"type": ["string", "null"], "description": "Ostatnie uzycie"}}, "required": ["id", "nazwa", "zakres", "tryb"]}, "KluczAkcja": {"type": "object", "properties": {"akcja": {"type": "string", "enum": ["utworz", "cofnij", "przedluz", "limity", "rotuj", "ip"]}, "nazwa": {"type": "string", "description": "utworz: nazwa integracji"}, "zakres": {"type": "array", "items": {"type": "string", "enum": ["szanse", "zadania", "poczta", "finanse", "projekty", "raporty", "zespol", "ustawienia"]}, "description": "utworz"}, "tryb": {"type": "string", "enum": ["odczyt", "zapis"], "description": "utworz"}, "dni": {"type": "integer", "description": "utworz i przedluz: waznosc w dniach (utworz bez dni = bez terminu)", "minimum": 1, "maximum": 3650}, "limit_min": {"type": "integer", "description": "utworz i limity: zadan na minute (puste = 60)", "minimum": 1}, "limit_dzien": {"type": "integer", "description": "utworz i limity: zadan na dobe (puste = 10 000)", "minimum": 1}, "id": {"type": "integer", "description": "cofnij, przedluz, limity, rotuj, ip"}, "sandbox": {"type": "boolean", "description": "utworz: klucz testowy, dziala tylko na bazie demo z danymi przykladowymi"}}, "required": ["akcja"]}, "OdpowiedzMe": {"type": "object", "properties": {"ok": {"type": "boolean"}, "wersja_api": {"type": "string"}, "wycofanie": {"type": ["string", "null"], "description": "Data wycofania wersji albo null"}, "instancja": {"type": "object", "properties": {"nazwa": {"type": ["string", "null"]}, "adres": {"type": "string"}, "demo": {"type": "boolean", "description": "true, gdy zadanie dziala na danych demo (klucz testowy)"}}}, "klucz": {"type": "object", "properties": {"typ": {"type": "string", "enum": ["integracja", "sesja", "glowny", "odczyt"]}, "nazwa": {"type": ["string", "null"]}, "prefiks": {"type": ["string", "null"]}, "zakres": {"type": "array", "items": {"type": "string"}}, "tryb": {"type": "string", "enum": ["odczyt", "zapis"]}, "wygasa": {"type": ["string", "null"]}, "ostatnio": {"type": ["string", "null"]}, "sandbox": {"type": "boolean"}}}, "konto": {"type": ["string", "null"]}, "limity": {"type": "object", "properties": {"minuta": {"type": "object", "properties": {"limit": {"type": "integer"}, "pozostalo": {"type": "integer"}, "reset_s": {"type": "integer"}}}, "doba": {"type": ["object", "null"]}}}}, "required": ["ok", "wersja_api", "instancja", "klucz", "limity"]}, "OdpowiedzKlucze": {"type": "object", "properties": {"ok": {"type": "boolean"}, "klucz": {"type": "string", "description": "Tylko przy utworzeniu i tylko raz; w bazie zostaje skrot"}, "opis": {"$ref": "#/components/schemas/KluczIntegracji"}, "klucze": {"type": "array", "items": {"$ref": "#/components/schemas/KluczIntegracji"}}, "moduly": {"type": "array", "items": {"type": "object", "properties": {"klucz": {"type": "string"}, "nazwa": {"type": "string"}}}}}, "required": ["ok"]}}}, "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "paths": {"/api/leady": {"get": {"tags": ["Leady"], "summary": "Lista szans z filtrami", "operationId": "get_leady", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzLeady"}, "example": {"ok": true, "ile": 1, "ile_w_archiwum": 0, "ile_odlozonych": 0, "leady": [{"id": 17, "zrodlo": "reczne", "kanal": "reczny", "nazwa_kontaktu": "Jan Kowalski", "firma": "ACME Sp. z o.o.", "email": "jan@acme.pl", "tytul": "Kredyt dla firmy", "status": "w_trakcie", "etap": "nowe", "etap_reczny": false, "kwota": null, "opiekun": null, "organizacja_id": null, "pierwszy_kontakt": "2026-10-28T09:15:00"}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "status", "in": "query", "required": false, "description": "Status: w_trakcie, wygrany, przegrany, oferta_bez_odzewu", "schema": {"type": "string"}}, {"name": "etap", "in": "query", "required": false, "description": "Klucz etapu", "schema": {"type": "string"}}, {"name": "oczekiwanie", "in": "query", "required": false, "description": "Na kim stoi sprawa", "schema": {"type": "string"}}, {"name": "szukaj", "in": "query", "required": false, "description": "Szukany tekst (firma, kontakt, e-mail, tytul)", "schema": {"type": "string"}}, {"name": "zrodlo", "in": "query", "required": false, "description": "Zrodlo szansy", "schema": {"type": "string"}}, {"name": "opiekun", "in": "query", "required": false, "description": "Opiekun", "schema": {"type": "string"}}, {"name": "tag", "in": "query", "required": false, "description": "Tag", "schema": {"type": "string"}}, {"name": "od", "in": "query", "required": false, "description": "Pierwszy kontakt od (RRRR-MM-DD)", "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "description": "Pierwszy kontakt do (RRRR-MM-DD)", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "description": "Ile szans zwrocic", "schema": {"type": "string"}}, {"name": "po", "in": "query", "required": false, "description": "Kursor: id ostatniej szansy z poprzedniej strony", "schema": {"type": "string"}}, {"name": "zmienione_od", "in": "query", "required": false, "description": "Tylko zmienione od tej chwili (delta)", "schema": {"type": "string"}}]}, "post": {"tags": ["Leady"], "summary": "Nowa reczna szansa", "operationId": "post_leady", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzLead"}, "example": {"ok": true, "lead": {"id": 17, "zrodlo": "reczne", "kanal": "reczny", "nazwa_kontaktu": "Jan Kowalski", "firma": "ACME Sp. z o.o.", "email": "jan@acme.pl", "tytul": "Kredyt dla firmy", "status": "w_trakcie", "etap": "nowe", "etap_reczny": false, "kwota": null, "opiekun": null, "organizacja_id": null, "pierwszy_kontakt": "2026-10-28T09:15:00"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadNowy"}, "example": {"firma": "ACME Sp. z o.o.", "nazwa_kontaktu": "Jan Kowalski", "email": "jan@acme.pl", "tytul": "Kredyt dla firmy"}}}}}}, "/api/leady/{id}": {"get": {"tags": ["Leady"], "summary": "Karta szansy z notatkami, zadaniami i historia", "operationId": "get_leady_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzLead"}, "example": {"ok": true, "lead": {"id": 17, "zrodlo": "reczne", "kanal": "reczny", "nazwa_kontaktu": "Jan Kowalski", "firma": "ACME Sp. z o.o.", "email": "jan@acme.pl", "tytul": "Kredyt dla firmy", "status": "w_trakcie", "etap": "nowe", "etap_reczny": false, "kwota": null, "opiekun": null, "organizacja_id": null, "pierwszy_kontakt": "2026-10-28T09:15:00"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}, "patch": {"tags": ["Leady"], "summary": "Zmiana opiekuna, telefonu, nazwy kontaktu, odlozenia i pol wlasnych", "operationId": "patch_leady_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzLead"}, "example": {"ok": true, "lead": {"id": 17, "zrodlo": "reczne", "kanal": "reczny", "nazwa_kontaktu": "Jan Kowalski", "firma": "ACME Sp. z o.o.", "email": "jan@acme.pl", "tytul": "Kredyt dla firmy", "status": "w_trakcie", "etap": "nowe", "etap_reczny": false, "kwota": null, "opiekun": null, "organizacja_id": null, "pierwszy_kontakt": "2026-10-28T09:15:00"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadZmiana"}, "example": {"telefon": "+48600100200", "pola": {"kanal_zgloszenia": "telefon"}}}}}}}, "/api/leady/{id}/pliki": {"get": {"summary": "Pliki dolaczone do szansy (przeciagniecie na karte, zrzut ekranu)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Dodaje plik do szansy: nazwa z rozszerzeniem i dane w base64 (do 5 MB, 30 plikow na szanse)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "413": {"description": "Content Too Large", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "dane": {"type": "string"}}}}}}}}, "/api/leady/{id}/pliki/{plik}": {"get": {"summary": "Bajty pliku szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "delete": {"summary": "Usuwa plik szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/ankieta_panelu": {"get": {"summary": "Ankieta zadowolenia z panelu raz na kwartal: stan konta, a dla wlasciciela wyniki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Odpowiedz konta na ankiete kwartalna (ocena 1-5, komentarz)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ocena": {"type": "integer"}, "komentarz": {"type": "string"}}}}}}}}, "/api/audyt_dostepnosci": {"get": {"summary": "Ostatni audyt dostepnosci WCAG i termin kolejnego (raz w roku)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis wykonanego audytu dostepnosci (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wynik": {"type": "string"}, "uwagi": {"type": "string"}}}}}}}}, "/api/tekst": {"get": {"summary": "Tekstowa wersja panelu bez JavaScriptu (HTML) na wypadek awarii", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/banki": {"get": {"summary": "Slownik bankow instancji, banki dopisane we wnioskach i statusy wnioskow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/wnioski": {"get": {"summary": "Wnioski bankowe szansy z podsumowaniem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Nowy wniosek bankowy (bank, zlozono, kwota, status, warunki, uwagi, wazna_do tylko dla pozytywnej, powod_odmowy tylko dla negatywnej, prowizja_oczekiwana)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"bank": {"type": "string"}, "zlozono": {"type": "string"}, "kwota": {"type": "number"}, "status": {"type": "string"}, "decyzja_dnia": {"type": "string"}, "warunki": {"type": "string"}, "uwagi": {"type": "string"}, "wazna_do": {"type": "string"}, "powod_odmowy": {"type": "string"}, "prowizja_oczekiwana": {"type": "number"}}}}}}}}, "/api/leady/{id}/wnioski/{wid}": {"patch": {"summary": "Zmiana wniosku bankowego; wybrany=true to wybor klienta (tylko pozytywna decyzja); wazna_do (pozytywna), powod_odmowy (negatywna: bik, dochod, zatrudnienie, dti, inne), prowizja_oczekiwana", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "wid", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"bank": {"type": "string"}, "zlozono": {"type": "string"}, "kwota": {"type": "number"}, "status": {"type": "string"}, "decyzja_dnia": {"type": "string"}, "warunki": {"type": "string"}, "uwagi": {"type": "string"}, "wybrany": {"type": "boolean"}, "wazna_do": {"type": "string"}, "powod_odmowy": {"type": "string"}, "prowizja_oczekiwana": {"type": "number"}}}}}}}, "delete": {"summary": "Usuniecie wniosku bankowego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "wid", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/tlumacz": {"post": {"summary": "Tlumaczenie wiadomosci klienta modelem (pl, en, uk); nic nie zapisuje ani nie wysyla", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}, "na": {"type": "string"}}}}}}}}, "/api/leady/{id}/rozliczenia": {"get": {"summary": "Rozliczenie prowizji z bankiem dla wybranego wniosku: oczekiwana, otrzymana, do rozliczenia, wplywy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Wplyw prowizji od banku wybranego wniosku (kwota, wplynelo, uwagi); kwota ujemna to korekta", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kwota": {"type": "number"}, "wplynelo": {"type": "string"}, "uwagi": {"type": "string"}}}}}}}}, "/api/leady/{id}/rozliczenia/{rid}": {"delete": {"summary": "Usuniecie wplywu prowizji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/prompter": {"get": {"summary": "Stan prompteru rozmowy kredytowej: wlaczone i powod wylaczenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Plan rozmowy kredytowej modelem: 5 pytan, ryzyka i produkt z cytatami zrodel (tylko odczyt)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/analityka/prognoza": {"get": {"summary": "Prognoza przychodu z otwartych szans na biezacy miesiac i kwartal: kwota i wartosc wazona prawdopodobienstwem etapu z historii (zrodlo historia/domyslne), szanse bez terminu, model per etap", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/analityka/szansa": {"get": {"summary": "Predykcja wygranej (%) z wyjasnieniem cech, termin zamkniecia, rekomendacja ceny i pora kontaktu jednej szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/analityka/wydatki": {"get": {"summary": "Wydatki na reklame wpisane w Ustawieniach (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "put": {"summary": "Zastapienie listy wydatkow na reklame [{zrodlo, miesiac, kwota}] (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wydatki": {"type": "array"}}}}}}}}, "/api/analityka/tv": {"get": {"summary": "Dane pulpitu TV (strona /panel/tv.html)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/alerty": {"get": {"summary": "Alerty KPI: otwarte, dziennik z czasem reakcji, propozycje zmiany progu, progi z opisem domyslnych wartosci, aktualnosc importu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/alerty/progi": {"put": {"summary": "Progi alertow (spadek leadow, koszt leada, martwy import): wlaczony, prog, kanal powiadomienia (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"progi": {"type": "object"}}}}}}}}, "/api/alerty/reakcja": {"put": {"summary": "Reakcja na alert w dzienniku: podjeto albo ignoruj, z wynikiem (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "string"}, "reakcja": {"type": "string"}}}}}}}}, "/api/alerty/propozycja": {"put": {"summary": "Decyzja o propozycji zmiany progu po 3 zignorowanych alertach: przyjmij albo odrzuc (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"alert": {"type": "string"}, "akcja": {"type": "string"}}}}}}}}, "/api/raporty/zarzad": {"get": {"summary": "Lista raportow tygodniowych zarzadu (piatek-czwartek), generowanych automatycznie w piatek o 8:00 (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/raporty/zarzad/{dzien}": {"get": {"summary": "Pobranie raportu zarzadu z piatku RRRR-MM-DD (PDF albo HTML) (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/raporty/handlowiec": {"get": {"summary": "Raport tygodniowy handlowca na telefon bez kosztow (HTML albo format=json); osoba= tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "osoba", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/analityka/metryki": {"get": {"summary": "Metryki okresu (tydzien piatek-czwartek albo miesiac) z porownaniem do poprzedniego: nowe leady, mediana pierwszej odpowiedzi per kanal, konwersja etapow, wygrane i przychod per zrodlo", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "okres", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "data", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/analityka/aktywnosc": {"get": {"summary": "Aktywnosc zespolu na osobe (telefony, maile, wiadomosci, oferty, spotkania, zadania zamkniete, mediana odpowiedzi) za tydzien albo miesiac z porownaniem i wnioskiem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "okres", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "data", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/analityka/kohorty": {"get": {"summary": "Kohorty miesieczne: leady z miesiaca i ile wygralo po 30, 60 i 90 dniach, z wnioskiem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/analityka/benchmark": {"get": {"summary": "Anonimowy profil instancji i porownanie z profilami innych instancji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "put": {"summary": "Profile innych instancji do porownania (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"profile": {"type": "array"}}}}}}}}, "/api/analityka/hurtownia": {"get": {"summary": "Hurtownia danych: ZIP z CSV ukladu gwiazdy, schemat.sql i zaladuj.py (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/analityka/arkusz": {"get": {"summary": "Szanse jako CSV do Google Sheets (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/analityka/raport_tygodniowy": {"get": {"summary": "Raport tygodniowy dla zarzadu jako PDF albo HTML (format, data); tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "data", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/raport_miesieczny": {"get": {"summary": "Raport miesieczny dla wlasciciela jako PDF (miesiac=RRRR-MM, domyslnie ostatni pelny); tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/pomiar/panel": {"post": {"summary": "Core Web Vitals panelu z przegladarki uzytkownika: lcp, inp, cls, fcp, ttfb (ms; cls bez jednostki), szerokosc okna; podsumowanie p75 w GET /api/zdrowie (web_vitals)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lcp": {"type": "number"}, "inp": {"type": "number"}, "cls": {"type": "number"}, "fcp": {"type": "number"}, "ttfb": {"type": "number"}, "szerokosc": {"type": "number"}}}}}}}}, "/api/pomiar/klikniecia": {"post": {"summary": "Sumy klikniec w panelu po identyfikatorze przycisku (bez tresci formularzy); ranking w GET /api/zdrowie (klikniecia_panelu)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klikniecia": {"type": "object"}}}}}}}}, "/api/sms/do_wyslania": {"get": {"summary": "SMS-y czekajace na telefon zalogowanego doradcy (aplikacja FluxCRM Dzwonek; wymaga sesji konta)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/sms/{id}/wynik": {"post": {"summary": "Wynik wysylki SMS z telefonu doradcy: ok, blad; stan wyslana albo blad i zdarzenie sms kto=my", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "blad": {"type": "string"}}}}}}}}, "/api/leady/{id}/sms": {"get": {"summary": "SMS doradcy z karty: numer, gotowosc kanalu [sms], szablony z podstawionymi zmiennymi i SMS-y czekajace na decyzje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "SMS doradcy do kolejki akceptacji CRM (szablon albo tresc); nic nie wysyla, wysylka to Wyslij w /api/auto_odpowiedz/kolejka", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"szablon": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/dokumenty": {"get": {"summary": "Zestawy dokumentow instancji, stany pozycji i pole celu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/dokumenty": {"get": {"summary": "Lista dokumentow szansy, zestawy, zalaczniki z poczty i prosby", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Dopisanie zestawu (zestaw) albo jednej pozycji (nazwa)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"zestaw": {"type": "string"}, "nazwa": {"type": "string"}}}}}}}}, "/api/leady/{id}/dokumenty/{did}": {"patch": {"summary": "Stan dokumentu (brak, poproszono, otrzymano, odrzucono) i zalacznik z poczty", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "did", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"stan": {"type": "string"}, "zalacznik_id": {"type": "string"}, "nazwa": {"type": "string"}}}}}}}, "delete": {"summary": "Usuniecie pozycji z listy dokumentow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "did", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/liczby": {"get": {"summary": "Liczby: skad, czas odpowiedzi, wynik; z grupa=opiekun|zrodlo|kampania tabela per doradca, zrodlo albo kampania, z raport=lejek|przychod|przegrane|waskie_gardla|porownanie|odmowy|rozliczenia|prognozy|koszt_zrodel|handlowcy|klienci|anomalie|jakosc|co_zmienic|koszt_ai|jakosc_szkicow|koszt_kampanii|kohorty|ltv_kanalow|wyniki_kampanii|alerty raporty zakladek (handlowiec widzi tylko swoje); czekal.per_lead stronami (per_lead_od, per_lead_limit, per_lead_nastepny), mediana z calosci w czekal.mediana_odpowiedzi_min", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "grupa", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "raport", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "per_lead_od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "per_lead_limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/asystent": {"get": {"summary": "Asystent: pytanie w jezyku naturalnym -> odpowiedz modelu z linkami do szans (narzedzia tylko do odczytu; handlowiec widzi tylko swoje); bez pytania stan funkcji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "pytanie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/ai": {"get": {"summary": "Stan AI i licznik kosztow: dzis, miesiac, per zadanie, limity, czy wylaczone", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/ai/dziennik": {"get": {"summary": "Dziennik wywolan modelu: zadanie, wersja promptu, tokeny, czas, koszt, wynik", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "zadanie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/ai/prompty/{skrot}": {"get": {"summary": "Tresc instrukcji zapisanej w audycie promptow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/ai/tryb": {"post": {"summary": "Tryb AI instancji: wylaczona, zanonimizowane (domyslny, dane osobowe zastapione znacznikami) albo pelna (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tryb": {"type": "string"}}}}}}}}, "/api/leady/{id}/wycofaj_dane": {"post": {"summary": "Wycofanie wszystkich zgod klienta, wylaczenie kontaktu i wniosek o zapomnienie; anonimizacja w ciagu 24 h w cyklu automatu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"powod": {"type": "string"}}}}}}}}, "/api/ai/wylacznik": {"post": {"summary": "Czerwony przycisk: wylaczenie albo wlaczenie AI w instancji (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wylacz": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/podobne": {"get": {"summary": "Podobne wygrane sprawy (TF-IDF) z orientacyjnym przedzialem kwot", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/zgody": {"get": {"summary": "Rodzaje i zrodla zgod RODO oraz czy instancja ostrzega o braku zgody", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/zgody": {"get": {"summary": "Zgody RODO szansy i ostrzezenie o braku zgody na przetwarzanie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Zapis albo odnowienie zgody (rodzaj marketing, przetwarzanie, bik)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "zrodlo": {"type": "string"}, "kiedy": {"type": "string"}, "tresc_skrot": {"type": "string"}, "dowod": {"type": "string"}}}}}}}}, "/api/leady/{id}/zgody/{rodzaj}": {"patch": {"summary": "Wycofanie zgody (wycofana: true) albo cofniecie wycofania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "rodzaj", "in": "path", "required": true, "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wycofana": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie zapisu zgody", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "rodzaj", "in": "path", "required": true, "schema": {"type": "string"}}]}}, "/api/eksport": {"get": {"summary": "Eksport calosci danych CRM: format json (szanse z polami K2, zdarzeniami, notatkami, zadaniami, osobami, organizacjami, wnioskami, dokumentami i zgodami) albo zip (wszystkie tabele biznesowe jako CSV i JSON, pliki i historia, bez sekretow); tylko klucz pelny albo wlasciciel, wpis w audycie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/usun_dane": {"post": {"summary": "Usuniecie danych klienta: anonimizacja szansy (tylko klucz pelny albo wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"potwierdz": {"type": "boolean"}, "potwierdz_slowo": {"type": "string"}, "powod": {"type": "string"}, "data_zadania": {"type": "string"}}}}}}}}, "/api/leady/{id}/eksport_rodo": {"get": {"summary": "Wszystkie dane szansy do odpowiedzi na wniosek RODO: format json, html albo pdf (tylko klucz pelny albo wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/rodo/wnioski": {"get": {"summary": "Dziennik zadan RODO: data zadania, termin 30 dni, wykonanie (tylko klucz pelny albo wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/rodo/rejestr_czynnosci": {"get": {"summary": "Rejestr czynnosci przetwarzania z konfiguracji instancji, format json, html albo pdf (tylko klucz pelny albo wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/dokumenty/popros": {"post": {"summary": "Szkic prosby o brakujace dokumenty do kolejki akceptacji (nic nie wysyla)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kanaly": {"type": "array"}, "ponow": {"type": "boolean"}}}}}}}}, "/api/reguly": {"get": {"summary": "Reguly automatyczne: z pliku konfiguracji (tylko odczyt) i z panelu, katalog warunkow, akcji i wzorcow, ostatni dziennik", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowa regula z panelu (warunek z listy + parametry, akcja z listy); domyslnie nieaktywna, tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "warunek": {"type": "string"}, "warunek_parametry": {"type": "object"}, "akcja": {"type": "string"}, "parametry": {"type": "object"}, "aktywna": {"type": "boolean"}}}}}}}}, "/api/reguly/{id}": {"put": {"summary": "Zmiana reguly z panelu, takze wlaczenie i wylaczenie (aktywna)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "warunek": {"type": "string"}, "warunek_parametry": {"type": "object"}, "akcja": {"type": "string"}, "parametry": {"type": "object"}, "aktywna": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie reguly z panelu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/webhooki": {"get": {"tags": ["Webhooki"], "summary": "Webhooki (bez sekretow), katalog zdarzen i dziennik dostaw", "operationId": "get_webhooki", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWebhooki"}, "example": {"ok": true, "webhooki": [{"id": 3, "nazwa": "n8n", "url": "https://example.com/hook", "zdarzenia": ["nowy_lead", "wygrana"], "aktywny": true, "ma_sekret": true, "utworzono": "2026-10-28T09:00:00", "ostatnia": null, "filtr_zrodla": [], "filtr_etapy": [], "lekki": false, "wstrzymany": null, "wstrzymanie_powod": null, "bledy_z_rzedu": 0}], "zdarzenia": [{"klucz": "nowy_lead", "nazwa": "Nowy lead"}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}, "post": {"tags": ["Webhooki"], "summary": "Nowy webhook; sekret podpisu HMAC-SHA256 zwracany raz", "operationId": "post_webhooki", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWebhooki"}, "example": {"ok": true, "id": 3, "sekret": "whsec_example", "webhooki": [{"id": 3, "nazwa": "n8n", "url": "https://example.com/hook", "zdarzenia": ["nowy_lead", "wygrana"], "aktywny": true, "ma_sekret": true, "utworzono": "2026-10-28T09:00:00", "ostatnia": null, "filtr_zrodla": [], "filtr_etapy": [], "lekki": false, "wstrzymany": null, "wstrzymanie_powod": null, "bledy_z_rzedu": 0}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookNowy"}, "example": {"nazwa": "n8n", "url": "https://example.com/hook", "zdarzenia": ["nowy_lead"]}}}}}}, "/api/webhooki/{id}": {"put": {"tags": ["Webhooki"], "summary": "Zmiana webhooka, wlaczenie i wylaczenie, nowy_sekret odnawia sekret", "operationId": "put_webhooki_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWebhooki"}, "example": {"ok": true, "id": 3, "webhooki": [{"id": 3, "nazwa": "n8n", "url": "https://example.com/hook", "zdarzenia": ["nowy_lead", "wygrana"], "aktywny": true, "ma_sekret": true, "utworzono": "2026-10-28T09:00:00", "ostatnia": null, "filtr_zrodla": [], "filtr_etapy": [], "lekki": false, "wstrzymany": null, "wstrzymanie_powod": null, "bledy_z_rzedu": 0}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookNowy"}, "example": {"nazwa": "n8n", "url": "https://example.com/hook", "zdarzenia": ["wygrana"], "aktywny": false}}}}}, "delete": {"tags": ["Webhooki"], "summary": "Usuniecie webhooka razem z dziennikiem dostaw", "operationId": "delete_webhooki_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWebhooki"}, "example": {"ok": true, "webhooki": []}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/webhooki/{id}/test": {"post": {"tags": ["Webhooki"], "summary": "Wysyla od razu zdarzenie test i zwraca wpis dziennika z kodem odpowiedzi", "operationId": "post_webhooki_id_test", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWebhooki"}, "example": {"ok": true, "webhooki": [{"id": 3, "nazwa": "n8n", "url": "https://example.com/hook", "zdarzenia": ["nowy_lead", "wygrana"], "aktywny": true, "ma_sekret": true, "utworzono": "2026-10-28T09:00:00", "ostatnia": null, "filtr_zrodla": [], "filtr_etapy": [], "lekki": false, "wstrzymany": null, "wstrzymanie_powod": null, "bledy_z_rzedu": 0}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/importy/partie": {"get": {"summary": "Ostatnie partie importu CSV/XLSX: etykieta, plik, liczba utworzonych szans, stan i wynik cofniecia; tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/import/crm": {"post": {"summary": "Kreator importu z Pipedrive, HubSpot i Zoho CRM (pliki CSV/xlsx base64 albo zrodlo_api z tokenem): podglad (domyslnie, nic nie zapisuje; liczby, mapowanie kolumn, etapow i wlascicieli, duplikaty po mailu i telefonie, bledy) albo zapis jako jedna partia z cofaniem; token nie jest zapisywany; tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/importy/partie/{id}/cofnij": {"post": {"summary": "Cofa caly import: kopia bazy, potem usuniecie tylko szans, osob i firm utworzonych ta partia (szanse z dalsza historia handlowa zostaja); tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/webhooki/dostawy/{id}/ponow": {"post": {"tags": ["Webhooki"], "summary": "Wysyla dostawe ponownie, ten sam ladunek i ten sam id_dostawy", "operationId": "post_webhooki_dostawy_id_ponow", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWebhooki"}, "example": {"ok": true, "webhooki": [{"id": 3, "nazwa": "n8n", "url": "https://example.com/hook", "zdarzenia": ["nowy_lead", "wygrana"], "aktywny": true, "ma_sekret": true, "utworzono": "2026-10-28T09:00:00", "ostatnia": null, "filtr_zrodla": [], "filtr_etapy": [], "lekki": false, "wstrzymany": null, "wstrzymanie_powod": null, "bledy_z_rzedu": 0}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/reguly/test": {"post": {"summary": "Test reguly na historii: co by odpalila w ostatnich N dniach (id, wzorzec albo regula; na sucho, nic nie wykonuje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "wzorzec": {"type": "string"}, "regula": {"type": "object"}, "dni": {"type": "integer"}}}}}}}}, "/api/widoki": {"get": {"summary": "Zapisane widoki listy zalogowanego uzytkownika (nazwa, filtry, domyslny)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis widoku pod nazwa (nadpisuje widok o tej samej nazwie), opcjonalnie jako domyslny", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "dane": {"type": "object"}, "domyslny": {"type": "boolean"}}}}}}}}, "/api/widoki/{id}": {"put": {"summary": "Zmiana nazwy, filtrow albo domyslnego widoku (domyslny true/false)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "dane": {"type": "object"}, "domyslny": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie widoku uzytkownika", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/raporty-widokow": {"get": {"summary": "Raporty z zapisanych widokow (bez wierszy) i widoki z harmonogramem zalogowanego uzytkownika", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/raporty-widokow/{id}": {"get": {"summary": "Pelny raport widoku: kolumny, wiersze, podsumowanie i zmiany wzgledem poprzedniego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "delete": {"summary": "Usuniecie raportu widoku", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/raporty-widokow/{id}/eksport": {"get": {"summary": "Plik raportu widoku: csv, xlsx albo pdf", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/raporty-widokow/lista": {"get": {"summary": "Plik biezacej listy wg filtrow widoku (dane = JSON widoku): csv, xlsx albo pdf", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dane", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "nazwa", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/raporty-widokow/generuj": {"post": {"summary": "Raport zapisanego widoku teraz", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"widok_id": {"type": "integer"}}}}}}}}, "/api/raporty-widokow/harmonogram": {"post": {"summary": "Harmonogram raportu widoku: dzien, tydzien:0-6, miesiac:1-28 albo pusty (wylacza)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"widok_id": {"type": "integer"}, "harmonogram": {"type": "string"}}}}}}}}, "/api/jakosc/email": {"get": {"summary": "Walidacja adresu e-mail: skladnia, domena (MX), adres wlasny, jednorazowy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "adres", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/jakosc/stop": {"get": {"summary": "Stop-lista z panelu: adresy, domeny i numery, z ktorymi nie kontaktujemy sie wcale", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Dopisanie wpisu do stop-listy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "wartosc": {"type": "string"}, "powod": {"type": "string"}}}}}}}}, "/api/jakosc/stop/{id}": {"delete": {"summary": "Usuniecie wpisu ze stop-listy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/jakosc/spam": {"get": {"summary": "Stan filtra spamu (probki, prog) i szanse podejrzane o spam", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/jakosc/leady": {"get": {"summary": "Szanse z ostrzezeniami o danych, od najnizszej oceny", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "max", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/jakosc/raport": {"get": {"summary": "Raport jakosci danych za tydzien (domyslnie najnowszy), lista tygodni i tekst", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "tydzien", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Liczy raport jakosci danych od nowa (domyslnie za ostatni zakonczony tydzien)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tydzien": {"type": "string"}}}}}}}}, "/api/jakosc/cykl": {"post": {"summary": "Jednorazowy cykl jakosci: MX nowych domen, przeglad spamu, firmy z NIP, raport tygodnia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/jakosc/osoby/propozycje": {"get": {"summary": "Pary osob z roznymi adresami, ktore wygladaja na jednego czlowieka", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/jakosc/osoby/polacz": {"post": {"summary": "Scalenie osoby z wielu adresow w jedna", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"do": {"type": "integer"}, "z": {"type": "integer"}}}}}}}}, "/api/jakosc/osoby/{id}/adresy": {"get": {"summary": "Adres glowny i dodatkowe adresy osoby", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Dopisanie adresu dodatkowego osoby", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"adres": {"type": "string"}}}}}}}}, "/api/leady/{id}/jakosc": {"get": {"summary": "Ocena, ostrzezenia, jezyk klienta, podpisy z maili i zalaczniki szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/spam": {"post": {"summary": "Decyzja spam albo nie spam (uczy filtr), opcjonalnie adres na stop-liste", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"spam": {"type": "boolean"}, "stop": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/podpisy": {"post": {"summary": "Dopisanie danych z podpisu nadawcy jego osobie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"adres": {"type": "string"}}}}}}}}, "/api/leady/{id}/tlumacz_rozmowe": {"post": {"summary": "Tlumaczenie ostatnich wiadomosci klienta jednym wywolaniem modelu (nic nie zapisuje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"na": {"type": "string"}}}}}}}}, "/api/leady/{id}/firma_www": {"post": {"summary": "Telefon i NIP firmy szansy ze strony www firmy (tylko puste pola)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/nip": {"post": {"summary": "Firma szansy z wykazu MF (NIP z wiadomosci albo podany)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nip": {"type": "string"}}}}}}}}, "/api/leady/{id}/zalaczniki/{poczta}/{numer}": {"get": {"summary": "Tresc zalacznika maila szansy (obraz inline, reszta do pobrania)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/pola": {"get": {"tags": ["Etapy i pola wlasne"], "summary": "Definicje pol wlasnych sprawy (klucz, tytul, typ, opcje)", "operationId": "get_pola", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": null, "modul_nazwa": null, "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzPola"}, "example": {"ok": true, "pola": [{"klucz": "kanal_zgloszenia", "tytul": "Kanal zgloszenia", "typ": "lista", "opcje": ["telefon", "www"]}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}}, "/api/lejki": {"get": {"summary": "Lejki sprzedazy instancji z etapami ([lejek] to lejek domyslny, [[lejki]] kolejne)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/lejek": {"post": {"summary": "Przeniesienie szansy do innego lejka; etap spoza nowego lejka zamienia sie na jego pierwszy etap", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lejek": {"type": "string"}}}}}}}}, "/api/leady/{id}/etap": {"post": {"tags": ["Leady"], "summary": "Reczna zmiana etapu lejka (etap auto wraca do wyliczanego)", "operationId": "post_leady_id_etap", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzLead"}, "example": {"ok": true, "lead": {"id": 17, "zrodlo": "reczne", "kanal": "reczny", "nazwa_kontaktu": "Jan Kowalski", "firma": "ACME Sp. z o.o.", "email": "jan@acme.pl", "tytul": "Kredyt dla firmy", "status": "w_trakcie", "etap": "w_rozmowie", "etap_reczny": true, "kwota": null, "opiekun": null, "organizacja_id": null, "pierwszy_kontakt": "2026-10-28T09:15:00"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadEtap"}, "example": {"etap": "w_rozmowie"}}}}}}, "/api/leady/{id}/status": {"post": {"tags": ["Leady"], "summary": "Reczny status szansy", "operationId": "post_leady_id_status", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzLead"}, "example": {"ok": true, "lead": {"id": 17, "zrodlo": "reczne", "kanal": "reczny", "nazwa_kontaktu": "Jan Kowalski", "firma": "ACME Sp. z o.o.", "email": "jan@acme.pl", "tytul": "Kredyt dla firmy", "status": "wygrany", "etap": "nowe", "etap_reczny": false, "kwota": null, "opiekun": null, "organizacja_id": null, "pierwszy_kontakt": "2026-10-28T09:15:00"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadStatus"}, "example": {"status": "wygrany"}}}}}}, "/api/leady/{id}/notatki": {"get": {"tags": ["Notatki"], "summary": "Notatki szansy", "operationId": "get_leady_id_notatki", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzNotatkiZadania"}, "example": {"ok": true, "lead_id": 17, "notatki": [{"id": 5, "lead_id": 17, "kiedy": "2026-10-28T09:20:00", "autor": "zapier", "tresc": "Klient prosi o telefon po 15:00."}], "zadania": []}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}, "post": {"tags": ["Notatki"], "summary": "Nowa notatka (autor: nazwa klucza)", "operationId": "post_leady_id_notatki", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzNotatkiZadania"}, "example": {"ok": true, "lead_id": 17, "notatki": [{"id": 5, "lead_id": 17, "kiedy": "2026-10-28T09:20:00", "autor": "zapier", "tresc": "Klient prosi o telefon po 15:00."}], "zadania": [], "id": 5}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotatkaNowa"}, "example": {"tresc": "Klient prosi o telefon po 15:00."}}}}}}, "/api/leady/{id}/zadania": {"get": {"tags": ["Zadania"], "summary": "Zadania jednej szansy", "operationId": "get_leady_id_zadania", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzNotatkiZadania"}, "example": {"ok": true, "lead_id": 17, "notatki": [], "zadania": [{"id": 9, "lead_id": 17, "utworzono": "2026-10-28T09:21:00", "termin": "2026-10-30", "tresc": "Oddzwonic w sprawie oferty", "autor": "zapier", "zrobione": null, "zalegle": false, "priorytet": 2}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}, "post": {"tags": ["Zadania"], "summary": "Nowe zadanie z terminem (autor: nazwa klucza)", "operationId": "post_leady_id_zadania", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzNotatkiZadania"}, "example": {"ok": true, "lead_id": 17, "notatki": [], "zadania": [{"id": 9, "lead_id": 17, "utworzono": "2026-10-28T09:21:00", "termin": "2026-10-30", "tresc": "Oddzwonic w sprawie oferty", "autor": "zapier", "zrobione": null, "zalegle": false, "priorytet": 2}], "id": 9}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ZadanieNowe"}, "example": {"tresc": "Oddzwonic w sprawie oferty", "termin": "2026-10-30"}}}}}}, "/api/leady/{id}/powtorka": {"get": {"summary": "Ostrzezenie przed wyslaniem: ta sama tresc wyszla albo czeka jako szkic w ostatnich 24 h (parametr tresc)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "tresc", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "To samo ostrzezenie z trescia w ciele (nic nie zapisuje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/zadania": {"get": {"tags": ["Zadania"], "summary": "Zadania wszystkich szans", "operationId": "get_zadania", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "zadania", "modul_nazwa": "Zadania, kalendarz i dzwonki", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzZadania"}, "example": {"ok": true, "zakres": "wszystkie", "ile": 1, "ile_zaleglych": 0, "zadania": [{"id": 9, "lead_id": 17, "utworzono": "2026-10-28T09:21:00", "termin": "2026-10-30", "tresc": "Oddzwonic w sprawie oferty", "autor": "zapier", "zrobione": null, "zalegle": false, "priorytet": 2}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "zakres", "in": "query", "required": false, "description": "dzis, zalegle, otwarte albo wszystkie", "schema": {"type": "string"}}]}}, "/api/odpowiedzi/macierz": {"get": {"summary": "Macierz zrodlo kontra kanal odpowiedzi z karty: leady z kanalem i bez (powod, akcja), wylaczone kanaly", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/odpowiedzi/raport": {"get": {"summary": "Raport odpowiedzi per zrodlo: odsetek leadow z odpowiedzia z karty (cel 90%), odpowiedzi poza CRM per kanal", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/kanal_odpowiedzi": {"post": {"summary": "Wybor kanalu odpowiedzi z karty zapisany w preferencje_klienta (nic nie wysyla)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kanal": {"type": "string"}}}}}}}}, "/api/leady/{id}/odpowiedz": {"post": {"summary": "Szkic odpowiedzi do kolejki akceptacji (nic nie wysyla)", "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/leady/{id}/odpowiedz/podglad": {"post": {"summary": "Podglad szkicu odpowiedzi po zmianie kanalu (skrocony SMS, limity portali)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}, "kanal": {"type": "string"}}}}}}}}, "/api/leady/{id}/wysylki": {"get": {"summary": "Stan szkicow i wysylek odpowiedzi leada: w kolejce, zatwierdzone, wyslane, blad z przyczyna", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/wysylki/{klucz}/ponow": {"post": {"summary": "Ponowienie nieudanej wysylki odpowiedzi", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/dziennik_kanalow": {"get": {"summary": "Dziennik kanalow leada z filtrem po kanale (kanal)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "kanal", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/tagi": {"get": {"summary": "Tagi z liczbami, kolorem i paleta kolorow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/tagi/kolor": {"put": {"summary": "Kolor tagu z palety (null zdejmuje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tag": {"type": "string"}, "kolor": {"type": "string"}}}}}}}}, "/api/leady/{id}/oferta_pdf": {"get": {"summary": "Oferta PDF szansy: wersje z sumami i marza (tylko tu), aktywny katalog i wartosci domyslne formularza", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Nowa wersja oferty PDF (pozycje z katalogu albo reczne, ilosc, cena, rabat, VAT, waznosc, warunki) i zadanie przypomnienia dzien przed wygasnieciem; nic nie wysyla", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"pozycje": {"type": "array"}, "vat": {"type": "number"}, "waznosc_dni": {"type": "integer"}, "waznosc_do": {"type": "string"}, "warunki": {"type": "string"}, "uwagi": {"type": "string"}, "tytul": {"type": "string"}, "waluta": {"type": "string"}}}}}}}}, "/api/leady/{id}/oferta_pdf/{wersja}/pdf": {"get": {"summary": "PDF wersji oferty (HTML -> Chrome headless), bez kosztow i marzy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/portal": {"get": {"summary": "Portal klienta szansy: logowania, linki, wiadomosci, pliki, udostepnione oferty i proformy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/portal/link": {"post": {"summary": "SZKIC linku do portalu klienta w kolejce akceptacji (nic nie wysyla)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kanaly": {"type": "array"}}}}}}}}, "/api/leady/{id}/portal/wiadomosc": {"post": {"summary": "Odpowiedz doradcy w czacie portalu klienta", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/leady/{id}/portal/udostepnij": {"post": {"summary": "Oferta (wersja) albo proforma (id) widoczna w portalu klienta; cofnij ukrywa", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"oferta": {"type": "integer"}, "proforma": {"type": "integer"}, "cofnij": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/portal/pliki/{pid}": {"get": {"summary": "Plik wgrany przez klienta w portalu (bajty)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "pid", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/poczta/profil": {"get": {"summary": "Profil nadawcy i podpis (HTML i tekst) wlasny albo wskazany loginem (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}, "put": {"summary": "Zapis adresu nadawcy, nazwy i podpisu (HTML czyszczony, tekst wyliczany z drugiej wersji)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "adres_od": {"type": "string"}, "nazwa_od": {"type": "string"}, "podpis_html": {"type": "string"}, "podpis_tekst": {"type": "string"}}}}}}}}, "/api/poczta/wychodzace": {"get": {"summary": "Kolejka maili wychodzacych z CRM (szkic, zaplanowana, wyslana, blad, odrzucona)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowy mail z CRM: szablon HTML z logo i stopka, podpis, zalaczniki (oferta PDF, biblioteka, wgrany plik); wyslij=true wysyla od razu, zaplanowano=RRRR-MM-DDTGG:MM ustawia godzine, inaczej szkic", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "do": {"type": "string"}, "temat": {"type": "string"}, "tresc": {"type": "string"}, "szablon": {"type": "string"}, "zalaczniki": {"type": "array"}, "zaplanowano": {"type": "string"}, "wyslij": {"type": "boolean"}, "bez_podpisu": {"type": "boolean"}, "mimo_blokady": {"type": "boolean"}}}}}}}}, "/api/poczta/podglad": {"post": {"summary": "Podglad maila (HTML, tekst, nadawca, zalaczniki) bez zapisu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "temat": {"type": "string"}, "tresc": {"type": "string"}, "szablon": {"type": "string"}, "zalaczniki": {"type": "array"}}}}}}}}, "/api/poczta/wychodzace/{id}": {"post": {"summary": "Decyzja o mailu z kolejki CRM: akcja wyslij, odrzuc albo zaplanuj (+ zaplanowano)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "zaplanowano": {"type": "string"}}}}}}}}, "/api/poczta/szkic": {"post": {"summary": "Szkic odpowiedzi do klienta modelem w wybranym tonie (formalny, przyjazny, zwiezly, stanowczy, sprzedazowy); nic nie wysyla ani nie zapisuje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "ton": {"type": "string"}, "wskazowka": {"type": "string"}}}}}}}}, "/api/poczta/tlumacz": {"post": {"summary": "Tlumaczenie tresci maila modelem przed wysylka (en, de, fr, es, it, uk, pl); nic nie zapisuje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}, "jezyk": {"type": "string"}}}}}}}}, "/api/poczta/dns": {"get": {"summary": "Kontrola SPF, DKIM i DMARC domeny nadawcy (zapytania DNS) z czytelnymi uwagami; nadawcy=1 sprawdza wszystkie domeny nadawcze (wynik pass albo fail)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "domena", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "nadawcy", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/poczta/dostarczalnosc": {"get": {"summary": "Raport dostarczalnosci: wyslane, odbicia twarde i miekkie, autorespondery, wypisy, wg dni i nadawcow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/watek": {"get": {"summary": "Watek maili szansy ze wszystkich skrzynek, bez cytatow, ze znacznikami autorespondera i odbic", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/watek/archiwizuj": {"post": {"summary": "Archiwizacja watku w skrzynce przez IMAP (tylko gdy [poczta_wysylka] archiwum_imap)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"temat": {"type": "string"}}}}}}}}, "/api/nowosci": {"get": {"summary": "Notatki wydan (co nowego po aktualizacji); od=RRRR-MM-DD zwraca tylko nowsze", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/nowosci/przeczytane": {"post": {"summary": "Zamkniecie okna Co nowego: zapamietuje dla uzytkownika date najnowszego wydania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"data": {"type": "string"}}}}}}}}, "/api/pomoc/czat": {"post": {"summary": "Czat wsparcia w panelu: odpowiedz z bazy wiedzy albo uwaga do opiekuna wdrozenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"pytanie": {"type": "string"}}}}}}}}, "/api/plan": {"get": {"summary": "Plan instancji: nazwa, limit i zuzycie kont, koniec okresu, ostrzezenie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala": {"get": {"summary": "Operator skali: przeglad floty, pojemnosci, miernikow i wsparcia (wlasciciel, tryb operatora)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/plany": {"get": {"summary": "Plany, dodatki, kraje, branze, integracje i wycena per liczba kont", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "plan", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "uzytkownicy", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dodatki", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "okres", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/flota": {"get": {"summary": "Rejestr instancji floty", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "status", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowa instancja w rejestrze (planowana)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klient": {"type": "string"}, "firma": {"type": "string"}, "domena": {"type": "string"}, "plan": {"type": "string"}}}}}}}}, "/api/skala/flota/manifest": {"post": {"summary": "Uzgodnienie rejestru z manifestem floty", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"instancje": {"type": "array"}}}}}}}}, "/api/skala/flota/stan": {"get": {"summary": "Stan zywych instancji (odswiez=1 odpytuje /api/zdrowie)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "odswiez", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/flota/pojemnosc": {"get": {"summary": "Zajetosc VPS i potrzeby na docelowa liczbe instancji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "docelowo", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/flota/skrypt": {"get": {"summary": "Skrypt zakladania planowanych instancji z limitami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "ref", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/flota/aktualizacja": {"get": {"summary": "Plan zbiorczej aktualizacji falami w oknie serwisowym", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "ref", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/flota/{klient}": {"post": {"summary": "Zmiana pol instancji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/wsparcie": {"get": {"summary": "Zgloszenia wsparcia z SLA i statystykami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "status", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowe zgloszenie; agent odpowiada z bazy wiedzy albo eskaluje", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"temat": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/skala/wsparcie/eskalacja": {"post": {"summary": "Awans zgloszen po terminie SLA", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/wsparcie/{id}": {"post": {"summary": "Odpowiedz klienta albo czlowieka, rozwiazanie, nie_pomoglo", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/skala/wiedza": {"get": {"summary": "Baza wiedzy z wyszukiwarka", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/wiedza/{klucz}": {"post": {"summary": "Zapis artykulu bazy wiedzy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/skala/rozliczenia": {"get": {"summary": "Abonamenty, faktury i rezygnacje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/rozliczenia/abonament/{klient}": {"post": {"summary": "Zawarcie albo zmiana abonamentu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"plan": {"type": "string"}, "uzytkownicy": {"type": "integer"}}}}}}}}, "/api/skala/rozliczenia/faktury": {"post": {"summary": "Faktury abonamentowe za miesiac RRRR-MM", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"miesiac": {"type": "string"}}}}}}}}, "/api/skala/rozliczenia/rezygnacja/{klient}": {"post": {"summary": "Rezygnacja z planem offboardingu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"powod": {"type": "string"}}}}}}}}, "/api/skala/rozliczenia/eksport/{klient}": {"post": {"summary": "Pobranie eksportu danych wypowiadajacego klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"katalog": {"type": "string"}}}}}}}}, "/api/skala/mierniki": {"get": {"summary": "MRR, ARR, churn, LTV i NPS", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/plan-finansowy": {"get": {"summary": "Plan finansowy produktu na 24 miesiace i rekomendacja finansowania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/partnerzy": {"get": {"summary": "Partnerzy wdrozeniowi i marka produktu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy partner; klucz API widac raz", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klucz": {"type": "string"}, "nazwa": {"type": "string"}}}}}}}}, "/api/skala/strona": {"get": {"summary": "HTML strony produktu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "kontakt", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/rejestracja": {"get": {"summary": "Triale 14-dniowe z dniami do konca", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Rejestracja z trialem: instancja planowana i trial 14 dni", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"firma": {"type": "string"}, "email": {"type": "string"}}}}}}}}, "/api/skala/rejestracja/{klient}/konwersja": {"post": {"summary": "Konwersja triala na abonament", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/rejestracja/{klient}/zaloz": {"post": {"summary": "Plan zalozenia instancji; wykonaj: true uruchamia go przy [skala] provisioning", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wykonaj": {"type": "boolean"}}}}}}}}, "/api/skala/platnosci/{klient}": {"post": {"summary": "Sesja platnosci kartowej Stripe Checkout dla faktury albo subskrypcji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"faktura": {"type": "string"}, "wyslij": {"type": "boolean"}}}}}}}}, "/api/skala/cykl": {"post": {"summary": "Cykl dobowy: faktury biezacego miesiaca, zaleglosci, zamkniecie trialow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"stripe": {"type": "boolean"}}}}}}}}, "/api/skala/beta": {"get": {"summary": "Program beta: funkcje i uczestnicy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/beta/{funkcja}": {"post": {"summary": "Zapis funkcji beta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}}}}}}}}, "/api/skala/beta/{funkcja}/zapis": {"post": {"summary": "Zapis klienta do programu beta funkcji", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klient": {"type": "string"}}}}}}}}, "/api/skala/referencje": {"get": {"summary": "Referencje opublikowane za zgoda klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/referencje/{klucz}": {"post": {"summary": "Zapis referencji (wymaga zgoda: true)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klient": {"type": "string"}, "cytat": {"type": "string"}, "ocena": {"type": "integer"}, "zgoda": {"type": "boolean"}}}}}}}}, "/api/skala/materialy/studium": {"post": {"summary": "Studium przypadku z raportu pilotazu klienta", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klient": {"type": "string"}, "branza": {"type": "string"}, "pilotaz": {"type": "object"}}}}}}}}, "/api/skala/materialy/wideo": {"get": {"summary": "Scenariusze wideo i szkolen", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/materialy/wideo/{klucz}": {"get": {"summary": "Scenariusz wideo ze scenami i napisami SRT", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/materialy/newsletter": {"get": {"summary": "Szkice newslettera Co nowego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Szkic newslettera z notatek wydan", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"od": {"type": "string"}}}}}}}}, "/api/skala/certyfikaty": {"get": {"summary": "Gotowosc do ISO 27001: kontrole, dowody w kodzie, luki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/certyfikaty/{kontrola}": {"post": {"summary": "Reczne potwierdzenie kontroli ISO 27001", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"status": {"type": "string"}, "dowod": {"type": "string"}}}}}}}}, "/api/skala/operacje/metryki": {"get": {"summary": "Metryki, progi alertow i zdrowie importow wszystkich instancji floty", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/operacje/logi": {"get": {"summary": "Przeszukiwanie logow klienta bez ssh (klient, fraza, poziom, limit)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "klient", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "fraza", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "poziom", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/operacje/status-strony": {"get": {"summary": "Publiczna strona statusu (HTML w polu html)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/operacje/tokeny": {"get": {"summary": "Rejestr tokenow z liczba dni do wygasniecia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Rejestracja daty wygasniecia tokenu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "wygasa": {"type": "string"}}}}}}}}, "/api/skala/operacje/dyzur": {"get": {"summary": "Dziennik dyzuru: alerty, potwierdzenia, eskalacje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/operacje/dyzur/{numer}/potwierdz": {"post": {"summary": "Potwierdzenie alertu (zatrzymuje eskalacje alarmem)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/operacje/sla": {"get": {"summary": "SLA miesieczne per instancja (cel 99,5 procent)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/operacje/incydenty": {"get": {"summary": "Przeglad miesiaca rejestru incydentow: liczba, czas, MTTR, brak przyczyny", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/skala/operacje/incydenty/{numer}/opis": {"post": {"summary": "Przyczyna i poprawka incydentu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"przyczyna": {"type": "string"}, "poprawka": {"type": "string"}}}}}}}}, "/api/skala/operacje/przeglad": {"post": {"summary": "Oznaczenie przegladu incydentow miesiaca", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"miesiac": {"type": "string"}, "uwagi": {"type": "string"}}}}}}}}, "/api/wdrozenie": {"get": {"summary": "Wdrozenie u klienta: ankieta, checklisty, kontakty, pilot, uwagi, zadowolenie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wdrozenie/konfigurator": {"get": {"summary": "instancja.toml i polecenie zalozenia instancji z ankiety", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wdrozenie/pilot": {"get": {"summary": "Przeglad i raport pilotazu wzgledem miernikow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Start pilotazu i mierniki sukcesu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"start": {"type": "string"}, "mierniki": {"type": "array"}}}}}}}}, "/api/wdrozenie/uwagi": {"get": {"summary": "Uwagi klienta od najpilniejszej", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "tydzien", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowa uwaga klienta", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/wdrozenie/dokumentacja": {"get": {"summary": "Dokumentacja instancji w Markdown", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wdrozenie/ankieta": {"post": {"summary": "Zapis odpowiedzi ankiety przedwdrozeniowej", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"odpowiedzi": {"type": "object"}}}}}}}}, "/api/wdrozenie/checklista": {"post": {"summary": "Odhaczenie pozycji checklisty (tydzien, rodo, offboarding) albo podpis RODO", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lista": {"type": "string"}, "pozycja": {"type": "integer"}, "zrobione": {"type": "boolean"}}}}}}}}, "/api/wdrozenie/kontakt": {"post": {"summary": "Opiekun wdrozenia i kontakt awaryjny", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rola": {"type": "string"}, "nazwa": {"type": "string"}, "kanal": {"type": "string"}}}}}}}}, "/api/wdrozenie/uwagi/{id}": {"post": {"summary": "Status i priorytet uwagi", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/wdrozenie/szkolenie": {"get": {"summary": "Agenda szkolenia 1 h z kontami instancji, napisy SRT i zapisane nagrania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis szkolenia z linkiem do nagrania (odhacza pozycje checklisty)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"data": {"type": "string"}, "nagranie_url": {"type": "string"}, "prowadzacy": {"type": "string"}}}}}}}}, "/api/wdrozenie/rozszerzenie": {"get": {"summary": "Plan rozszerzenia: zuzycie planu, zrodla do podpiecia, kolejny plan", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wdrozenie/po-pilotazu": {"get": {"summary": "Projekt umowy i pierwszej proformy po pilotazu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "plan", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/wdrozenie/dostepy": {"get": {"summary": "Audyt kluczy i hasel: tryb plikow, jawne sekrety w konfiguracji, rejestr dostepow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wdrozenie/dostep": {"post": {"summary": "Rejestr miejsca przechowywania dostepu (sejf), bez wartosci sekretu", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"system": {"type": "string"}, "gdzie": {"type": "string"}, "wlasciciel": {"type": "string"}}}}}}}}, "/api/wdrozenie/odbior": {"get": {"summary": "Wyniki testow odbiorczych (SPF, formularz, centralka, aplikacje) i urzadzen", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Uruchomienie testu odbiorczego", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"test": {"type": "string"}}}}}}}}, "/api/wdrozenie/urzadzenie": {"post": {"summary": "Reczne potwierdzenie aplikacji na telefonie doradcy", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "urzadzenie": {"type": "string"}, "dziala": {"type": "boolean"}}}}}}}}, "/api/wdrozenie/posrednik": {"get": {"summary": "Wdrozenia posrednikow kredytowych: dzien planu 14 dni, blokady, hypercare, testy, NPS", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wdrozenie/posrednik/odbior": {"get": {"summary": "Lista odbioru wdrozenia posrednika: 25 kontroli", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wdrozenie/posrednik/{akcja}": {"post": {"summary": "Akcja rejestru wdrozen posrednikow (utworz, dzien, blokada, zdejmij, przeglad, zgloszenie, odpowiedz, nagranie, test, ankieta, potwierdz, cofnij)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klient": {"type": "string"}}}}}}}}, "/api/wdrozenie/lejek": {"get": {"summary": "Etapy lejka ustawione w panelu z liczba spraw", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis etapow lejka (kolejnosc, nazwy, role) bez restartu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"etapy": {"type": "array"}}}}}}}}, "/api/wdrozenie/historia": {"post": {"summary": "Import historii klienta (CSV, Pipedrive, HubSpot, Zoho) z raportem, domyslnie na sucho", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"system": {"type": "string"}, "pliki": {"type": "object"}}}}}}}}, "/api/wdrozenie/przekazanie": {"get": {"summary": "Gotowosc do przekazania do utrzymania (protokol=1 dolacza protokol)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "protokol", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Podpisanie przekazania do utrzymania", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"przyjmuje": {"type": "string"}}}}}}}}, "/api/wdrozenie/zadowolenie": {"post": {"summary": "Ankieta zadowolenia po wdrozeniu (NPS)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ocena": {"type": "integer"}}}}}}}}, "/api/moj_rok": {"get": {"summary": "Twoj rok w CRM: wygrane, zadania, seria dni i odznaki zalogowanego konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "rok", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/dzwonki": {"get": {"summary": "Ostatnie dzwonki do doradcow i kolejnosc doradcow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Reczny dzwonek dla szansy z numerem", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}}}}}}}}, "/api/push/klucz": {"get": {"summary": "Publiczny klucz VAPID instancji (applicationServerKey dla PushManager.subscribe)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/push/subskrypcja": {"get": {"summary": "Urzadzenia zalogowanego konta z wlaczonymi powiadomieniami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis urzadzenia (PushSubscription i adres strony dzwonka) dla zalogowanego konta", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"endpoint": {"type": "string"}, "keys": {"type": "object"}, "adres": {"type": "string"}, "urzadzenie": {"type": "string"}}}}}}}, "delete": {"summary": "Usuniecie urzadzenia zalogowanego konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"endpoint": {"type": "string"}}}}}}}}, "/api/push/test": {"post": {"summary": "Probny dzwonek push na urzadzenia zalogowanego konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/push/szkic": {"post": {"summary": "Akceptacja szkicu z powiadomienia push jednorazowym tokenem (sesja konta; wynik zaakceptowano, zaplanowano albo otworz)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"token": {"type": "string"}}}}}}}}, "/api/push/szkic/{id}": {"get": {"summary": "Szkic agenta pierwszej odpowiedzi czekajacy na decyzje dla szansy (pasek na gorze karty)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/push/szkic/{kolejka}/{id}": {"post": {"summary": "Akceptacja szkicu z paska karty ta sama sciezka co z powiadomienia (potwierdz: true przy szkicu nieaktualnym)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"potwierdz": {"type": "boolean"}}}}}}}}, "/api/akceptacja": {"get": {"summary": "Kolejka CRM i kolejka Fluxdesku do decyzji z telefonu (wlasciciel i handlowiec)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/akceptacja/{id}": {"post": {"summary": "Decyzja o pozycji kolejki Fluxdesku: akceptuj, anuluj z powodem albo popraw tresc", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "powod": {"type": "string"}, "uwaga": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/dzwonki/dyzur": {"get": {"summary": "Czy zalogowany doradca ma wlaczony dyzur", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Wlaczenie albo wylaczenie dyzuru doradcy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlaczony": {"type": "boolean"}}}}}}}}, "/api/dzwonki/przyjecie": {"get": {"summary": "Pomiar przyjecia dzwonka (mediana, cel 20 s) i opoznienia dzwonka (cel 10 s)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/dzwonki/czekam": {"get": {"summary": "Dzwonek dla zalogowanego doradcy (long-poll przez czekaj s)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "po", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "czekaj", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/dzwonki/{id}/przyjmij": {"post": {"summary": "Przyjecie klienta: opiekun i numer telefonu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/rozmowy": {"get": {"summary": "Nagrania, poczta glosowa i proby polaczen szansy z transkrypcja, streszczeniem i nastrojem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Zapis rozmowy: nagranie base64 albo transkrypcja (tylko ze zgoda), poczta glosowa", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kierunek": {"type": "string"}, "rodzaj": {"type": "string"}, "kiedy": {"type": "string"}, "czas_s": {"type": "integer"}, "zgoda": {"type": "boolean"}, "zgoda_podstawa": {"type": "string"}, "audio_base64": {"type": "string"}, "audio_typ": {"type": "string"}, "transkrypcja": {"type": "string"}}}}}}}}, "/api/rozmowy/{id}/audio": {"get": {"summary": "Bajty nagrania rozmowy (wlasciciel i handlowiec)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/polacz": {"post": {"summary": "Click-to-call z panelu: proba polaczenia i adres tel:", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/rozmowy/{id}/transkrypcja": {"post": {"summary": "Transkrypcja rozmowy ze streszczeniem, nastrojem i slowami kluczowymi", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}}}}}}}}, "/api/rozmowy/{id}/usun": {"post": {"summary": "Kasowanie audio i tekstu nagrania (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/rozmowy/wygas": {"post": {"summary": "Kasowanie nagran starszych niz retencja [glos] (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/oddzwon": {"get": {"summary": "Kolejka oddzwonien z propozycja doradcy na dyzurze", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/statystyki": {"get": {"summary": "Polaczenia per doradca i czas oczekiwania klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/dzwonki/{id}/odrzuc": {"post": {"summary": "Przekazanie dzwonka nastepnemu doradcy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/marketing/landingi": {"get": {"summary": "Landingi z formularzem: adres, odslony, zgloszenia, kod do osadzenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy landing (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"slug": {"type": "string"}, "tytul": {"type": "string"}, "naglowek": {"type": "string"}, "opis": {"type": "string"}, "pola": {"type": "array"}, "kalkulator": {"type": "string"}, "chatbot": {"type": "boolean"}, "kampania": {"type": "string"}, "originy": {"type": "array"}}}}}}}}, "/api/marketing/landingi/{slug}": {"get": {"summary": "Landing z kodem do osadzenia i dyrektywami CSP", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zmiana landingu albo odnow_token (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "aktywna": {"type": "boolean"}, "odnow_token": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie landingu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/marketing/koszty": {"get": {"summary": "Koszty reklam kampanii", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Koszt reklamy kampanii (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kampania": {"type": "string"}, "od": {"type": "string"}, "do": {"type": "string"}, "kwota": {"type": "number"}}}}}}}}, "/api/marketing/koszty/{id}": {"delete": {"summary": "Usuniecie kosztu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/marketing/roi": {"get": {"summary": "ROI kampanii: szanse, wygrane, koszt leada, ROI", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/marketing/segmenty": {"get": {"summary": "Segmenty klientow z liczba odbiorcow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy segment z filtrem", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "filtr": {"type": "object"}}}}}}}}, "/api/marketing/segmenty/{id}": {"get": {"summary": "Podglad segmentu: liczba, wykluczeni z powodami, przyklad", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "delete": {"summary": "Usuniecie segmentu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/marketing/kampanie": {"get": {"summary": "Kampanie mailowe i newslettery", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowa kampania z wariantem B (A/B)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "segment_id": {"type": "integer"}, "temat_a": {"type": "string"}, "tresc_a": {"type": "string"}, "temat_b": {"type": "string"}, "tresc_b": {"type": "string"}, "limit_dzienny": {"type": "integer"}, "godziny": {"type": "string"}, "start": {"type": "string"}, "rodzaj": {"type": "string"}}}}}}}}, "/api/marketing/kampanie/{id}": {"get": {"summary": "Wyniki kampanii: wysylki, odpowiedzi, wariant wygrywajacy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Przygotuj (szkice maili), zatwierdz (terminy wg limitu, tylko wlasciciel) albo anuluj", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}}}}}}}}, "/api/marketing/ankiety": {"get": {"summary": "Wynik NPS", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/marketing/retencja": {"get": {"summary": "Retencja klientow: kohorty miesieczne i churn (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiecy", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "okno", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "miara", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/marketing/polecenia": {"get": {"summary": "Program polecen: kody, polecone szanse, nagrody", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/marketing/polecenia/{id}/nagroda": {"post": {"summary": "Przyznanie nagrody za polecenie (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nagroda": {"type": "string"}}}}}}}}, "/api/marketing/chatbot": {"get": {"summary": "Pytania chatbota kwalifikujacego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/kanaly_klienta": {"get": {"summary": "Gotowosc bramek kanalow (WhatsApp, podpis), limity i liczby wiadomosci per stan", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/kanaly_klienta/wiadomosci": {"get": {"summary": "Wiadomosci kanalow do klienta (WhatsApp, wideo, podpis, mail, SMS)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "kanal", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowy szkic wiadomosci do klienta (nic nie wychodzi bez akcji wyslij)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "kanal": {"type": "string"}, "tresc": {"type": "string"}, "szablon_id": {"type": "integer"}, "temat": {"type": "string"}, "przez": {"type": "string"}, "dokument": {"type": "string"}, "cel": {"type": "string"}}}}}}}}, "/api/kanaly_klienta/wiadomosci/{id}": {"get": {"summary": "Wiadomosc z dziennikiem doreczen", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Akcja czlowieka: wyslij (bramka albo kolejka poczty/SMS) albo odrzuc", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}}}}}}}}, "/api/kanaly_klienta/dziennik": {"get": {"summary": "Dziennik doreczen z podsumowaniem per kanal", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "kanal", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/kanaly_klienta/doreczenie": {"post": {"summary": "Zdarzenie doreczenia z bramki: wyslana, doreczona, odczytana, blad", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "token": {"type": "string"}, "zdarzenie": {"type": "string"}, "szczegol": {"type": "string"}}}}}}}}, "/api/kanaly_klienta/szablony": {"get": {"summary": "Szablony wielokanalowe", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy szablon wielokanalowy (tresci per kanal)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "tresci": {"type": "object"}}}}}}}}, "/api/kanaly_klienta/szablony/{id}": {"get": {"summary": "Szablon wielokanalowy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "delete": {"summary": "Usuniecie szablonu wielokanalowego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/kanaly_klienta/szablony/{id}/podglad": {"post": {"summary": "Podglad szablonu dla szansy i kanalu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "kanal": {"type": "string"}}}}}}}}, "/api/leady/{id}/os-kanalow": {"get": {"summary": "Jedna os czasu wszystkich kanalow kontaktu z klientem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "kanal", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/lojalnosc": {"get": {"summary": "Program lojalnosciowy szansy: saldo, poziom, ruchy, nagrody", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Reczne punkty albo wymiana nagrody (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"punkty": {"type": "integer"}, "powod": {"type": "string"}, "wymien": {"type": "string"}}}}}}}}, "/api/lojalnosc": {"get": {"summary": "Ranking lojalnosci i zasady punktow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/lojalnosc/przelicz": {"post": {"summary": "Naliczenie punktow z umow, polecen i ankiet (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/okazje": {"get": {"summary": "Okazje klienta (urodziny, rocznice)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Nowa okazja klienta", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "data": {"type": "string"}, "etykieta": {"type": "string"}}}}}}}}, "/api/leady/{id}/okazje/{okazja_id}": {"delete": {"summary": "Usuniecie okazji klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/zyczenia": {"get": {"summary": "Nadchodzace okazje i swieta do zyczen", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "data", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/zyczenia/generuj": {"post": {"summary": "Szkice zyczen na dzien (urodziny, rocznice, swieta); nic nie wychodzi", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"data": {"type": "string"}}}}}}}}, "/api/marketing/pozyskiwanie": {"get": {"summary": "Liczniki i gotowosc pakietu pozyskiwania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/marketing/popupy": {"get": {"summary": "Pop-upy z oferta: statystyki i kod do osadzenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy pop-up z oferta (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "landing_slug": {"type": "string"}, "naglowek": {"type": "string"}, "tresc": {"type": "string"}, "przycisk": {"type": "string"}, "wyzwalacz": {"type": "string"}, "wartosc": {"type": "integer"}, "strony": {"type": "array"}, "czestosc_dni": {"type": "integer"}}}}}}}}, "/api/marketing/popupy/{id}": {"post": {"summary": "Zmiana pop-upu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"naglowek": {"type": "string"}, "aktywny": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie pop-upu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/marketing/remarketing": {"get": {"summary": "Audiencje remarketingowe wg etapu z liczba osob ze zgoda", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/marketing/remarketing/{klucz}/eksport": {"get": {"summary": "Lista Customer Match (CSV z haszami SHA-256) dla Google albo Meta (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "platforma", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/marketing/wydarzenia": {"get": {"summary": "Webinary i eventy z liczba rejestracji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowe wydarzenie z publiczna rejestracja (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"slug": {"type": "string"}, "rodzaj": {"type": "string"}, "tytul": {"type": "string"}, "start": {"type": "string"}, "opis": {"type": "string"}, "miejsce": {"type": "string"}, "link": {"type": "string"}, "limit_miejsc": {"type": "integer"}}}}}}}}, "/api/marketing/wydarzenia/{id}": {"get": {"summary": "Wydarzenie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Zmiana wydarzenia (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "start": {"type": "string"}, "aktywne": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie wydarzenia (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/marketing/wydarzenia/{id}/rejestracje": {"get": {"summary": "Lista rejestracji i obecnosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/marketing/wydarzenia/{id}/obecnosc": {"post": {"summary": "Oznaczenie obecnosci (emaile z platformy webinarowej, zamkniecie listy)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"emaile": {"type": "array"}, "stan": {"type": "string"}, "rejestracja_id": {"type": "integer"}, "zamknij": {"type": "boolean"}}}}}}}}, "/api/marketing/tresci": {"get": {"summary": "Tresci marketingowe: posty, case studies, opinie, artykuly", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "rodzaj", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowa tresc marketingowa (szkic)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "tytul": {"type": "string"}, "tresc": {"type": "string"}, "kanal": {"type": "string"}, "zaplanowano": {"type": "string"}}}}}}}}, "/api/marketing/tresci/z-wygranej": {"post": {"summary": "Szkic posta albo case study z wygranej szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "rodzaj": {"type": "string"}, "zgoda_publikacji": {"type": "boolean"}}}}}}}}, "/api/marketing/tresci/{id}": {"post": {"summary": "Zmiana tresci albo akcja zatwierdz, odrzuc, opublikowano, cofnij", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "tresc": {"type": "string"}, "akcja": {"type": "string"}, "zaplanowano": {"type": "string"}, "zgoda_publikacji": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie tresci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/marketing/opinie/z-ankiet": {"post": {"summary": "Szkice opinii z ankiet NPS (zgoda na publikacje do potwierdzenia)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/marketing/opinie": {"get": {"summary": "Opinie zatwierdzone do publikacji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/marketing/kalendarz": {"get": {"summary": "Kalendarz publikacji: tresci, wydarzenia, kampanie mailowe", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/marketing/budzet": {"get": {"summary": "Budzet marketingowy miesiaca: plan vs wydatki, prognoza", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Ustawienie budzetu miesiaca/kampanii (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"miesiac": {"type": "string"}, "kampania": {"type": "string"}, "kwota": {"type": "number"}}}}}}}}, "/api/marketing/budzet/{miesiac}/{kampania}": {"delete": {"summary": "Usuniecie budzetu miesiaca/kampanii (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/marketing/marka": {"get": {"summary": "Pomiar marki: wzmianki, sentyment, zrodla, tygodnie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/marketing/wzmianki": {"post": {"summary": "Nowa wzmianka o marce", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"url": {"type": "string"}, "zrodlo": {"type": "string"}, "tytul": {"type": "string"}, "fragment": {"type": "string"}, "sentyment": {"type": "integer"}}}}}}}}, "/api/marketing/marka/odswiez": {"post": {"summary": "Odczyt kanalow RSS/Atom wzmianek (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/marketing/audyty": {"get": {"summary": "Wykonane audyty stron", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Audyt strony (wynik 0-100 i zalecenia)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"adres": {"type": "string"}, "lead_id": {"type": "integer"}}}}}}}}, "/api/marketing/audyty/{id}": {"get": {"summary": "Raport audytu strony", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/marketing/outreach": {"get": {"summary": "Kolejka cold mailingu B2B i LinkedIn z zasadami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "kanal", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "kampania", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Dodanie kontaktow do outreach (tylko wlasciciel; odrzuca kontakty bez zrodla danych, prywatne, wykluczone)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kampania": {"type": "string"}, "kanal": {"type": "string"}, "kontakty": {"type": "array"}}}}}}}}, "/api/marketing/outreach/{id}/szkic": {"post": {"summary": "Szkic maila cold mailingu albo tresc zaproszenia LinkedIn (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"temat": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/marketing/outreach/{id}/akcja": {"post": {"summary": "Wynik reczny: wyslano, zaakceptowano, odpowiedz, pomin (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}}}}}}}}, "/api/marketing/portale/import": {"post": {"summary": "Import powiadomienia portalu (Oferteo, Fixly) jako szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"portal": {"type": "string"}, "temat": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/marketing/gbp": {"post": {"summary": "Wiadomosc z Google Business Profile jako szansa", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rozmowa": {"type": "string"}, "tekst": {"type": "string"}, "nazwa": {"type": "string"}, "sekret": {"type": "string"}}}}}}}}, "/api/marketing/seo-pytania": {"get": {"summary": "Pytania klientow pogrupowane w tematy artykulow SEO", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Szkic artykulu SEO z pytan klientow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "pytania": {"type": "array"}}}}}}}}, "/api/leady/{id}/marketing": {"get": {"summary": "Marketing szansy: atrybucja z kosztem leada, preferencje, ankiety, polecenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/preferencje": {"post": {"summary": "Preferowany kanal, godziny, jezyk i wykluczenie z kontaktu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kanal": {"type": "string"}, "godziny_od": {"type": "string"}, "godziny_do": {"type": "string"}, "jezyk": {"type": "string"}, "nie_kontaktowac": {"type": "boolean"}, "powod": {"type": "string"}}}}}}}}, "/api/leady/{id}/ankieta": {"post": {"summary": "Ankieta NPS albo satysfakcji z linkiem (opcjonalnie szkic maila)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "szkic_maila": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/polecenie-kod": {"post": {"summary": "Kod i link polecajacy klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/integracje/powiadom": {"post": {"summary": "Powiadomienie Slack albo Teams (podglad; wyslij: true wysyla)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"cel": {"type": "string"}, "tekst": {"type": "string"}, "lead_id": {"type": "integer"}, "wyslij": {"type": "boolean"}}}}}}}}, "/api/integracje/webhook": {"post": {"summary": "Zdarzenie do webhookow Zapier, Make i n8n", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"zdarzenie": {"type": "string"}, "lead_id": {"type": "integer"}, "wyslij": {"type": "boolean"}}}}}}}}, "/api/integracje/konwersje": {"post": {"summary": "Konwersje offline: Google Ads (CSV), Meta, GA4", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"platforma": {"type": "string"}, "lead_id": {"type": "integer"}, "wszystkie_wygrane": {"type": "boolean"}, "wyslij": {"type": "boolean"}}}}}}}}, "/api/integracje/faktura": {"post": {"summary": "Ladunek faktury Fakturownia, wFirma, iFirma", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"system": {"type": "string"}, "lead_id": {"type": "integer"}, "netto": {"type": "number"}, "wyslij": {"type": "boolean"}}}}}}}}, "/api/integracje/zewnetrzne": {"post": {"summary": "Google Workspace, Microsoft 365, Dropbox, e-podpis, KSeF, GUS, Sanity, nagrania Meet (podglad; wyslij: true wysyla)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"system": {"type": "string"}, "akcja": {"type": "string"}, "wyslij": {"type": "boolean"}}}}}}}}, "/api/integracje/zadanie": {"post": {"summary": "Zadanie w Trello, ClickUp albo Jira po wygranej", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"system": {"type": "string"}, "lead_id": {"type": "integer"}, "wyslij": {"type": "boolean"}}}}}}}}, "/api/zgloszenie": {"post": {"summary": "Webhook formularza (naglowek x-fluxcrm-sekret)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"imie": {"type": "string"}, "email": {"type": "string"}, "wiadomosc": {"type": "string"}}}}}}, "security": []}}, "/api/zdrowie": {"get": {"summary": "Stan instancji: importy, spojnosc, dostep", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/pakiet-karty": {"get": {"summary": "Odczyty sekcji karty szansy w jednym zapytaniu (sciezka: odpowiedz)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/pakiet-startowy": {"get": {"summary": "Odpowiedzi startowych odczytow panelu w jednym zapytaniu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wartosci_leadow": {"get": {"summary": "Wartosc wazona leadow i zmiana od wczoraj (liczona przez CRM na zywo), wlasciciel; handlowiec tylko swoja wyplata", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/metryki": {"get": {"summary": "Metryki Prometheus (text/plain): zadania wg trasy i klasy statusu, histogram czasu, uptime, leady, rozmiar bazy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/zaloguj": {"post": {"summary": "Logowanie kontem: ciasteczko fluxcrm_sesja", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "haslo": {"type": "string"}, "kod": {"type": "string"}}}}}}, "security": []}}, "/api/wyloguj": {"post": {"summary": "Koniec sesji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/podglad": {"post": {"summary": "Podglad CRM oczami innego konta, tylko odczyt (tylko wlasciciel; pusty login konczy)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}}}}}}}}, "/api/ja": {"get": {"summary": "Kto jest zalogowany", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/ja/wprowadzenie": {"post": {"summary": "Konto z sesji widzialo wprowadzenie w panelu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/uzytkownicy": {"get": {"summary": "Konta i role (wlasciciel albo klucz glowny)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Akcja na koncie: dodaj, rola, wylacz, wlacz, haslo, totp_wlacz, totp_wylacz", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "login": {"type": "string"}}}}}}}}, "/api/role_kont": {"get": {"summary": "Role wlasne kont z uprawnieniami per modul (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Rola wlasna: akcja zapisz (nazwa, baza, uprawnienia), usun albo przypisz do konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "nazwa": {"type": "string"}}}}}}}}, "/api/zespoly": {"get": {"summary": "Zespoly z kierownikami i czlonkami (wlasciciel: wszystkie, inni: swoje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zespol: akcja zapisz (nazwa, kierownik, czlonkowie) albo usun (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "nazwa": {"type": "string"}}}}}}}}, "/api/klucze_api": {"get": {"tags": ["Klucze API"], "summary": "Klucze API bez wartosci: zakres, tryb, wygasanie, limity, ostatnie uzycie", "operationId": "get_klucze_api", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": null, "modul_nazwa": null, "tryb_klucza": "odczyt", "tylko_wlasciciel": true}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzKlucze"}, "example": {"ok": true, "klucze": [{"id": 1, "nazwa": "Zapier", "prefiks": "fxk_aB3dE9", "zakres": ["szanse", "zadania"], "tryb": "zapis", "wygasa": "2027-10-28T09:00:00", "wygasl": false, "limit_min": 60, "limit_dzien": 10000, "aktywny": true, "utworzono": "2026-10-28T09:00:00", "ostatnio": null}], "moduly": [{"klucz": "szanse", "nazwa": "Szanse i klienci"}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}, "post": {"tags": ["Klucze API"], "summary": "Akcje na kluczach: utworz (wartosc widac raz), cofnij, przedluz, limity, rotuj (nowy klucz, stary zyje 24 h), ip (lista IP lub CIDR)", "operationId": "post_klucze_api", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": null, "modul_nazwa": null, "tryb_klucza": "zapis", "tylko_wlasciciel": true}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzKlucze"}, "example": {"ok": true, "klucz": "fxk_aB3dE9...pokazany-raz", "opis": {"id": 1, "nazwa": "Zapier", "prefiks": "fxk_aB3dE9", "zakres": ["szanse", "zadania"], "tryb": "zapis", "wygasa": "2027-10-28T09:00:00", "wygasl": false, "limit_min": 60, "limit_dzien": 10000, "aktywny": true, "utworzono": "2026-10-28T09:00:00", "ostatnio": null}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/KluczAkcja"}, "example": {"akcja": "utworz", "nazwa": "Zapier", "zakres": ["szanse", "zadania"], "tryb": "zapis", "dni": 365, "limit_min": 60, "limit_dzien": 10000}}}}}}, "/api/bezpieczenstwo": {"get": {"summary": "Polityka hasel, wymuszenie TOTP i limity zadan (pelne ustawienia tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zmiana ustawien bezpieczenstwa (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ustawienia": {"type": "object"}}}}}}}}, "/api/logowania": {"get": {"summary": "Dziennik logowan z urzadzeniem i IP (wlasciciel: dowolne konto, inni: swoj)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/sesje": {"get": {"summary": "Urzadzenia zalogowane na koncie (sesje z IP i nazwa urzadzenia)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/sesje/wyloguj": {"post": {"summary": "Zdalne wylogowanie: id sesji, inne (wszystkie poza biezaca) albo login (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "inne": {"type": "boolean"}, "login": {"type": "string"}}}}}}}}, "/api/sesje/wyloguj_wszystkich": {"post": {"summary": "Wylogowanie wszystkich uzytkownikow instancji (wlasciciel); wlacznie_ze_mna konczy tez biezaca sesje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlacznie_ze_mna": {"type": "boolean"}}}}}}}}, "/api/role_macierz": {"get": {"summary": "Macierz uprawnien modul x rola; z ?jako=login podglad, co zobaczy to konto (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "jako", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/instancja_demo": {"get": {"summary": "Stan jawnej instancji demo: limity, uzycie i straznik prawdziwych danych (banner w panelu)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/dziennik_admin": {"get": {"summary": "Dziennik zdarzen administracyjnych: zmiany rol, kluczy, kanalow, bezpieczenstwa, sesji (niezmienialny, wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "kto", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/dziennik_admin/weryfikacja": {"get": {"summary": "Kontrola lancucha skrotow dziennika administracyjnego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/dziennik_admin/eksport": {"get": {"summary": "Eksport calego dziennika administracyjnego dla klienta (json albo csv w polu tresc)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/passkey": {"get": {"summary": "Klucze dostepu (passkeys) zalogowanego konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/passkey/rejestracja/opcje": {"post": {"summary": "Opcje WebAuthn do dodania klucza dostepu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/passkey/rejestracja": {"post": {"summary": "Zapis klucza dostepu z wyniku navigator.credentials.create", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"poswiadczenie": {"type": "object"}, "nazwa": {"type": "string"}}}}}}}}, "/api/passkey/usun": {"post": {"summary": "Usuniecie klucza dostepu konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}}}}}}}}, "/api/passkey/logowanie/opcje": {"post": {"summary": "Opcje WebAuthn do logowania (login opcjonalny), bez uwierzytelnienia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}}}}}}}}, "/api/passkey/logowanie": {"post": {"summary": "Logowanie kluczem dostepu na ciasteczko sesji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"poswiadczenie": {"type": "object"}}}}}}}}, "/api/tryb_awaryjny": {"get": {"summary": "Czy panel jest w trybie awaryjnym (tylko odczyt)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Wlaczenie i wylaczenie trybu awaryjnego (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlaczony": {"type": "boolean"}, "powod": {"type": "string"}}}}}}}}, "/api/diagnostyka": {"get": {"summary": "Co nie dziala i dlaczego: sprawdzenia z rada (wlasciciel); siec=1 sprawdza serwery poczty", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "siec", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/bledy_serwera": {"get": {"summary": "Bledy 5xx z identyfikatorem (wlasciciel); parametr id zwraca jeden ze sladem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/bledy_js": {"get": {"summary": "Zbior bledow JS z panelu z licznikami (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Blad JS z panelu (limit 30 na minute na IP, dedup po odcisku)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"komunikat": {"type": "string"}, "zrodlo": {"type": "string"}, "linia": {"type": "integer"}, "slad": {"type": "string"}}}}}}}}, "/api/zglos_blad": {"post": {"summary": "Zgloszenie bledu z panelu jednym kliknieciem (kontekst z bialej listy, bez danych klientow)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"opis": {"type": "string"}, "kontekst": {"type": "object"}}}}}}}}, "/api/zgloszenia_bledow": {"get": {"summary": "Zgloszenia bledow z panelu (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/status": {"get": {"summary": "Publiczny stan instancji (skladniki ok, ostrzezenie, awaria); strona HTML pod /status", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/import/csv": {"post": {"summary": "Import kontaktow z CSV jako recznych szans", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "413": {"description": "Content Too Large", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "podglad", "in": "query", "required": false, "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"csv_base64": {"type": "string"}, "mapowanie": {"type": "object"}, "naglowek": {"type": "boolean"}}}}}}}}, "/api/import/csv/podglad": {"post": {"summary": "Naglowki, 5 wierszy i propozycja mapowania CSV", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"csv_base64": {"type": "string"}}}}}}}}, "/api/ustawienia": {"get": {"summary": "Ustawienia instancji bez sekretow (tylko klucz pelny)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/zrodla": {"post": {"summary": "Wlaczenie i wylaczenie zrodel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"zrodla": {"type": "object"}}}}}}}}, "/api/zespol": {"get": {"summary": "Zespol: opiekunowie, tryb przydzialu, doradcy, nieobecnosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis przydzialu: tryb, doradcy, wg_zrodla, nieobecni (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tryb": {"type": "string"}, "doradcy": {"type": "array"}, "wg_zrodla": {"type": "object"}, "nieobecni": {"type": "array"}}}}}}}}, "/api/zespol/nieobecnosci": {"post": {"summary": "Dodanie albo usuniecie nieobecnosci doradcy (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "opiekun": {"type": "string"}, "od": {"type": "string"}, "do": {"type": "string"}, "id": {"type": "integer"}}}}}}}}, "/api/auto_odpowiedz": {"get": {"summary": "Automatyczna odpowiedz: ustawienia, gotowosc kanalow, kolejka, podglad", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis [auto_odpowiedz]: wlaczone, tryb, kanaly, szablony, godziny (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlaczone": {"type": "boolean"}, "tryb": {"type": "string"}, "kanaly": {"type": "array"}, "temat_mail": {"type": "string"}, "szablon_mail": {"type": "string"}, "szablon_sms": {"type": "string"}, "godziny_pracy": {"type": "string"}, "termin_oddzwonienia_min": {"type": "integer"}}}}}}}}, "/api/auto_odpowiedz/podglad": {"post": {"summary": "Podglad auto-odpowiedzi dla leada z niezapisanych szablonow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "szablon_mail": {"type": "string"}, "szablon_sms": {"type": "string"}}}}}}}}, "/api/auto_odpowiedz/kolejka": {"post": {"summary": "Wyslanie albo odrzucenie auto-odpowiedzi z kolejki CRM", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "akcja": {"type": "string"}}}}}}}}, "/api/docs": {"get": {"summary": "Dokumentacja API jako strona HTML generowana z tego dokumentu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/leady/{id}/przekaz": {"post": {"summary": "Przekazanie szansy innemu doradcy z notatka", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"opiekun": {"type": "string"}, "notatka": {"type": "string"}}}}}}}}, "/api/leady/{id}/projekt": {"get": {"summary": "Projekt wygranej szansy: kamienie, raty, godziny, rentownosc, serwis i SLA (albo propozycja zalozenia)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Zalozenie projektu wygranej szansy z szablonu (budzet i termin z umowy albo oferty)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "zakres": {"type": "string"}, "start": {"type": "string"}, "termin": {"type": "string"}, "budzet": {"type": "number"}, "szablon_id": {"type": "string"}, "gwarancja_mies": {"type": "integer"}}}}}}}, "patch": {"summary": "Zmiana projektu: status, archiwum, termin, budzet, ankieta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"status": {"type": "string"}, "archiwum": {"type": "boolean"}, "termin": {"type": "string"}, "budzet": {"type": "number"}, "ankieta_ocena": {"type": "integer"}}}}}}}}, "/api/leady/{id}/projekt/{sekcja}": {"post": {"summary": "Wpis projektu: kamienie, platnosci, godziny, koszty, abonamenty, zgloszenia, dokumenty", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "termin": {"type": "string"}, "kwota_netto": {"type": "number"}, "minuty": {"type": "integer"}}}}}}}}, "/api/leady/{id}/projekt/{sekcja}/{rid}": {"patch": {"summary": "Zmiana wpisu projektu (postep kamienia, status raty, status zgloszenia)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"postep": {"type": "integer"}, "status": {"type": "string"}}}}}}}, "delete": {"summary": "Usuniecie wpisu projektu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/projekt/platnosci/{rid}/proforma": {"post": {"summary": "Proforma do raty harmonogramu (numer wraca do raty)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/projekt/abonamenty/{rid}/odnow": {"post": {"summary": "Odnowienie abonamentu o jego okres z rata do wystawienia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"platnosc": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/projekt/kamienie/{rid}/link": {"post": {"summary": "Link akceptacji etapu przez klienta (/akceptacja-etapu/<token>)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/projekt/protokol": {"post": {"summary": "Protokol odbioru PDF: dzien odbioru, gwarancja, status gwarancja", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"odbior_dnia": {"type": "string"}, "uwagi": {"type": "string"}, "odbierajacy": {"type": "string"}, "wymus": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/projekt/podsumowanie": {"post": {"summary": "Podsumowanie projektu (model albo dane)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/projekty": {"get": {"summary": "Widok Projekty: wiersze z postepem, terminami, marza i sumy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "status", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "archiwum", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "szukaj", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "opiekun", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/projekty/przypomnienia": {"post": {"summary": "Zadania o terminach projektow (kamienie, raty, abonamenty, gwarancja, SLA)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/projekty/zadania_agenta": {"get": {"summary": "Otwarte zadania realizacji jako polecenia dla agentow Fluxdesku", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/projekty/szablony": {"get": {"summary": "Szablony projektow per usluga i szablon standardowy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy szablon projektu (kamienie z terminem w % czasu, waga, % raty)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "katalog_id": {"type": "integer"}, "kamienie": {"type": "array"}}}}}}}}, "/api/leady/{id}/wspolpraca": {"get": {"summary": "Karta: komentarze z watkami, obserwujacy, ogladajacy, czas i moje prywatne notatki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/komentarze": {"post": {"summary": "Komentarz zespolu w szansie (watek, @wzmianki, powiadomienia)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}, "rodzic_id": {"type": "integer"}}}}}}}}, "/api/leady/{id}/obserwuj": {"post": {"summary": "Obserwowanie szansy: powiadomienia o zmianach", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlacz": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/obecnosc": {"post": {"summary": "Sygnal ogladania karty; odpowiedz niesie ogladajacych i ostrzezenie o edycji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"edytuje": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/prywatne": {"post": {"summary": "Prywatna notatka widoczna tylko dla autora", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/leady/{id}/czas": {"post": {"summary": "Timer czasu na szansie: start, stop albo reczny wpis", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "minuty": {"type": "integer"}, "opis": {"type": "string"}}}}}}}}, "/api/leady/{id}/zadanie-z-maila": {"post": {"summary": "Zadanie z maila szansy jednym kliknieciem (termin rozpoznany z tresci)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"poczta_id": {"type": "integer"}, "termin": {"type": "string"}, "przypisany": {"type": "string"}}}}}}}}, "/api/leady/{id}/zadanie-z-tekstu": {"post": {"summary": "Zadanie z wolnego zdania, termin rozpoznany z tekstu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}, "termin": {"type": "string"}, "przypisany": {"type": "string"}}}}}}}}, "/api/leady/{id}/zadania-z-szablonu": {"post": {"summary": "Zadania z aktywnych szablonow etapu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wyzwalacz": {"type": "string"}}}}}}}}, "/api/zadania/{id}/komentarze": {"post": {"summary": "Komentarz pod zadaniem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}, "rodzic_id": {"type": "integer"}}}}}}}}, "/api/zadania/{id}/pozycje": {"post": {"summary": "Pozycja checklisty w zadaniu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/zadania/{id}/deleguj": {"post": {"summary": "Przypisanie zadania innej osobie z komentarzem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"komu": {"type": "string"}, "komentarz": {"type": "string"}}}}}}}}, "/api/praca/widok": {"get": {"summary": "Widok dnia albo tygodnia: zadania osoby i zalegle", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/praca/obciazenie": {"get": {"summary": "Raport obciazenia zespolu zadaniami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/praca/skrzynka": {"get": {"summary": "Powiadomienia zespolu zalogowanego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Oznaczenie powiadomien jako przeczytanych", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "wszystkie": {"type": "boolean"}}}}}}}}, "/api/praca/statystyki": {"get": {"summary": "Statystyki per osoba (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/praca/szukaj": {"get": {"summary": "Szukanie w komentarzach, notatkach i zadaniach", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/praca/grafik": {"get": {"summary": "Dyzury w kalendarzu: kto pracuje, kto nieobecny", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/praca/godziny": {"get": {"summary": "Godziny pracy konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis godzin pracy konta (spojnych z dyzurem dzwonkow)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"godziny": {"type": "object"}, "login": {"type": "string"}}}}}}}}, "/api/praca/dyzur": {"post": {"summary": "Przekazanie dyzuru dzwonkow innemu doradcy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"komu": {"type": "string"}}}}}}}}, "/api/praca/onboarding": {"get": {"summary": "Checklisty onboardingu handlowcow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Start i zmiany checklisty onboardingu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "login": {"type": "string"}, "id": {"type": "integer"}, "tresc": {"type": "string"}}}}}}}}, "/api/praca/offboarding": {"post": {"summary": "Odejscie handlowca: przekazanie szans i zadan (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "przekaz_do": {"type": "string"}, "notatka": {"type": "string"}, "wylacz_konto": {"type": "boolean"}, "podglad": {"type": "boolean"}}}}}}}}, "/api/praca/szablony": {"get": {"summary": "Szablony zadan per etap", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy szablon zadan per etap (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wyzwalacz": {"type": "string"}, "tresc": {"type": "string"}, "dni": {"type": "integer"}, "priorytet": {"type": "integer"}, "pozycje": {"type": "array"}}}}}}}}, "/api/praca/ogloszenia": {"get": {"summary": "Tablica ogloszen zespolu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowe ogloszenie zespolu, trafia do skrzynek i push (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}, "przypiete": {"type": "boolean"}, "wygasa": {"type": "string"}}}}}}}}, "/api/praca/ranking": {"get": {"summary": "Ranking zespolu za miesiac z postepem do celow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/praca/cele": {"post": {"summary": "Miesieczne cele zespolu: wygrane i wartosc (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wygrane": {"type": "integer"}, "wartosc": {"type": "number"}}}}}}}}, "/api/leady/{id}/agencja/portfolio": {"get": {"summary": "Portfolio i referencje pasujace do zlecenia (do oferty)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/agencja/wycena": {"post": {"summary": "Wycena z katalogu i godzin: netto, brutto, koszt, marza i ostrzezenie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"pozycje": {"type": "array"}, "godziny": {"type": "array"}, "rabat_proc": {"type": "number"}, "vat": {"type": "number"}}}}}}}}, "/api/leady/{id}/agencja/harmonogram": {"post": {"summary": "Harmonogram realizacji z kamieni szablonu na dni robocze", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"start": {"type": "string"}, "godziny": {"type": "number"}, "dni_robocze": {"type": "integer"}, "szablon_id": {"type": "integer"}}}}}}}}, "/api/leady/{id}/agencja/oferta": {"post": {"summary": "Oferta kompletna: wycena, harmonogram i referencje w wersji oferty PDF", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"pozycje": {"type": "array"}, "godziny": {"type": "array"}, "start": {"type": "string"}, "portfolio": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/agencja/umowy": {"get": {"summary": "Wersje szkicow umow szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Szkic umowy o dzielo albo zlecenia z przeniesieniem praw (wzor do weryfikacji prawnej)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "prawa": {"type": "boolean"}, "przedmiot": {"type": "string"}, "wynagrodzenie": {"type": "number"}}}}}}}}, "/api/leady/{id}/agencja/umowy/{uid}": {"get": {"summary": "Tresc umowy (tekst i html)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/agencja/zasoby": {"get": {"summary": "Repozytorium, hosting i domeny klienta z terminami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Nowy zasob klienta (repozytorium, hosting, domena, certyfikat)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "nazwa": {"type": "string"}, "adres": {"type": "string"}, "wygasa": {"type": "string"}}}}}}}}, "/api/leady/{id}/agencja/zasoby/{zid}": {"put": {"summary": "Zmiana zasobu klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "adres": {"type": "string"}, "wygasa": {"type": "string"}}}}}}}, "delete": {"summary": "Usuniecie zasobu klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/agencja/raport_klienta": {"get": {"summary": "Raporty miesieczne dla klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Generowanie raportu miesiecznego dla klienta (ruch, zmiany)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"miesiac": {"type": "string"}, "ruch": {"type": "object"}, "zmiany": {"type": "string"}}}}}}}}, "/api/leady/{id}/agencja/scoring": {"get": {"summary": "Punkty i powody lead scoringu z audytu strony", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/agencja/portfolio": {"get": {"summary": "Portfolio i referencje firmy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy wpis portfolio (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "tagi": {"type": "array"}, "referencja": {"type": "string"}}}}}}}}, "/api/agencja/portfolio/{id}": {"put": {"summary": "Zmiana wpisu portfolio (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "aktywny": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie wpisu portfolio (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/agencja/zasoby": {"get": {"summary": "Wygasajace zasoby wszystkich klientow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/zasoby/przypomnienia": {"post": {"summary": "Zadania o wygasajacych domenach i hostingu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/agencja/serwis": {"get": {"summary": "Abonamenty utrzymaniowe (MRR) i zgloszenia z SLA", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/agencja/podwykonawcy": {"get": {"summary": "Lista podwykonawcow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy podwykonawca (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "stawka_godzinowa": {"type": "number"}}}}}}}}, "/api/agencja/podwykonawcy/{id}": {"put": {"summary": "Zmiana podwykonawcy (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "aktywny": {"type": "boolean"}}}}}}}, "delete": {"summary": "Usuniecie podwykonawcy (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/agencja/podwykonawcy/{id}/rozlicz": {"post": {"summary": "Rozliczenie kosztow podwykonawcy w miesiacu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"miesiac": {"type": "string"}}}}}}}}, "/api/agencja/rozliczenia": {"get": {"summary": "Koszty podwykonawcow z projektow per osoba", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza": {"get": {"summary": "Marza per projekt i per usluga", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "archiwum", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/dostepnosc": {"get": {"summary": "Kalendarz dostepnosci zespolu i najblizszy termin na godziny", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "godziny", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/alokacje": {"post": {"summary": "Alokacja osoby do projektu w kalendarzu dostepnosci (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "od": {"type": "string"}, "do": {"type": "string"}, "godziny_dzien": {"type": "number"}}}}}}}}, "/api/agencja/alokacje/{id}": {"delete": {"summary": "Usuniecie alokacji (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/agencja/scoring": {"get": {"summary": "Ranking szans ze strony wg punktow z audytu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/kampanie": {"get": {"summary": "Kampanie OSINT i statystyki segmentow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowa kampania OSINT z lista firm i szablonem (bez wysylki)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "segment": {"type": "string"}, "szablon": {"type": "string"}, "firmy": {"type": "array"}}}}}}}}, "/api/agencja/kampanie/{id}": {"get": {"summary": "Kampania OSINT z firmami i szkicami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/agencja/kampanie/{id}/przebieg": {"post": {"summary": "Wywiad i szkice dla kolejnych firm kampanii", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"limit": {"type": "integer"}}}}}}}}, "/api/agencja/firmy/{id}/wywiad": {"post": {"summary": "Wywiad i szkic dla jednej firmy kampanii", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/agencja/firmy/{id}/stan": {"post": {"summary": "Reczny stan firmy kampanii (szkic, odpowiedziala, odrzucona)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"stan": {"type": "string"}, "szkic": {"type": "string"}}}}}}}}, "/api/agencja/konkurencja": {"get": {"summary": "Ceny, terminy i skutecznosc per portal z ogloszen", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/prognoza": {"get": {"summary": "Prognoza przychodu z pipeline, rat i abonamentow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiecy", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/uslugi": {"get": {"summary": "Marza per usluge katalogu i dwie najmniej rentowne", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/kanaly": {"get": {"summary": "Marza i zysk per kanal pozyskania (marza wygranych minus wydatki na kanal)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/klienci": {"get": {"summary": "Marza per klient (projekty i abonamenty), klienci ponizej progu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/wyceny": {"get": {"summary": "Oferta kontra faktyczny koszt zakonczonych projektow i podpowiedz dla wycen", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/alerty": {"get": {"summary": "Alert wczesnej straty: godziny ponad prog budzetu przy slabym postepie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/abonamenty": {"get": {"summary": "Marza abonamentow: przychod miesieczny minus godziny serwisu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/pieniadze": {"get": {"summary": "Strona pieniadze raportu: przychod, koszty, marza, zaleglosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/podwykonawcy": {"get": {"summary": "Rozliczenie podwykonawcow z terminem i statusem platnosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "projekt_id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/posrednik": {"get": {"summary": "Marza wdrozenia dla posrednika kredytowego, prowizje partnerow, okres zwrotu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "cena", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "godziny", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "narzedzia_mies", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "okres_mies", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agencja/marza/stawki": {"get": {"summary": "Stawki kosztowe godziny per osoba (od daty)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Stawka kosztowa godziny osoby od daty, nie wstecz (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"osoba": {"type": "string"}, "stawka": {"type": "number"}}}}}}}}, "/api/leady/{id}/agencja/zgoda_marzy": {"post": {"summary": "Zgoda wlasciciela na oferte agenta z marza ponizej progu", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"marza_proc": {"type": "number"}, "powod": {"type": "string"}}}}}}}, "get": {"summary": "Zgody wlasciciela na marze ponizej progu dla szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/agenci": {"get": {"summary": "Agenci: tryb, dziennik dzisiejszy, zuzycie tokenow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/agenci/dziennik": {"get": {"summary": "Dziennik dzialan agentow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dzien", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "agent", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agenci/zuzycie": {"get": {"summary": "Zuzycie tokenow per agent", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/agenci/akceptacja": {"get": {"summary": "Akceptacja szkicow agentow: bez edycji, czas do wysylki, powody odrzucen, kanaly, odpowiedzi klientow, koszt, przeglad i tryb auto per typ", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/agenci/akceptacja_powod": {"post": {"summary": "Powod odrzucenia szkicu AI: fakty, ton, dlugosc, nie_ten_moment, inne", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "powod": {"type": "string"}}}}}}}}, "/api/agenci/akceptacja_zmiana": {"post": {"summary": "Zmiana promptu lub reguly zapisana po przegladzie szkicow (zamyka przeglad; tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"plik": {"type": "string"}, "opis": {"type": "string"}, "przeglad_id": {"type": "integer"}}}}}}}}, "/api/agenci/ustawienia": {"post": {"summary": "Tryb agentow: normalny, podpowiadaj, wylaczony (wylacznik awaryjny; tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tryb": {"type": "string"}}}}}}}}, "/api/agenci/raport_poranny": {"post": {"summary": "Raport poranny agenta (raz na dzien, wymus: ponownie)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wymus": {"type": "boolean"}}}}}}}}, "/api/agenci/sla": {"post": {"summary": "Agent SLA odpowiedzi: zadania dla szans czekajacych na nas", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/agenci/osint": {"post": {"summary": "Agent OSINT: wywiad i brief dla szansy (wymaga dostawcy modelu)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}}}}}}}}, "/api/agenci/spotkanie": {"post": {"summary": "Agent przygotowujacy spotkanie z zadania z godzina", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"zadanie_id": {"type": "integer"}}}}}}}}, "/api/wizja": {"get": {"summary": "Wizja: zasada, propozycje agentow do decyzji, skutecznosc per typ, KPI wlasnej sprzedazy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wizja/propozycje": {"get": {"summary": "Propozycje agentow (stan, lead)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Decyzja czlowieka o propozycji: akceptuj (wykonuje skutek) albo odrzuc z powodem; klucz API nie decyduje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "akcja": {"type": "string"}, "powod": {"type": "string"}, "termin": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/wizja/przebieg": {"post": {"summary": "Uruchomienie generatorow propozycji (idempotentne)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/porzadki": {"get": {"summary": "Porzadki: propozycje sprzatania danych (duplikaty, szanse bez ruchu, braki pol, szanse bez opiekuna) z licznikami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "rodzaj", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/porzadki/licznik": {"get": {"summary": "Liczba oczekujacych propozycji Porzadkow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/porzadki/przebieg": {"post": {"summary": "Zebranie propozycji Porzadkow teraz (nic nie zmienia danych)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/porzadki/decyzja": {"post": {"summary": "Akceptacja albo odrzucenie propozycji Porzadkow: ids albo rodzaj; akceptacja robi kopie i wpis w audycie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"decyzja": {"type": "string"}, "ids": {"type": "array"}, "rodzaj": {"type": "string"}, "powod": {"type": "string"}}}}}}}}, "/api/porzadki/cofnij": {"post": {"summary": "Cofniecie zaakceptowanej propozycji Porzadkow z kopii", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}}}}}}}}, "/api/wizja/prompter": {"get": {"summary": "Prompter przed rozmowa z klientem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/wizja/dzien": {"get": {"summary": "Podsumowanie dnia dla zespolu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis podsumowania dnia jako ogloszenia zespolu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wizja/zatrudnienie": {"get": {"summary": "Obciazenie zespolu i rekomendacja zatrudnienia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wizja/budzet": {"get": {"summary": "Konwersje i koszty per kampania, propozycja przesuniecia budzetu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wizja/glos": {"post": {"summary": "Zgloszenie glosowe poza godzinami: szansa, zdarzenie i propozycja oddzwonienia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"numer": {"type": "string"}, "transkrypcja": {"type": "string"}, "nazwa": {"type": "string"}}}}}}}}, "/api/wizja/tlumacz": {"post": {"summary": "Tlumaczenie fragmentu rozmowy na zywo", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}, "na": {"type": "string"}, "kontekst": {"type": "array"}}}}}}}}, "/api/automat": {"get": {"summary": "Automatyka rundy 5: kolejka zadan, okno wysylek, sekwencje, autopilot, piaskownica", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/automat/kolejka": {"get": {"summary": "Kolejka zadan w tle z ponawianiem (liczby i ostatnie zadania)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Przetworz kolejke albo anuluj/ponow zadanie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "id": {"type": "integer"}}}}}}}}, "/api/automat/zdarzenie": {"post": {"summary": "Kolejkuje webhooki wychodzace dla zdarzenia szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"zdarzenie": {"type": "string"}, "lead_id": {"type": "integer"}}}}}}}}, "/api/automat/import/odswiez": {"post": {"summary": "Import zdarzeniowy (push) jednego zrodla", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"zrodlo": {"type": "string"}}}}}}}}, "/api/automat/sekwencje": {"get": {"summary": "Definicje i uruchomione sekwencje wiadomosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Start albo zatrzymanie sekwencji na szansie (szkice trafiaja do kolejki akceptacji)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "sekwencja": {"type": "string"}, "akcja": {"type": "string"}, "id": {"type": "integer"}}}}}}}}, "/api/automat/pamiec": {"get": {"summary": "Fakty o kliencie zebrane przez agenta pamieci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Odswiezenie, dodanie albo usuniecie faktu o kliencie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "akcja": {"type": "string"}, "rodzaj": {"type": "string"}, "fakt": {"type": "string"}, "id": {"type": "integer"}}}}}}}}, "/api/automat/ocena-rozmowy": {"post": {"summary": "Ocena rozmowy handlowej (transkrypcja zapisana albo tekst)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rozmowa_id": {"type": "integer"}, "tekst": {"type": "string"}}}}}}}}, "/api/automat/umowa": {"post": {"summary": "Projekt umowy z oferty i ustalen jako propozycja do przegladu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "ustalenia": {"type": "array"}}}}}}}}, "/api/automat/piaskownica": {"get": {"summary": "Agenci w piaskownicy z raportem proby", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "agent", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Awans agenta z piaskownicy albo odrzucenie probnych propozycji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"agent": {"type": "string"}, "akcja": {"type": "string"}}}}}}}}, "/api/automat/autopilot": {"get": {"summary": "Autopilot zaufanych typow wewnetrznych: dozwolone, wlaczone, zaufanie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/automat/przeglad-promptow": {"get": {"summary": "Przeglad promptow z ostatnich 30 dni", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/automat/ton": {"get": {"summary": "Wskazowki tonu wyuczone z poprawek handlowca", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/automat/przebieg": {"post": {"summary": "Pelny przebieg automatyki rundy 5", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/automat/kolejka-fluxdesku": {"post": {"summary": "Import pozycji kolejki Fluxdesku do kolejki propozycji CRM", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/agenci/po_spotkaniu": {"post": {"summary": "Agent po spotkaniu: notatka i zadania z transkrypcji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}, "transkrypcja": {"type": "string"}}}}}}}}, "/api/wejscie/{rodzaj}": {"get": {"summary": "Weryfikacja webhooka Meta (Messenger, Instagram, WhatsApp, Lead Ads): hub.challenge", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "hub.mode", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "hub.verify_token", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "hub.challenge", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "rodzaj", "in": "path", "required": true, "schema": {"type": "string"}}], "security": []}, "post": {"summary": "Wejscie kanalu (messenger, instagram, whatsapp, meta_lead_ads, linkedin, allegro, olx, google_ads, centralka, p24) z podpisem albo sekretem kanalu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "rodzaj", "in": "path", "required": true, "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"entry": {"type": "array"}, "zdarzenia": {"type": "array"}}}}}}, "security": []}}, "/api/kanaly": {"get": {"summary": "Stan kanalow wiadomosci: skonfigurowane, adresy webhookow, wysylka", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/kanaly/{rodzaj}/synchronizuj": {"post": {"summary": "Pobranie wiadomosci z API Allegro albo OLX (rodzaj: allegro, olx)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "rodzaj", "in": "path", "required": true, "schema": {"type": "string"}}]}}, "/api/leady/{id}/kanaly/odpowiedz": {"post": {"summary": "Odpowiedz klientowi jego kanalem (Messenger, Instagram, WhatsApp) albo w czacie na stronie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/leady/{id}/nagrania": {"get": {"summary": "Nagrania rozmow z centralki przypiete do szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/spotkania": {"get": {"summary": "Spotkania szansy (kalendarz, Calendly, Cal.com)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Spotkanie jako zdarzenie szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"start": {"type": "string"}, "minuty": {"type": "integer"}, "tytul": {"type": "string"}, "miejsce": {"type": "string"}, "uczestnicy": {"type": "array"}, "uid": {"type": "string"}}}}}}}}, "/api/spotkania/import_ics": {"post": {"summary": "Import kalendarza ICS: spotkania z uczestnikami znanymi CRM", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ics": {"type": "string"}}}}}}}}, "/api/osoby/wizytowka": {"post": {"summary": "Wizytowka (OCR obrazu albo tekst) jako nowa osoba", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"obraz": {"type": "string"}, "tekst": {"type": "string"}, "lead_id": {"type": "integer"}, "zapisz": {"type": "boolean"}, "firma_id": {"type": "integer"}}}}}}}}, "/api/leady/{id}/oferta_pdf/{wersja}/akceptacja": {"get": {"summary": "Podpis akceptacji oferty w portalu i zgodnosc skrotu tresci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/oferta_pdf/{wersja}/benchmark": {"get": {"summary": "Porownanie oferty z ofertami wygranych szans", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/oferta_pdf/{wersja}/waluta": {"post": {"summary": "Nowa wersja oferty w walucie klienta po kursie NBP", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"waluta": {"type": "string"}}}}}}}}, "/api/leady/{id}/oferta_pdf/{wersja}/umowa": {"post": {"summary": "Szkic umowy z danych oferty", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "prawa": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/oferta_pdf/{wersja}/link_akceptacji": {"post": {"summary": "Szkic wiadomosci z publicznym linkiem do akceptacji oferty online (tylko w kolejce akceptacji)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kanaly": {"type": "array"}}}}}}}}, "/api/leady/{id}/oferta_ai": {"post": {"summary": "Propozycja pozycji oferty z katalogu i rozmowy (nic nie zapisuje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wskazowka": {"type": "string"}}}}}}}}, "/api/leady/{id}/fragmenty_ofert/zloz": {"post": {"summary": "Tekst warunkow albo uwag oferty ze fragmentow biblioteki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ids": {"type": "array"}, "pole": {"type": "string"}}}}}}}}, "/api/fragmenty_ofert": {"get": {"summary": "Biblioteka fragmentow ofert", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "wszystkie", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Dodanie, zmiana i usuniecie fragmentu oferty (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "id": {"type": "integer"}, "nazwa": {"type": "string"}, "kategoria": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/leady/{id}/rabaty": {"get": {"summary": "Prosby o zgode na rabat w szansie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Prosba o zgode wlasciciela na rabat powyzej progu", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rabat_proc": {"type": "number"}, "uzasadnienie": {"type": "string"}}}}}}}}, "/api/rabaty": {"get": {"summary": "Prosby o rabat do decyzji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Decyzja wlasciciela o rabacie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "id": {"type": "integer"}, "uwaga": {"type": "string"}}}}}}}}, "/api/oferty/statystyka": {"get": {"summary": "Lejek ofert i skutecznosc per usluga", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/naleznosci": {"get": {"summary": "Raty platnosci, faktury i stan KSeF szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Akcje naleznosci: harmonogram, zaplacona, anuluj, link, proforma, faktura, ksef_wyslij, ksef_status, ksef_numer", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}}}}}}}}, "/api/leady/{id}/faktury/{did}/xml": {"get": {"summary": "XML faktury w ksztalcie FA(3)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "did", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/naleznosci": {"get": {"summary": "Zestawienie naleznosci z przedzialami po terminie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "na_dzien", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/naleznosci/eksport": {"get": {"summary": "Eksport faktur dla ksiegowosci (csv, ifirma, wfirma)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/naleznosci/przypomnienia": {"post": {"summary": "Przypomnienia o ratach: zadania i szkice maili, nic nie wysyla", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/platnosci/raport": {"get": {"summary": "Naleznosci z czesciowymi wplatami, nadplatami i kontrola sum", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "na_dzien", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/platnosci/wplaty": {"get": {"summary": "Wplywy z banku i skutecznosc rozpoznawania (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Import wyciagu CSV: parowanie wplat z ratami (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/platnosci/wplaty/{id}/dopasuj": {"post": {"summary": "Reczne dopasowanie wplaty do raty (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/platnosci/prognoza": {"get": {"summary": "Prognoza wplywow rat i abonamentow na 30 dni", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/platnosci/dso": {"get": {"summary": "DSO i skutecznosc przypomnien o platnosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/platnosci/prowizje": {"get": {"summary": "Prowizje niewyplacone ponad 45 dni (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Przypomnienia o zaleglych prowizjach: zadania i powiadomienia (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/platnosci/wezwania": {"get": {"summary": "Wezwania do zaplaty czekajace na akceptacje (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/platnosci/wezwania/{id}/zatwierdz": {"post": {"summary": "Akceptacja wezwania: szkic maila w kolejce poczty (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/platnosci/wezwania/{id}/odrzuc": {"post": {"summary": "Odrzucenie wezwania do zaplaty (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/platnosci/zwrot": {"post": {"summary": "Zwrot wplaty raty z korekta faktury (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/aplikacja/synchronizacja": {"post": {"summary": "Kolejka zmian aplikacji doradcy zapisanych offline (idempotentna; typy notatka, rozmowa, zadanie, odlozenie, plik, nowy_lead)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"urzadzenie": {"type": "string"}, "zmiany": {"type": "array"}}}}}}}}, "/api/aplikacja/wizytowka": {"post": {"summary": "Skaner wizytowek: kontakt z tekstu OCR, opcjonalnie zalozenie szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}, "zapisz": {"type": "boolean"}}}}}}}}, "/api/aplikacja/skrot": {"get": {"summary": "Skrot dla zegarka i samochodu: czekajacy klienci i zdanie do odczytu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/aplikacja/dzis": {"get": {"summary": "Widzet Dzis: do odpowiedzi, zadania na dzis i zalegle, najblizsze spotkanie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/aplikacja/sklep": {"get": {"summary": "Deklaracja danych aplikacji dla Google Play", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/nawigacja": {"get": {"summary": "Adres klienta i odnosniki do nawigacji (geo, Google, Apple)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/centrala": {"get": {"summary": "Telefonia w chmurze: dostawca, numery, doradcy na dyzurze, kolejka", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/centrala/trasa": {"get": {"summary": "Kolejnosc doradcow dla dzwoniacego (opiekun, dyzur)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "numer", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/centrala/numer": {"get": {"summary": "Numer prezentowany klientowi wg produktu albo zrodla", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "produkt", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "zrodlo", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/centrala/kolejka": {"get": {"summary": "Kolejka polaczen i czasy oczekiwania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Dopisanie dzwoniacego do kolejki", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"numer": {"type": "string"}, "id": {"type": "string"}}}}}}}}, "/api/centrala/kolejka/{id}": {"post": {"summary": "Odebranie albo porzucenie wpisu kolejki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}}}}}}}}, "/api/centrala/softphone": {"get": {"summary": "Konfiguracja softphone WebRTC konta (SIP, token Twilio)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/centrala/softphone/start": {"post": {"summary": "Proba polaczenia z softphone i numer prezentowany", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}}}}}}}}, "/api/centrala/podpowiedzi": {"post": {"summary": "Podpowiedzi skryptu na zywo z fragmentu rozmowy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}, "lead_id": {"type": "integer"}}}}}}}}, "/api/centrala/skrypty": {"get": {"summary": "Skrypt rozmow: obiekcje i podpowiedzi", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/centrala/szkolenie": {"get": {"summary": "Nagrania szkoleniowe bez danych klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "kategoria", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Oznaczenie nagrania do szkolenia (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rozmowa_id": {"type": "integer"}, "kategoria": {"type": "string"}, "ocena": {"type": "integer"}}}}}}}}, "/api/centrala/wejscie/zdarzenie/{dostawca}": {"post": {"summary": "Webhook dostawcy telefonii: koniec polaczenia (sekret albo podpis Twilio)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/centrala/wejscie/ivr": {"post": {"summary": "Webhook glosowy Twilio: IVR, trasowanie do doradcow, poczta (TwiML)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/kredyty/zdolnosc": {"get": {"summary": "Kalkulator zdolnosci kredytowej", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dochod", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "zobowiazania", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "okres", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "oprocentowanie", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dorosli", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dzieci", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "koszty", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dsti", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "bufor", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/zdolnosc": {"get": {"summary": "Zdolnosc ze sprawy i werdykt dla kwoty wnioskowanej", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "okres", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "oprocentowanie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/kredyty/produkty": {"get": {"summary": "Baza produktow bankowych z warunkami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "bank", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "cel", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "wszystkie", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowy produkt bankowy (wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"bank": {"type": "string"}, "produkt": {"type": "string"}, "warunki": {"type": "object"}}}}}}}}, "/api/kredyty/produkty/{id}": {"post": {"summary": "Zmiana produktu bankowego (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"warunki": {"type": "object"}}}}}}}}, "/api/leady/{id}/dopasowanie": {"get": {"summary": "Ranking produktow bankowych dla klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Ranking produktow z komentarzem AI (ai: true)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ai": {"type": "boolean"}}}}}}}}, "/api/kredyty/zgodnosc": {"get": {"summary": "Zgodnosc posrednika kredytowego: rejestr, OC, szkolenia, ostrzezenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Wpis zgodnosci posrednika (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klucz": {"type": "string"}, "wartosc": {"type": "string"}}}}}}}}, "/api/kredyty/refinansowanie": {"get": {"summary": "Kandydaci do refinansowania po splacie kredytu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiecy", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Tag, segment i szkic kampanii refinansowania (wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"miesiecy": {"type": "integer"}}}}}}}}, "/api/sla": {"get": {"summary": "SLA odpowiedzi: pasek czeka na nas, kolejka wg pilnosci, przekroczenia limitow z przyczyna, czas kolejka do wyslania, mediany per kanal", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/kredyty/posrednik": {"get": {"summary": "Stan zgodnosci posrednika: braki, blokada wysylki, terminy (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/kredyty/knf": {"get": {"summary": "Wynik kontroli wpisu w rejestrze KNF (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Sprawdza wpis w rejestrze KNF albo zapisuje sprawdzenie reczne (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wynik": {"type": "string"}, "numer": {"type": "string"}}}}}}}}, "/api/kredyty/terminy": {"get": {"summary": "OC, szkolenie i wpis KNF z terminem w ciagu 60 dni", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/kredyty/banki-umowy": {"get": {"summary": "Umowy agencyjne z bankami (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Umowa agencyjna z bankiem: numer i data, pusty numer usuwa (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"bank": {"type": "string"}, "numer": {"type": "string"}, "data": {"type": "string"}}}}}}}}, "/api/kredyty/uprawnienia": {"get": {"summary": "Zakres uprawnien doradcow (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zakres uprawnien doradcy: hipoteczne, gotowkowe, firmowe, ubezpieczenia (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"opiekun": {"type": "string"}, "zakres": {"type": "array"}}}}}}}}, "/api/leady/{id}/obowiazki": {"get": {"summary": "Obowiazki informacyjne i elementy sprawy kredytowej", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Zapis obowiazku informacyjnego (kiedy, kanal, kto)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"element": {"type": "string"}, "kanal": {"type": "string"}}}}}}}}, "/api/leady/{id}/archiwum": {"post": {"summary": "Zadanie klienta o skroceniu archiwizacji korespondencji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"uwagi": {"type": "string"}}}}}}}}, "/api/kredyty/prowizje/stawki": {"get": {"summary": "Stawki prowizji per bank i produkt (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis stawki banku: proc, minimum, maksimum, obowiazuje_od (wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"bank": {"type": "string"}, "produkt": {"type": "string"}, "proc": {"type": "number"}, "minimum": {"type": "number"}, "maksimum": {"type": "number"}, "obowiazuje_od": {"type": "string"}}}}}}}}, "/api/kredyty/prowizje/wyciag": {"post": {"summary": "Import wyciagu CSV: dopasowanie wplywow prowizji do spraw (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"csv": {"type": "string"}, "zapisz": {"type": "boolean"}}}}}}}}, "/api/kredyty/prowizje/niewyplacone": {"get": {"summary": "Prowizje bez wplywu po uruchomieniu kredytu (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/kredyty/prowizje/doradcy": {"get": {"summary": "Rozliczenie prowizji doradcow w miesiacu, csv=1 dla ksiegowej (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "csv", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/kredyty/prowizje/przychod": {"get": {"summary": "Przychod per bank i produkt w miesiacu, zgodnosc z ksiegowoscia (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "ksiegowosc", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/kredyty/banki": {"get": {"summary": "Dane bankow i umowy agencyjne z terminami (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/kredyty/aktualnosc": {"get": {"summary": "Produkty bankowe bez aktualizacji ponad 60 dni (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/prowizja": {"get": {"summary": "Prowizja sprawy: kwota ze stawki, stan, historia, storno, dokumenty (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/porownanie": {"get": {"summary": "Porownanie 3-5 ofert bankow: rata, RRSO, koszt calkowity", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "okres", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/podpowiedz_banku": {"get": {"summary": "Trzy propozycje banku z uzasadnieniem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/skala/zakup": {"post": {"summary": "Zakup na stronie: trial, abonament i sesja Stripe Checkout (karta) albo proforma (przelew)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"firma": {"type": "string"}, "email": {"type": "string"}, "plan": {"type": "string"}, "uzytkownicy": {"type": "integer"}, "nip": {"type": "string"}, "kraj": {"type": "string"}, "platnosc": {"type": "string"}, "wyslij": {"type": "boolean"}}}}}}}}, "/api/skala/portal/{klient}": {"post": {"summary": "Link do portalu rozliczen Stripe klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wyslij": {"type": "boolean"}}}}}}}}, "/api/skala/licencje/{klient}": {"post": {"summary": "Licencje wg aktywnych kont instancji klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/dziennik/{klient}": {"get": {"summary": "Dziennik zdarzen klienta: zakup, platnosci, karencja, anulowanie, eksport", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/naleznosci": {"get": {"summary": "Jeden widok nieoplaconych proform i faktur", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/przelew": {"post": {"summary": "Zaksiegowanie przelewu na proforme lub fakture", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"numer": {"type": "string"}, "kwota": {"type": "number"}, "data": {"type": "string"}}}}}}}}, "/api/skala/przelew/wyciag": {"post": {"summary": "Zaksiegowanie wierszy wyciagu po numerze PF/FS w tytule", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wiersze": {"type": "array"}}}}}}}}, "/api/skala/mrr": {"get": {"summary": "MRR, klienci i churn z wplat Stripe zestawione z umowami oraz konwersja prob", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/skala/oferta": {"post": {"summary": "Oferta z jednego wzoru: abonament i wdrozenie pod klucz osobno, VAT wg nabywcy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"plan": {"type": "string"}, "uzytkownicy": {"type": "integer"}, "nabywca": {"type": "object"}, "wdrozenie_zl": {"type": "number"}}}}}}}}, "/api/followupy/lead/{id}": {"get": {"summary": "Plan follow-upow po ofercie, stan uspienia i flaga ciszy jednej szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/followupy/cisza/{id}": {"post": {"summary": "Wlacza albo wylacza tryb ciszy klienta (telefon, pisanie, wszystko; null wylacza): blokuje automatyczny kontakt", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"cisza": {"type": "string"}}}}}}}}, "/api/followupy/raport": {"get": {"summary": "Leady w toku bez zadania i terminu, pokrycie ofert zadaniem follow-upu i skutecznosc follow-upow w 48 h (dzien 3, 7 i 14)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/stan": {"post": {"summary": "Stan synchronizacji danych w telefonie doradcy (do dziennika uslugi)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlaczone": {"type": "boolean"}}}}}}}}, "/api/telefon/sms": {"get": {"summary": "Watek SMS z telefonu doradcy dla szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Wgranie SMS-ow z telefonu doradcy (idempotentnie po id z telefonu; tylko numery znanych szans)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wiadomosci": {"type": "array"}}}}}}}}, "/api/telefon/polaczenia": {"get": {"summary": "Rozmowy telefoniczne szansy z czasem i znacznikiem nagrania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Wgranie rejestru polaczen z telefonu doradcy (idempotentnie po id z telefonu)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"polaczenia": {"type": "array"}}}}}}}}, "/api/telefon/aktywnosc": {"get": {"summary": "Kiedy i ile rozmawiali doradcy: per konto i dzien oraz lista rozmow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/nagrania": {"post": {"summary": "Wgranie nagrania rozmowy (surowe bajty audio) do polaczenia z wgranego rejestru", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "411": {"description": "Length Required", "content": {"application/json": {"schema": {"type": "object"}}}}, "413": {"description": "Content Too Large", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "ext_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "rozszerzenie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/integracje/fluxksef": {"get": {"summary": "Stan polaczenia z FluxKSeF, ostatnie faktury sprzedazy i kontrahenci (odczyt)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/integracje/fluxksef/synchronizuj": {"post": {"summary": "Odpytanie FluxKSeF o stan KSeF i wplaty faktur w toku", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/integracje/fluxksef/webhook": {"post": {"summary": "Zdarzenie invoice.* z FluxKSeF (podpis X-FluxKSeF-Signature)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"type": {"type": "string"}, "invoice": {"type": "object"}}}}}}, "security": []}}, "/api/leady/{id}/kontomatik": {"get": {"summary": "Zgody Kontomatik i ostatnia analiza rachunku sprawy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Link zgody na jednorazowy odczyt rachunku (link), anulowanie (anuluj) albo przeliczenie zdolnosci (przelicz)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}}}}}}}}, "/api/kontomatik/zgoda/{token}": {"get": {"summary": "Strona zgody z widgetem Kontomatik (publiczna)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}, "post": {"summary": "Sesja z widgetu Kontomatik (publiczna, raz)", "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"sesja": {"type": "string"}, "podpis": {"type": "string"}}}}}}, "security": []}}, "/api/kontomatik/zgoda/{token}/stan": {"get": {"summary": "Stan importu po zgodzie (publiczna)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/meta/kolejka": {"get": {"summary": "Szkice odpowiedzi do Messengera i Instagrama fanpage czekajace na akceptacje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/meta/kolejka/{id}": {"post": {"summary": "Akceptacja, odrzucenie albo reczne ponowienie szkicu odpowiedzi (tylko sesja konta); wysylka przez fluxcrm meta-skrzynka", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/facebook/kolejka": {"get": {"summary": "Szkice komentarzy i wiadomosci do autorow postow w grupach Facebooka, stan blokady konta i limit dzienny", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/facebook/kolejka/{id}": {"post": {"summary": "Akceptacja, odrzucenie albo ponowienie pozycji kolejki Facebooka (tylko sesja konta); wysylka przez fluxcrm facebook-grupy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/funkcje": {"get": {"summary": "Funkcje instancji: katalog, stan dla konta, profil i flagi (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/funkcje/flagi/{klucz}": {"post": {"summary": "Flaga funkcji: wlaczona, procent wdrozenia, loginy (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlaczona": {"type": "boolean"}, "procent": {"type": "integer"}}}}}}}}, "/api/funkcje/uzycie": {"get": {"summary": "Anonimowe zbiorcze uzycie funkcji z ostatnich dni (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/status/historia": {"get": {"summary": "Publiczna historia: przerwy serwisowe i incydenty z ostatnich 90 dni", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/wsparcie/przerwy": {"get": {"summary": "Planowane przerwy trwajace i przyszle", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "wszystkie", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Zapowiedz przerwy serwisowej (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "od": {"type": "string"}, "do": {"type": "string"}}}}}}}}, "/api/wsparcie/przerwy/{numer}": {"post": {"summary": "Zmiana albo odwolanie przerwy (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"odwolaj": {"type": "boolean"}}}}}}}}, "/api/wsparcie/incydenty": {"get": {"summary": "Rejestr incydentow (wlasciciel: pelny, inni: publiczne)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy incydent (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "waga": {"type": "string"}}}}}}}}, "/api/wsparcie/incydenty/retro": {"get": {"summary": "Zalegle retro, otwarte dzialania i MTTR (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wsparcie/incydenty/szablon-retro": {"get": {"summary": "Szablon pytan retrospekcji incydentu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wsparcie/incydenty/{numer}/aktualizacja": {"post": {"summary": "Aktualizacja incydentu i zmiana statusu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}, "status": {"type": "string"}}}}}}}}, "/api/wsparcie/incydenty/{numer}/retro": {"post": {"summary": "Zapis retrospekcji incydentu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"przyczyna": {"type": "string"}, "wnioski": {"type": "string"}}}}}}}}, "/api/wsparcie/incydenty/{numer}/dzialanie": {"post": {"summary": "Oznaczenie dzialania z retro jako wykonanego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"numer": {"type": "integer"}}}}}}}}, "/api/sledzenie/statystyki": {"get": {"summary": "Otwarcia i klikniecia sledzonych maili (mail albo lead_id)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "mail", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/sledzenie/ustawienia": {"get": {"summary": "Stan sledzenia maili i adresy z wylaczonym sledzeniem (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/sledzenie/wylaczone": {"post": {"summary": "Reczne wylaczenie albo przywrocenie sledzenia dla adresu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"email": {"type": "string"}}}}}}}}, "/api/poczta/skrzynki": {"get": {"summary": "Skrzynki pocztowe uzytkownika (wlasciciel: wszystkie)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowa skrzynka uzytkownika: adres, odbior (IMAP albo Graph), wysylka (SMTP)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"adres": {"type": "string"}}}}}}}}, "/api/poczta/nadawca": {"get": {"summary": "Skrzynki autora do wyboru na karcie leada i domyslna zgodna z ostatnia wiadomoscia klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/poczta/skrzynki/{numer}": {"post": {"summary": "Zmiana albo usuniecie skrzynki; domyslna: true przestawia skrzynke domyslna", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"etykieta": {"type": "string"}}}}}}}}, "/api/poczta/skrzynki/{numer}/test": {"post": {"summary": "Proba logowania do skrzynki bez pobierania poczty", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/sso/dostawcy": {"get": {"summary": "Dostawcy logowania SSO dostepni w tej instancji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/sso/google/start": {"get": {"summary": "Start logowania przez Google (302 na ekran dostawcy)", "responses": {"302": {"description": "Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/sso/microsoft/start": {"get": {"summary": "Start logowania przez Microsoft (302 na ekran dostawcy)", "responses": {"302": {"description": "Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/sso/powiazania": {"get": {"summary": "Powiazania kont CRM z adresami SSO (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Powiazanie konta z adresem Google/Microsoft albo usuniecie powiazania (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "email": {"type": "string"}}}}}}}}, "/api/zgodnosc/dostep": {"get": {"summary": "Dziennik dostepu do danych wrazliwych (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "kategoria", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/zgodnosc/dostep/eksport": {"get": {"summary": "Eksport dziennika dostepu (csv, xlsx, pdf) z tymi samymi filtrami; sam jest wpisem w dzienniku (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "501": {"description": "Not Implemented", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "kategoria", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/zgodnosc/dostep/podsumowanie": {"get": {"summary": "Podsumowanie dostepu do danych wrazliwych wg kont i alerty masowego odczytu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/zgodnosc/szyfrowanie": {"get": {"summary": "Szyfrowanie danych w spoczynku: wolumen, kopie .fxe i sekrety (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/zgodnosc/ksef": {"get": {"summary": "Gotowosc faktur do KSeF: przeglad albo kontrola i szkic FA(3) jednej faktury (numer)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "numer", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/zgodnosc/lokalizacja": {"get": {"summary": "Lokalizacja danych instancji i funkcje wysylajace dane poza serwer", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/zdrowie": {"post": {"summary": "Raport zdrowia aplikacji Dzwonek z telefonu doradcy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"urzadzenie": {"type": "string"}, "powiadomienia": {"type": "string"}}}}}}}, "get": {"summary": "Raport z telefonow: urzadzenia z ocena i podsumowanie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/diagnostyka": {"post": {"summary": "Zlecenie zdalnej diagnostyki telefonu doradcy (tylko wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "urzadzenie": {"type": "string"}}}}}}}, "get": {"summary": "Zlecenia diagnostyki i ich wyniki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/diagnostyka/zlecenia": {"get": {"summary": "Zlecenia diagnostyki oczekujace na ten telefon", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "urzadzenie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/diagnostyka/{numer}/wynik": {"post": {"summary": "Wynik diagnostyki odeslany przez telefon", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"urzadzenie": {"type": "string"}}}}}}}}, "/api/wsparcie/faq": {"get": {"summary": "FAQ bledow: wpisy pasujace do statusu, komunikatu albo pytania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "status", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "powod", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/wsparcie/czat": {"post": {"summary": "Czat wsparcia: pytanie do agenta (z bazy wiedzy), kolejna wiadomosc albo nie_pomoglo", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}, "zgloszenie": {"type": "string"}}}}}}}}, "/api/wsparcie/zgloszenia": {"get": {"summary": "Zgloszenia wsparcia konta (wlasciciel: wszystkie)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "status", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/wsparcie/zgloszenia/{numer}": {"get": {"summary": "Rozmowa wsparcia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Odpowiedz czlowieka w rozmowie wsparcia (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}, "akcja": {"type": "string"}}}}}}}}, "/api/wsparcie/zgloszenia/{numer}/eskaluj": {"post": {"summary": "Przekazanie rozmowy czlowiekowi", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"powod": {"type": "string"}}}}}}}}, "/api/wsparcie/zalegle": {"post": {"summary": "Awans zgloszen po terminie SLA (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/wsparcie/metryki": {"get": {"summary": "Czas reakcji wsparcia, odsetek w SLA i rozwiazania automatu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/analiza_tresci": {"get": {"summary": "Ton, pilnosc i proponowane tagi z rozmowy z klientem (regulowo, nic nie zapisuje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Dodaje tagi z analizy rozmowy do tagow szansy (bez usuwania istniejacych)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tagi": {"type": "array"}}}}}}}}, "/api/szukaj/znaczeniowe": {"get": {"summary": "Wyszukiwanie znaczeniowe szans: zapytanie rozszerzone o synonimy, ranking podobienstwa tekstu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/duplikaty/rozmyte": {"get": {"summary": "Duplikaty rozmyte: podobne nazwy, telefony w innym zapisie, literowki w e-mailu (poza parami znanymi)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "prog", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/duplikaty/kandydaci": {"get": {"summary": "Kandydaci do scalenia: ta sama osoba w roznych kanalach, z pewnoscia i powodem (nic nie scala)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "min", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/duplikaty/podglad": {"get": {"summary": "Podglad scalenia dwoch szans (a, b): liczby wiadomosci, zadan, notatek i zdarzen, ktora zostaje i wynik po scaleniu (nic nie scala)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "a", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "b", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/duplikaty/scalone": {"get": {"summary": "Scalenia w szanse (lead) z ostatnich 7 dni, ktore mozna cofnac przez POST /api/leady/{id}/cofnij_scal", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/duplikaty/odrzuc": {"post": {"summary": "To nie ta sama osoba: para znika z kart i listy kandydatow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"a": {"type": "integer"}, "b": {"type": "integer"}}}}}}}}, "/api/przypiecia/szukaj": {"get": {"summary": "Szukanie leadow jako celu przypiecia (nazwa, firma, e-mail, numer)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "bez", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/przypiecia/przypnij": {"post": {"summary": "Przypnij watek do innego leada: zdarzenia, klucz nadawcy, audyt, dane do cofniecia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"z": {"type": "integer"}, "do": {"type": "integer"}}}}}}}}, "/api/przypiecia/cofnij": {"post": {"summary": "Cofnij przypiecie watku", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}}}}}}}}, "/api/przypiecia/ruchy": {"get": {"summary": "Przypiecia dotyczace leada, ktorych nie cofnieto", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/przypiecia/reguly": {"get": {"summary": "Reguly przypinania nadawcy (domena, adres, numer, klucz zrodla) i przypiecia reczne", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Dodaje regule przypinania nadawcy do leada albo firmy", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"typ": {"type": "string"}, "wartosc": {"type": "string"}, "lead_id": {"type": "integer"}, "firma": {"type": "string"}}}}}}}}, "/api/kompletnosc": {"get": {"summary": "Kompletnosc aktywnych szans: procent wg wag pol i etapu oraz lista brakow, najpierw te, na ktore czekamy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "maks", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/polecenia": {"get": {"summary": "Program polecen: polecajacy z liczba poleconych szans, wygranych i wartoscia wygranych, od najwyzszej wartosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/polecenia/rejestr": {"get": {"summary": "Rejestr polecen: polecajacy, polecona szansa, stan, wartosc, nagroda i kod", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/polecenia/ustaw": {"post": {"summary": "Ustaw, kto polecil szanse (numer szansy polecajacego; pusty zdejmuje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead": {"type": "integer"}, "polecil": {"type": "integer"}}}}}}}}, "/api/klienci": {"get": {"summary": "Rejestr klientow po sprzedazy: wdrozenie, faktury, proformy, zgloszenia i sygnal dosprzedazy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/klienci/wdrozenie": {"post": {"summary": "Ustaw stan wdrozenia wygranego klienta (pusty wraca do wyliczanego z projektu)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead": {"type": "integer"}, "stan": {"type": "string"}}}}}}}}, "/api/klienci/karta": {"get": {"summary": "Karta klienta: umowy, faktury, proformy, raty, projekty, abonamenty, reklamacje, opinie, polecenia, LTV i ryzyko odejscia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/klienci/ltv": {"get": {"summary": "Najlepsi klienci wg LTV (umowy, dodatki, abonamenty)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/klienci/zagrozeni": {"get": {"summary": "Klienci zagrozeni odejsciem (wskaznik 0-100 z powodami)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/reklamacje": {"get": {"summary": "Sprawy klientow po sprzedazy (reklamacje, zapytania, serwis) z filtrem statusu i terminu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "status", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "termin", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "rodzaj", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "lead", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "organizacja", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Nowa sprawa klienta (R-0001) powiazana z szansa, firma lub osoba albo z mailem szansy", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "opis": {"type": "string"}, "lead": {"type": "integer"}}}}}}}}, "/api/reklamacje/{numer}": {"get": {"summary": "Sprawa klienta z historia zmian", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zmiana statusu, opiekuna, terminu, priorytetu albo notatka (kazda w historii)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"status": {"type": "string"}}}}}}}}, "/api/reklamacje/{numer}/odpowiedz": {"post": {"summary": "Szkic maila do klienta w kolejce poczty (wysyla czlowiek po akceptacji)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"temat": {"type": "string"}, "tresc": {"type": "string"}}}}}}}}, "/api/uprawnienia": {"get": {"summary": "Uprawnienia rekordow i pol (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "put": {"summary": "Zapis uprawnien: widocznosc szans i poziomy pol per rola i konto", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"role": {"type": "object"}, "konta": {"type": "object"}}}}}}}}, "/api/rozmowy_agentow": {"get": {"summary": "Watek rozmowy z agentem (freelancing dla szansy albo crm); przeczytaj=1 oznacza odpowiedzi jako przeczytane", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "agent", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "przeczytaj", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Pytanie do agenta (freelancing dla szansy albo crm); trafia do sesji Fluxdeska", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"agent": {"type": "string"}, "lead_id": {"type": "integer"}, "tresc": {"type": "string"}}}}}}}}, "/api/rozmowy_agentow/nieprzeczytane": {"get": {"summary": "Liczba nieprzeczytanych odpowiedzi agentow (crm i per szansa)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/orange/wdrozenie": {"get": {"summary": "Lista kontrolna wdrozenia telefonii Orange, harmonogram z operatorem i pokrycie kart", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Termin i stan kroku wdrozenia Orange", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"krok": {"type": "string"}, "stan": {"type": "string"}, "termin": {"type": "string"}}}}}}}}, "/api/orange/pilot": {"get": {"summary": "Test pilota: czy polaczenie z numeru testowego dotarlo do karty leada", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "numer", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/poczta/czas_wysylki": {"get": {"summary": "Czas od akceptacji do wysylki: mediana, p95 i odsetek ponizej 60 s (cel 95%) dla poczty i odpowiedzi Meta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/poczta/watek_kontrola": {"get": {"summary": "Maile wyslane z CRM w trakcie rozmowy bez In-Reply-To (cel: 0 nowych watkow w rozmowie)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/poczta/adresaci": {"get": {"summary": "Osoby szansy z adresem e-mail i domyslne Do oraz DW maila (osoba glowna, decydenci)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/probna": {"get": {"summary": "Okres probny instancji: do kiedy, ile dni zostalo i czy panel jest juz tylko do odczytu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/meta": {"get": {"summary": "Okna 24 h kanalow Meta z propozycja SMS albo maila, numer z rozmowy, stany wiadomosci i zalaczniki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/meta/przenies": {"post": {"summary": "Przeniesienie szkicu z kanalu Meta (okno zamkniete) na SMS albo mail przez kolejke akceptacji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/whatsapp/transport": {"get": {"summary": "Decyzja o transporcie WhatsApp (Cloud API a sesja), koszt i lista pilota", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/whatsapp/szablony": {"get": {"summary": "Katalog szablonow WhatsApp ze stanem zatwierdzenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowy szablon WhatsApp (wersja robocza) albo zalozenie trzech domyslnych", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/whatsapp/szablony/synchronizuj": {"post": {"summary": "Pobranie stanu szablonow z Meta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/whatsapp/szablony/{nazwa}/zglos": {"post": {"summary": "Zgloszenie szablonu do zatwierdzenia w Meta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "nazwa", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/meta/instagram": {"get": {"summary": "Leady z Instagrama: kanal odpowiedzi z karty i okno 24 h", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/meta/zalaczniki": {"get": {"summary": "Zalaczniki klientow bez pliku i duplikaty leadow po numerze", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/meta/plan-api": {"get": {"summary": "Plan migracji skrzynki fanpage z CDP na Graph API: kamienie, stan i tryb pracy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/kopie": {"get": {"summary": "Stan kopii zapasowych (ostatnia kopia, alarm, RPO/RTO, retencja) i opis, co dzieje się z danymi (tylko właściciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/awaria": {"post": {"summary": "Raport awarii aplikacji Dzwonek: licznik sesji i zapisane wyjatki (bez tresci klientow)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"urzadzenie": {"type": "string"}, "wersja": {"type": "string"}, "wariant": {"type": "string"}, "sdk": {"type": "integer"}, "sesje": {"type": "integer"}, "awarie": {"type": "array"}}}}}}}}, "/api/dzwonek-play/status": {"get": {"summary": "Stan wdrozenia Dzwonka w Google Play: punkty, odsetek awarii, migracja telefonow, wydania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/nagrania/zasady": {"get": {"summary": "Podstawa prawna nagrywania, zapowiedz, klauzula do umowy i decyzja o nagrywaniu z telefonu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/nagrania/wskazniki": {"get": {"summary": "Odsetek rozmow z nagraniem, bledy pobrania i alert gdy ponizej progu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/nagrania/lead/{id}": {"get": {"summary": "Nagrania szansy (wlasciciel i opiekun)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/nagrania/{id}/plik": {"get": {"summary": "Odsluch nagrania (Range), zapisany w dzienniku", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "206": {"description": "Partial Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/nagrania/{id}/znaczniki": {"post": {"summary": "Znacznik na osi czasu nagrania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"t": {"type": "number"}, "tekst": {"type": "string"}}}}}}}}, "/api/nagrania/{id}/oznacz": {"post": {"summary": "Wyjatek od retencji nagrania (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"oznaczone": {"type": "boolean"}}}}}}}}, "/api/nagrania/{id}/usun": {"post": {"summary": "Usuniecie nagrania i transkryptu na zadanie klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"potwierdzenie": {"type": "boolean"}}}}}}}}, "/api/nagrania/{id}/transkrypcja": {"post": {"summary": "Transkrypcja nagrania na zadanie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/nagrania/{id}/dziennik": {"get": {"summary": "Dziennik odsluchow i usuniec nagrania (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/nagrania/import": {"post": {"summary": "Import reczny pliku audio do karty szansy (cialo binarne)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "413": {"description": "Content Too Large", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "rozszerzenie", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "czas_s", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/rozmowy/szukaj": {"get": {"summary": "Szukanie w tresci nagranych rozmow (fragment, sekunda segmentu, filtr slowa kluczowego)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "slowo", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/rozmowy/zuzycie": {"get": {"summary": "Zuzycie miesiaca na rozmowy: minuty, koszt transkrypcji i modelu, limit", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/rozmowy/trafnosc": {"get": {"summary": "Trafnosc podsumowan rozmow tydzien po tygodniu i zgodnosc oceny wg skryptu z ocena czlowieka", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/rozmowa/{id}": {"get": {"summary": "Transkrypcja z mowcami, slowa kluczowe, ocena i propozycje jednej rozmowy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/rozmowa/{id}/ocena": {"post": {"summary": "Ocena podsumowania rozmowy: trafne albo do_poprawki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ocena": {"type": "string"}}}}}}}}, "/api/telefon/rozmowa/{id}/ocena_czlowieka": {"post": {"summary": "Ocena rozmowy 0-100 wystawiona przez czlowieka", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ocena": {"type": "integer"}}}}}}}}, "/api/telefon/rozmowa/{id}/transkrybuj": {"post": {"summary": "Transkrypcja rozmowy na zadanie (po przekroczeniu miesiecznego limitu)", "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/rozmowa/{id}/szkic_maila": {"post": {"summary": "Szkic maila z ustaleniami rozmowy w kolejce akceptacji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wymus": {"type": "boolean"}}}}}}}}, "/api/telefon/propozycje/{id}/przyjmij": {"post": {"summary": "Przyjecie propozycji z rozmowy (zadanie albo zmiana danych szansy)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/propozycje/{id}/odrzuc": {"post": {"summary": "Odrzucenie propozycji z rozmowy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/sms/porownanie": {"get": {"summary": "Porównanie wysyłki SMS z telefonu doradcy i przez bramkę: koszt, ryzyko blokady numeru", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/sms/podglad": {"get": {"summary": "Długość, liczba segmentów i kodowanie treści SMS", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "tresc", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/sms/nadawca": {"get": {"summary": "Nazwa nadawcy SMS, jej poprawność i ostatni test odbioru", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/sms/nadawca/test": {"post": {"summary": "SMS testowy nazwy nadawcy w kolejce akceptacji (właściciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"lead_id": {"type": "integer"}}}}}}}}, "/api/sms/nadawca/test/{id}/odbior": {"post": {"summary": "Wynik testu odbioru nazwy nadawcy (właściciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"odebrano": {"type": "boolean"}}}}}}}}, "/api/sms/koszty": {"get": {"summary": "Koszt SMS-ów wg dnia, szansy i typu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/sms/statusy/odswiez": {"post": {"summary": "Odświeżenie statusu doręczenia z bramki (właściciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/sms/dlr": {"get": {"summary": "Callback bramki SMS ze statusem doręczenia (sekret w adresie)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "sekret", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "MsgId", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "status", "in": "query", "required": false, "schema": {"type": "string"}}], "security": []}}, "/api/sms/k/{kod}": {"get": {"summary": "Przekierowanie linku z SMS-a z licznikiem kliknięć", "responses": {"302": {"description": "Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/leady/{id}/sms/link": {"post": {"summary": "SMS z linkiem do portalu w kolejce akceptacji, link śledzony", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/skrzynka_sms": {"get": {"summary": "Wspólny wątek szansy: mail, Messenger, SMS, telefon, portal, z kosztem SMS", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/sms/kampanie": {"get": {"summary": "Lista kampanii SMS (właściciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowa kampania SMS z listy szans: zgody, STOP, deduplikacja (właściciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "tresc": {"type": "string"}, "lead_ids": {"type": "array"}}}}}}}}, "/api/sms/kampanie/{id}/wyslij": {"post": {"summary": "Wysyłka kampanii SMS przez kolejkę akceptacji (właściciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/sms/terminy/{id}/obecnosc": {"post": {"summary": "Oznaczenie obecności klienta na terminie (tak albo nie)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"obecnosc": {"type": "string"}}}}}}}}, "/api/sms/nieobecnosci": {"get": {"summary": "Nieobecności z przypomnieniem SMS i bez niego (cel -20%)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/niezawodnosc/bateria": {"get": {"summary": "Instrukcja wylaczenia optymalizacji baterii (Samsung, Xiaomi, Pixel, inne)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "producent", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/niezawodnosc/uprawnienia": {"get": {"summary": "Uprawnienia aplikacji Dzwonek z uzasadnieniem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/niezawodnosc/aktualizacja": {"get": {"summary": "Aktualizacja: APK z serwera (bezposredni) albo tylko Play (sklep)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "kanal", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "kod_wersji", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/niezawodnosc/wersje": {"get": {"summary": "Telefony zespolu z wersja aplikacji i data (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/niezawodnosc/gotowosc": {"get": {"summary": "Czy wszystko dziala: siec, powiadomienia, bateria, ostatni dzwonek", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "urzadzenie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/niezawodnosc/ustawienia": {"get": {"summary": "Tryb polaczenia telefonu (push, long-poll) zalezny od zuzycia baterii", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "urzadzenie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/niezawodnosc/test": {"post": {"summary": "Proba dzwonka z pomiarem czasu dotarcia pusha", "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "urzadzenie": {"type": "string"}}}}}}}}, "/api/telefon/niezawodnosc/testy": {"get": {"summary": "Statystyki prob dzwonka: mediana, p95, odsetek ponizej 5 s (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "producent", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/telefon/niezawodnosc/macierz": {"get": {"summary": "Macierz modeli i wersji Androida z wynikami prob dzwonka (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/niezawodnosc/bledy": {"post": {"summary": "Blad aplikacji bez tresci rozmow i danych osobowych", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"komunikat": {"type": "string"}, "miejsce": {"type": "string"}, "wersja": {"type": "string"}, "model": {"type": "string"}, "android": {"type": "string"}}}}}}}, "get": {"summary": "Zagregowane bledy aplikacji (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/telefon/niezawodnosc/uniewaznij": {"post": {"summary": "Zdalne wylogowanie telefonu (tylko wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"login": {"type": "string"}, "urzadzenie": {"type": "string"}}}}}}}}, "/api/telefon/niezawodnosc/test/{numer}/dotarl": {"post": {"summary": "Potwierdzenie odebrania pusha testowego z podpisem zdarzenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ts": {"type": "integer"}, "podpis": {"type": "string"}}}}}}}}, "/api/realizacja": {"get": {"summary": "Przegląd realizacji: lejek projektów, wygrane bez projektu, zastój, przeciążenia, mediany startu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/realizacja/cykl": {"post": {"summary": "Uruchamia cykl realizacji (projekty z wygranych, przypomnienia, odbiory milczące, dopłaty)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/realizacja/{id}/gotowosc": {"post": {"summary": "Zgłoszenie gotowości do odbioru ze szkicem do klienta i opcją odbioru milczącego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"odbior_milczacy": {"type": "boolean"}}}}}}}}, "/api/realizacja/{id}/raport": {"post": {"summary": "Szkic raportu postępu projektu dla klienta (kamienie i godziny)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/realizacja/{id}/opinia": {"post": {"summary": "Szkic prośby o opinię po zakończeniu projektu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/realizacja/{id}/dostepy": {"get": {"summary": "Dostępy i pliki oczekiwane od klienta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Dodaje dostęp albo plik oczekiwany od klienta (blokuje kamień)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "rodzaj": {"type": "string"}, "kamien_id": {"type": "integer"}}}}}}}}, "/api/realizacja/{id}/dostepy/{did}": {"post": {"summary": "Oznacza dostęp jako dostarczony albo brakujący", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "did", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"stan": {"type": "string"}}}}}}}}, "/api/realizacja/{id}/doplaty/{did}": {"post": {"summary": "Decyzja o dopłacie (akceptuj tworzy ratę, odrzuć zamyka propozycję)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "did", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "kwota_netto": {"type": "number"}}}}}}}}, "/api/naleznosci/do_wystawienia": {"get": {"summary": "Wygrane szanse bez faktury ponad 7 dni od odbioru", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/naleznosci/ciaglosc": {"get": {"summary": "Kontrola ciaglosci numeracji faktur i proform oraz czasy przyjecia w KSeF", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/naleznosci/jpk": {"get": {"summary": "Miesieczne zestawienie sprzedazy z VAT pod JPK (json albo csv)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/faktury/{fid}/pdf": {"get": {"summary": "PDF faktury do pobrania (base64)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/dosprzedaz": {"get": {"summary": "Propozycje uslug dodatkowych i ich skutecznosc (wygrane z zaproponowanych) per regula", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/dosprzedaz/uruchom": {"post": {"summary": "Przeglad klientow: nowe propozycje SEO i integracji jako zadania i szkice maili w kolejce", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/opinie": {"get": {"summary": "Opinie po odbiorze: skutecznosc prosb (cel 50% odpowiedzi) i referencje czekajace na decyzje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/opinie/nps": {"get": {"summary": "NPS wg uslugi, wykonawcy i kanalu pozyskania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "od", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "do", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/opinie/referencje": {"get": {"summary": "Opinie 9-10 ze zgoda na cytat do publikacji jako referencje", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/opinie/referencje/zatwierdz": {"post": {"summary": "Zatwierdz opinie do publikacji (oferta i strona)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ankieta": {"type": "integer"}, "podpis": {"type": "string"}}}}}}}}, "/api/opinie/referencje/odrzuc": {"post": {"summary": "Odrzuc opinie z publikacji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ankieta": {"type": "integer"}}}}}}}}, "/api/opinie/publiczne": {"get": {"summary": "Zatwierdzone opinie klientow (publiczne, bez logowania)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/opinie/popros": {"post": {"summary": "Uruchom od reki prosby o opinie, przypomnienia i prosby o polecenie (szkice w kolejce poczty)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/relacje/studia": {"get": {"summary": "Studia przypadku z projektow (szkic, zgoda klienta, publikacja)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/relacje/studium": {"post": {"summary": "Szkic studium przypadku z projektu: problem, rozwiazanie, wynik", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"projekt": {"type": "integer"}}}}}}}}, "/api/relacje/studium/zgoda": {"post": {"summary": "Zapisz zgode klienta na publikacje studium (kto i dowod)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "kto": {"type": "string"}, "dowod": {"type": "string"}}}}}}}}, "/api/relacje/studium/szkic": {"post": {"summary": "Szkic maila z prosba o zgode na studium (kolejka akceptacji)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}}}}}}}}, "/api/relacje/studium/publikuj": {"post": {"summary": "Opublikuj studium przypadku (tylko po zapisanej zgodzie klienta)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}}}}}}}}, "/api/relacje/uruchom": {"post": {"summary": "Cykl relacji po sprzedazy: opinie, polecenia, kontrola 30 dni, dosprzedaz, zagrozeni, reklamacje bez decyzji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/po_wygranej/niespojnosci": {"get": {"summary": "Niespojnosci statusu wygranej z umowa, projektem, rata i faktura (cel 0)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "testowe", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/po_wygranej/proforma_duplikat": {"get": {"summary": "Ostrzezenie przed druga proforma na te sama szanse i rate", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "rata_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "netto", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/po_wygranej/uzupelnienie": {"get": {"summary": "Braki wygranej szansy i propozycja uzupelnienia wstecznego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Dopina wstecznie kwote, usluge, umowe, projekt i harmonogram wygranej szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/po_wygranej/dziennik": {"get": {"summary": "Dziennik zmian kwot, terminow i nabywcy po wygranej", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/po_wygranej/nabywca": {"get": {"summary": "Nabywca zapisany przy wygranej po sprawdzeniu w KRS/CEIDG", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Sprawdza nabywce wygranej w KRS/CEIDG i zapisuje roznice z oferta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/po_wygranej/uzgodnienie": {"get": {"summary": "Miesieczne uzgodnienie przychodu CRM z wplywami z banku", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "miesiac", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Import wyciagu bankowego CSV (wplywy od klientow)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/po_wygranej/etapy": {"get": {"summary": "Etapy po wygranej wg trybu instancji (zwykly albo posrednik kredytowy)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "lead_id", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/po_wygranej/kopia": {"get": {"summary": "Stan kopii dokumentow i ostatniego testu odtworzenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Wykonuje kopie dokumentow i test odtworzenia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/me": {"get": {"tags": ["Klucze API"], "summary": "Instancja, klucz (typ, zakres, tryb, sandbox) i pozostaly limit zadan", "operationId": "get_me", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": null, "modul_nazwa": null, "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzMe"}, "example": {"ok": true, "wersja_api": "1", "wycofanie": null, "instancja": {"nazwa": "FluxLab", "adres": "https://crm.example.pl", "demo": false}, "klucz": {"typ": "integracja", "nazwa": "Zapier", "prefiks": "fxk_aB3dE9", "zakres": ["szanse"], "tryb": "zapis", "wygasa": null, "ostatnio": "2026-11-01T10:00:00", "sandbox": false}, "konto": null, "limity": {"minuta": {"limit": 60, "pozostalo": 59, "reset_s": 60}, "doba": {"limit": 10000, "pozostalo": 9999, "reset_s": 86400}}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}}, "/api/wersje": {"get": {"summary": "Wersje API, daty wycofania i polityka wersjonowania (publiczne)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/klucze_uzycie": {"get": {"summary": "Dziennik uzycia klucza API: ostatnie 100 wywolan z trasa, kodem i IP (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/oauth2/token": {"post": {"summary": "OAuth 2.0: wymiana kodu autoryzacji (PKCE) albo tokenu odswiezania na token dostepu (bez logowania)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"grant_type": {"type": "string"}, "client_id": {"type": "string"}}}}}}, "security": []}}, "/api/oauth2/zgoda": {"get": {"summary": "OAuth 2.0: opis zadania autoryzacji dla ekranu zgody (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "OAuth 2.0: zatwierdzenie zgody, zwraca adres powrotu z kodem (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"client_id": {"type": "string"}, "redirect_uri": {"type": "string"}}}}}}}}, "/api/oauth2/aplikacje": {"get": {"summary": "Zarejestrowane aplikacje OAuth (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Rejestracja aplikacji OAuth: nazwa i adresy powrotu; akcja wylacz (wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}}}}}}}}, "/api/oauth2/zgody": {"get": {"summary": "Polaczone aplikacje: zakres, data zgody, ostatnie uzycie (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Cofniecie zgody aplikacji: akcja cofnij, id (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}, "id": {"type": "integer"}}}}}}}}, "/api/mcp": {"post": {"summary": "MCP przez HTTP (Streamable HTTP): jedna wiadomosc JSON-RPC, klucz w Authorization: Bearer", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"jsonrpc": {"type": "string"}, "id": {"type": "integer"}, "method": {"type": "string"}, "params": {"type": "object"}}}}}}, "security": []}}, "/api/mcp/dziennik": {"get": {"summary": "Dziennik wywolan MCP: ostatnie 200 (narzedzie, argumenty bez danych wrazliwych, klucz, wynik), tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/szablony_mcp": {"get": {"summary": "Katalog pakietow szablonow zadan dla agentow MCP", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/szablony_mcp/podglad": {"get": {"summary": "Podglad zmian pakietu szablonow zadan przed instalacja (dodaj, pomin, odcisk)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "pakiet", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/szablony_mcp/zainstaluj": {"post": {"summary": "Instalacja pakietu szablonow zadan; wymaga odcisku z podgladu", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"pakiet": {"type": "string"}, "odcisk": {"type": "string"}}}}}}}}, "/api/mcp/oauth/register": {"post": {"summary": "Rejestracja klienta OAuth dla MCP (RFC 7591)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"client_name": {"type": "string"}, "redirect_uris": {"type": "array"}}}}}}, "security": []}}, "/api/mcp/oauth/authorize": {"get": {"summary": "Ekran zgody OAuth dla MCP (wlasciciel zalogowany w panelu wybiera zestawy i tryb)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "client_id", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "redirect_uri", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "response_type", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "code_challenge", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "code_challenge_method", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "state", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "scope", "in": "query", "required": false, "schema": {"type": "string"}}], "security": []}}, "/api/mcp/oauth/token": {"post": {"summary": "Token OAuth dla MCP: authorization_code z PKCE albo refresh_token", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"grant_type": {"type": "string"}, "code": {"type": "string"}, "code_verifier": {"type": "string"}, "client_id": {"type": "string"}, "redirect_uri": {"type": "string"}, "refresh_token": {"type": "string"}}}}}}, "security": []}}, "/api/automatyzacje": {"get": {"summary": "Zapier, Make, n8n: test uwierzytelnienia, lista zdarzen, zaproszenie do aplikacji Zapiera i stan katalogu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/automatyzacje/szablony": {"get": {"summary": "10 gotowych Zapow z opisem i mapowaniem pol", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/automatyzacje/hooki": {"post": {"summary": "REST hook: subskrypcja wyzwalacza (nowy_lead, zmiana_etapu, wygrana) bez odpytywania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"zdarzenie": {"type": "string"}, "url": {"type": "string"}}}}}}}}, "/api/automatyzacje/hooki/{id}": {"delete": {"summary": "Wypisanie subskrypcji REST hook", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/automatyzacje/hooki/probka": {"get": {"summary": "Przyklad dostawy dla edytora Zapa: ostatnie prawdziwe wpisy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "zdarzenie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/automatyzacje/lead/szukaj": {"get": {"summary": "Znajdz lead po telefonie (w dowolnym zapisie), e-mailu lub NIP", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "telefon", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "email", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "nip", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/automatyzacje/lead": {"post": {"summary": "Utworz lead albo zwroc istniejacego (NIP, telefon, e-mail); aktualizuj=true uzupelnia pola", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa_kontaktu": {"type": "string"}, "email": {"type": "string"}, "telefon": {"type": "string"}, "nip": {"type": "string"}}}}}}}}, "/api/automatyzacje/kanaly": {"get": {"summary": "Powiadomienia Slack i Teams (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Dodanie kanalu Slack albo Teams: typ i adres Incoming Webhook (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"typ": {"type": "string"}, "url": {"type": "string"}}}}}}}}, "/api/automatyzacje/kanaly/{id}": {"delete": {"summary": "Usuniecie kanalu Slack albo Teams (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/automatyzacje/kanaly/{id}/test": {"post": {"summary": "Wiadomosc probna na kanal Slack albo Teams (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/automatyzacje/arkusze": {"get": {"summary": "Zrodla Google Sheets: eksport leadow i wygranych co godzine, import wierszy (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Dodanie zrodla arkusza: rodzaj leady, wygrane albo import (wlasciciel)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "arkusz_id": {"type": "string"}, "zakladka": {"type": "string"}}}}}}}}, "/api/automatyzacje/arkusze/{id}": {"delete": {"summary": "Usuniecie zrodla arkusza (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/automatyzacje/arkusze/{id}/sync": {"post": {"summary": "Natychmiastowa synchronizacja zrodla arkusza (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/polaczenia": {"get": {"summary": "Polaczenia poczty i kalendarza (Google, Microsoft, IMAP) ze stanem zgody", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/polaczenia/google/start": {"get": {"summary": "Adres ekranu zgody Google (poczta, kalendarz albo oba)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "cel", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/polaczenia/microsoft/start": {"get": {"summary": "Adres ekranu zgody Microsoft 365 (poczta, kalendarz albo oba)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "cel", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/polaczenia/microsoft/zgoda-admina": {"get": {"summary": "Adres zgody administratora tenanta Microsoft 365", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "tenant", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/polaczenia/odlacz": {"post": {"summary": "Odlaczenie kalendarza OAuth", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klucz": {"type": "string"}}}}}}}}, "/api/oauth/microsoft/powrot": {"get": {"summary": "Powrot z Entra ID po zgodzie (302 na panel)", "responses": {"302": {"description": "Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "code", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "state", "in": "query", "required": false, "schema": {"type": "string"}}], "security": []}}, "/api/google/weryfikacja": {"get": {"summary": "Stan weryfikacji Google OAuth: tryb, CASA, zakresy, polityka prywatnosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "put": {"summary": "Zapis pol listy kontrolnej weryfikacji Google (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"film_demo_url": {"type": "string"}, "casa_status": {"type": "string"}}}}}}}}, "/polityka-prywatnosci-crm": {"get": {"summary": "Publiczna polityka prywatnosci z deklaracja Limited Use", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/katalog_szablonow": {"get": {"summary": "Marketplace szablonow: lista, opisy, zrzuty, oceny, liczniki i stan instalacji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/katalog_szablonow/branza": {"get": {"summary": "Dla twojej branzy: widoki, szkice, sekwencje i wzory z zainstalowanych szablonow", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/katalog_szablonow/zgloszenia": {"get": {"summary": "Zgloszone paczki partnerow z wynikiem skanu (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "stan", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/katalog_szablonow/rozliczenia": {"get": {"summary": "Rozliczenia platnych szablonow partnerow: podzial, niewyplacone kwoty, wyplaty (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/katalog_szablonow/zglos": {"post": {"summary": "Zgloszenie paczki szablonu partnera do przegladu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"paczka": {"type": "obiekt paczki"}, "partner": {"type": "klucz partnera"}, "kontakt": {"type": "kontakt"}}}}}}}}, "/api/katalog_szablonow/zgloszenia/przeglad": {"post": {"summary": "Decyzja o zgloszeniu partnera: publikuj (wymaga przeglad_bezpieczenstwa), odrzuc, wycofaj", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "id szablonu"}, "wersja": {"type": "wersja"}, "decyzja": {"type": "publikuj|odrzuc|wycofaj"}, "uwagi": {"type": "uwagi"}, "przeglad_bezpieczenstwa": {"type": "prawda po przegladzie"}}}}}}}}, "/api/katalog_szablonow/rozliczenia/wyplata-testowa": {"post": {"summary": "Wyplata testowa partnera: ta sama sciezka co prawdziwa, bez ruchu pieniedzy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"partner": {"type": "klucz partnera"}, "okres": {"type": "RRRR-MM"}}}}}}}}, "/api/katalog_szablonow/rozliczenia/wyplac": {"post": {"summary": "Wyplata dla partnera po wyplacie testowej (Stripe Connect albo faktura zbiorcza)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"partner": {"type": "klucz partnera"}, "okres": {"type": "RRRR-MM"}}}}}}}}, "/api/katalog_szablonow/{id}": {"get": {"summary": "Szczegoly szablonu z wynikiem skanu paczki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/katalog_szablonow/{id}/podglad": {"post": {"summary": "Podglad instalacji: co zostanie dodane, co pominiete (kolizje)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"czesci": {"type": "lista czesci: struktura, komunikacja, widoki, dokumenty (puste = wszystkie)"}}}}}}}}, "/api/katalog_szablonow/{id}/instaluj": {"post": {"summary": "Instalacja czesci szablonu bez nadpisywania danych (platne wymagaja platnosc_ref, kod 402)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "402": {"description": "Payment Required", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"czesci": {"type": "lista czesci: struktura, komunikacja, widoki, dokumenty (puste = wszystkie)"}, "zgoda_zewnetrzne": {"type": "zgoda na adresy zewnetrzne i webhooki z paczki"}, "platnosc_ref": {"type": "referencja platnosci"}}}}}}}}, "/api/katalog_szablonow/{id}/cofnij": {"post": {"summary": "Cofniecie instalacji: usuwa tylko to, czego klient nie zmienil", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"czesci": {"type": "lista czesci: struktura, komunikacja, widoki, dokumenty (puste = wszystkie)"}}}}}}}}, "/api/katalog_szablonow/{id}/aktualizacja": {"get": {"summary": "Roznica miedzy zainstalowana a najnowsza wersja szablonu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/katalog_szablonow/{id}/aktualizuj": {"post": {"summary": "Aktualizacja do najnowszej wersji; zmiany klienta zostaja", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"czesci": {"type": "lista czesci: struktura, komunikacja, widoki, dokumenty (puste = wszystkie)"}, "zgoda_zewnetrzne": {"type": "zgoda na adresy zewnetrzne"}}}}}}}}, "/api/katalog_szablonow/{id}/ocena": {"post": {"summary": "Ocena szablonu 1-5 po instalacji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ocena": {"type": "1-5"}, "komentarz": {"type": "komentarz"}}}}}}}}, "/api/tlo": {"post": {"summary": "Zlecenie zadania w tle (szkic_poczty, import_csv, wysylka_maila); odpowiedz 202 z numerem, wynik z GET /api/tlo/{id}", "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"rodzaj": {"type": "string"}, "dane": {"type": "object"}}}}}}}}, "/api/tlo/{id}": {"get": {"summary": "Stan i wynik zadania w tle (autor albo wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/bledy": {"get": {"summary": "Bledy panelu i serwera zgrupowane (liczniki, pierwszy i ostatni raz, alert, potwierdzenie); tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/bledy/{id}/potwierdz": {"post": {"summary": "Potwierdzenie przejecia grupy bledow (zatrzymuje eskalacje po godzinie); tylko wlasciciel", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/onboarding_kroki": {"get": {"summary": "Onboarding w 5 krokach: poczta, import leadow, etapy, zespol, pierwsza oferta (liczone z faktow)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/onboarding_kroki/potwierdz": {"post": {"summary": "Reczne potwierdzenie kroku onboardingu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"krok": {"type": "string"}}}}}}}}, "/api/zdrowie_klienta": {"get": {"summary": "Pomiar zdrowia klienta z 14 dni (logowania, leady, odpowiedzi, dni bez aktywnosci) dla operatora", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/nps_ankieta": {"get": {"summary": "Czy pokazac ankiete NPS (po 30 dniach od startu instancji, potem co 90 dni)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zapis odpowiedzi ankiety NPS (ocena 0-10 i komentarz)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ocena": {"type": "integer"}, "komentarz": {"type": "string"}}}}}}}}, "/api/nps_ankieta/odpowiedzi": {"get": {"summary": "Odpowiedzi ankiet NPS instancji do pobrania przez operatora", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/demo_publiczne/stan": {"get": {"summary": "Stan publicznego dema bez rejestracji: wolne uruchomienia w miesiacu i minuty do resetu bazy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/demo_publiczne/start": {"post": {"summary": "Uruchamia scenariusz demo 10 minut w bazie demo (limit miesieczny, reset co godzine)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"type": "object"}}}}}, "security": []}}, "/api/film/zdarzenie": {"post": {"summary": "Zdarzenie ogladania filmu wdrozeniowego (start, 25, 50, 75, koniec)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"film": {"type": "string"}, "zdarzenie": {"type": "string"}, "zrodlo": {"type": "string"}}}}}}}}, "/api/film/statystyki": {"get": {"summary": "Miara ukonczenia filmu wdrozeniowego: rozpoczete i ukonczone ogladania, cel powyzej 50 procent", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/rynek": {"get": {"summary": "Formaty regionalne (pl-PL, en-GB, en-US, uk-UA): kwota obok w PLN, EUR i USD po kursie NBP, data i telefon miedzynarodowy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "kwota", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "waluta", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "region", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "data", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "telefon", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/szablony_jezykowe": {"get": {"summary": "Szablony odpowiedzi EN i UA w tonie biznesowym z ocena jakosci 1-5 i srednia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Zaklada brakujace szablony EN i UA w szablonach odpowiedzi karty (istniejace zostaja bez zmian)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/pozyskiwanie": {"get": {"summary": "Stan pozyskiwania leadów per kanał (Messenger, Instagram, poczta, portale, formularz): kropka z faktów (usługi, importy, ostatni lead i wiadomość klienta)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/plan/doplata": {"post": {"summary": "Wlasciciel potwierdza doplate za wieksza liczbe miejsc (kont) ponad oplacony pakiet", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"miejsca": {"type": "integer"}}}}}}}}, "/api/szukaj/kontakt": {"get": {"summary": "Szanse po numerze telefonu (same cyfry) albo fragmencie adresu e-mail", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/ulubione": {"get": {"summary": "Moje ulubione szanse (gwiazdka)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/ulubiona": {"post": {"summary": "Gwiazdka: dodaje albo zdejmuje szanse z moich ulubionych", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlacz": {"type": "boolean"}}}}}}}}, "/api/ostatnie": {"get": {"summary": "Ostatnio otwierane karty konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/otwarta": {"post": {"summary": "Zapis otwarcia karty w ostatnio otwieranych", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/preferencje": {"get": {"summary": "Zapamietane ustawienia panelu konta (uklad kolumn, gestosc listy)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "put": {"summary": "Zapis ustawien panelu konta: klucze (tekst) i usun (lista)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"klucze": {"type": "object"}, "usun": {"type": "array"}}}}}}}}, "/api/leady/{id}/komunikatory": {"get": {"summary": "WhatsApp i Messenger szansy: linki, adres i wiadomosci", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Zapis wiadomosci WhatsApp/Messenger (wyslanej albo wklejonej od klienta); odpowiedz niesie link", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"kanal": {"type": "string"}, "tresc": {"type": "string"}, "kierunek": {"type": "string"}, "adres": {"type": "string"}}}}}}}}, "/api/leady/{id}/poczta/{pid}/oryginal": {"get": {"summary": "Oryginalna wiadomosc z serwera poczty: naglowki, HTML oczyszczony i tekst", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "pid", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/umowy/szablony": {"get": {"summary": "Szablony umow i pola do wypelnienia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/leady/{id}/umowy": {"get": {"summary": "Umowy szansy ze stanem podpisu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Nowa umowa z szablonu (kwota, termin, przedmiot z szansy)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"szablon": {"type": "string"}, "kwota": {"type": "number"}, "termin": {"type": "string"}, "przedmiot": {"type": "string"}}}}}}}}, "/api/umowy/{id}": {"post": {"summary": "Wyslanie umowy do podpisu (link /umowa/<token>) albo anulowanie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}}}}}}}}, "/api/umowy/{id}/dokument": {"get": {"summary": "HTML umowy z blokiem podpisu elektronicznego", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/zalaczniki": {"get": {"summary": "Pliki szansy: zespolu, z portalu klienta i zalaczniki maili", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Plik, notatka glosowa albo wideo (base64, transkrypcja)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "413": {"description": "Content Too Large", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"nazwa": {"type": "string"}, "typ": {"type": "string"}, "dane_base64": {"type": "string"}, "rodzaj": {"type": "string"}, "transkrypcja": {"type": "string"}}}}}}}}, "/api/pliki/{id}": {"get": {"summary": "Bajty pliku szansy albo wiadomosci zespolu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "delete": {"summary": "Usuniecie pliku (autor albo wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/pliki/{id}/transkrypcja": {"post": {"summary": "Reczna transkrypcja nagrania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}}}}}}}}, "/api/zespol/wiadomosci": {"get": {"summary": "Notatki glosowe i wideo miedzy czlonkami zespolu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "z", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Wyslanie notatki glosowej albo wideo koledze", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "413": {"description": "Content Too Large", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"adresat": {"type": "string"}, "rodzaj": {"type": "string"}, "typ": {"type": "string"}, "dane_base64": {"type": "string"}}}}}}}}, "/api/leady/{id}/kalendarz_spotkan": {"get": {"summary": "Spotkania szansy", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}, "post": {"summary": "Spotkanie z linkiem online, zadaniem i zaproszeniem ICS", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"start": {"type": "string"}, "minuty": {"type": "integer"}, "tytul": {"type": "string"}, "miejsce": {"type": "string"}, "link": {"type": "string"}}}}}}}}, "/api/spotkania/{id}/zaproszenie": {"get": {"summary": "Zaproszenie ICS (METHOD:REQUEST albo CANCEL)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/spotkania/{id}": {"post": {"summary": "Odwolanie spotkania", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"akcja": {"type": "string"}}}}}}}}, "/api/leady/{id}/wolne-okna": {"get": {"summary": "Wolne okna rozmowy wg godzin pracy, zadan, spotkan i kalendarzy ICS", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "minuty", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "dni", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/rezerwacje": {"post": {"summary": "Link rezerwacji terminu dla klienta (strona /rezerwacja/<token>, PL/EN/UK, 14 dni, notatka, .ics, anulowanie)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"minuty": {"type": "integer"}, "wazny_dni": {"type": "integer"}}}}}}}}, "/api/terminarz/dostepnosc": {"get": {"summary": "Dostepnosc opiekuna dla rezerwacji z linku (dni, godziny, minuty, bufor, wyprzedzenie)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "login", "in": "query", "required": false, "schema": {"type": "string"}}]}, "put": {"summary": "Zapis dostepnosci opiekuna", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"dni": {"type": "array"}, "od": {"type": "string"}, "do": {"type": "string"}, "minuty": {"type": "integer"}, "bufor_min": {"type": "integer"}, "wyprzedzenie_h": {"type": "integer"}}}}}}}}, "/api/terminarz/przypomnienia": {"post": {"summary": "Szkice przypomnien o spotkaniach (mail, SMS do kolejki)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/terminarz/subskrypcja": {"post": {"summary": "Adres subskrypcji ICS kalendarza konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/terminarz/import": {"post": {"summary": "Import kalendarza ICS (zajete okna)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"ics": {"type": "string"}}}}}}}}, "/api/terminarz/synchronizuj": {"post": {"summary": "Pobranie kalendarzy z [terminarz] ics_zewnetrzne", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/terminarz/dzien": {"get": {"summary": "Zadania, spotkania i zajete okna dnia", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "data", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/leady/{id}/zadania-ai": {"post": {"summary": "Zadania z rozmowy modelem (podglad; zapisz=true tworzy)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tekst": {"type": "string"}, "zapisz": {"type": "boolean"}}}}}}}}, "/api/zadania/eksport": {"get": {"summary": "Eksport otwartych zadan: taskwarrior, todoist (CSV), ics", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "format", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "wszystkie", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/zadania/todoist": {"post": {"summary": "Zadania do Todoista przez REST (z tokenem w konfiguracji)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "503": {"description": "Service Unavailable", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wyslij": {"type": "boolean"}, "wszystkie": {"type": "boolean"}}}}}}}}, "/api/leady/{id}/czat": {"get": {"summary": "Czat zespolu w szansie (po = tylko nowsze)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}, {"name": "po", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Wiadomosc na czacie szansy z @wzmiankami", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tresc": {"type": "string"}}}}}}}}, "/api/zespol/kanaly": {"get": {"summary": "Moje kanaly powiadomien poza panelem", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "put": {"summary": "Czat Telegram konta", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"telegram_czat": {"type": "string"}}}}}}}}, "/api/zespol/kanaly/test": {"post": {"summary": "Wiadomosc probna na kanaly instancji", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/zespol/kanaly/rozeslij": {"post": {"summary": "Rozeslanie nowych powiadomien skrzynki (wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/praca/coaching": {"get": {"summary": "Przyklady dobrych odpowiedzi z wygranych szans", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "autor", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}}]}}, "/api/biblioteka_maili": {"get": {"summary": "Biblioteka najlepszych maili zespolu", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "tag", "in": "query", "required": false, "schema": {"type": "string"}}]}, "post": {"summary": "Dodanie maila do biblioteki (tresc albo lead_id z poczta_id)", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"tytul": {"type": "string"}, "temat": {"type": "string"}, "tresc": {"type": "string"}, "tagi": {"type": "array"}, "lead_id": {"type": "integer"}, "poczta_id": {"type": "integer"}}}}}}}}, "/api/biblioteka_maili/{id}": {"delete": {"summary": "Usuniecie wpisu (autor albo wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/biblioteka_maili/{id}/glos": {"post": {"summary": "Glos 'przydatny' na wpis biblioteki", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"wlacz": {"type": "boolean"}}}}}}}}, "/api/ankiety_zespolu": {"get": {"summary": "Ankiety wewnetrzne zespolu z wynikami", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}}}, "post": {"summary": "Nowa ankieta wewnetrzna", "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"pytanie": {"type": "string"}, "opcje": {"type": "array"}, "anonimowa": {"type": "boolean"}}}}}}}}, "/api/ankiety_zespolu/{id}/glos": {"post": {"summary": "Glos w ankiecie", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"opcja": {"type": "integer"}, "komentarz": {"type": "string"}}}}}}}}, "/api/ankiety_zespolu/{id}/zamknij": {"post": {"summary": "Zamkniecie ankiety (autor albo wlasciciel)", "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"type": "object"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"type": "object"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"type": "object"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"type": "object"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/notatki/{id}": {"delete": {"tags": ["Notatki"], "summary": "Usuniecie notatki (id notatki)", "operationId": "delete_notatki_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzNotatkiZadania"}, "example": {"ok": true, "lead_id": 17, "notatki": [], "zadania": [], "id": 5}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/zadania/{id}": {"patch": {"tags": ["Zadania"], "summary": "Zmiana zadania: zrobione, termin, tresc, przypisany, priorytet (id zadania)", "operationId": "patch_zadania_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "zadania", "modul_nazwa": "Zadania, kalendarz i dzwonki", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzNotatkiZadania"}, "example": {"ok": true, "lead_id": 17, "notatki": [], "zadania": [{"id": 9, "lead_id": 17, "utworzono": "2026-10-28T09:21:00", "termin": "2026-10-30", "tresc": "Oddzwonic w sprawie oferty", "autor": "zapier", "zrobione": "2026-10-28T10:00:00", "zalegle": false, "priorytet": 2}], "id": 9}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ZadanieZmiana"}, "example": {"zrobione": true}}}}}, "delete": {"tags": ["Zadania"], "summary": "Usuniecie zadania (id zadania)", "operationId": "delete_zadania_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "zadania", "modul_nazwa": "Zadania, kalendarz i dzwonki", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzNotatkiZadania"}, "example": {"ok": true, "lead_id": 17, "notatki": [], "zadania": [], "id": 9}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/etapy": {"get": {"tags": ["Etapy i pola wlasne"], "summary": "Etapy lejka instancji (klucz, tytul, rola)", "operationId": "get_etapy", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzEtapy"}, "example": {"ok": true, "etapy": [{"klucz": "nowe", "tytul": "Nowe", "rola": "nowe"}, {"klucz": "w_rozmowie", "tytul": "W rozmowie", "rola": "rozmowa"}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}}, "/api/organizacje": {"get": {"tags": ["Kontakty i firmy"], "summary": "Lista firm", "operationId": "get_organizacje", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacje"}, "example": {"ok": true, "ile": 1, "organizacje": [{"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}, "post": {"tags": ["Kontakty i firmy"], "summary": "Nowa firma (NIP znanej firmy zwraca te firme)", "operationId": "post_organizacje", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacja"}, "example": {"ok": true, "nowa": true, "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OrganizacjaNowa"}, "example": {"nazwa": "ACME Sp. z o.o.", "nip": "5260250274"}}}}}}, "/api/organizacje/{id}": {"get": {"tags": ["Kontakty i firmy"], "summary": "Firma z osobami i szansami (id firmy)", "operationId": "get_organizacje_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacja"}, "example": {"ok": true, "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}, "put": {"tags": ["Kontakty i firmy"], "summary": "Czesciowa edycja firmy (id firmy)", "operationId": "put_organizacje_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacja"}, "example": {"ok": true, "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OrganizacjaNowa"}, "example": {"miasto": "Warszawa"}}}}}}, "/api/osoby": {"get": {"tags": ["Kontakty i firmy"], "summary": "Lista osob", "operationId": "get_osoby", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOsoby"}, "example": {"ok": true, "ile": 1, "osoby": [{"id": 4, "imie": "Jan", "nazwisko": "Kowalski", "imie_nazwisko": "Jan Kowalski", "email": "jan@acme.pl", "organizacja_id": 2}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "q", "in": "query", "required": false, "description": "Szukany tekst", "schema": {"type": "string"}}]}, "post": {"tags": ["Kontakty i firmy"], "summary": "Nowa osoba (znana po e-mailu zwraca te osobe)", "operationId": "post_osoby", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOsoba"}, "example": {"ok": true, "nowa": true, "osoba": {"id": 4, "imie": "Jan", "nazwisko": "Kowalski", "imie_nazwisko": "Jan Kowalski", "email": "jan@acme.pl", "organizacja_id": 2}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OsobaNowa"}, "example": {"imie": "Jan", "nazwisko": "Kowalski", "email": "jan@acme.pl"}}}}}}, "/api/osoby/{id}": {"get": {"tags": ["Kontakty i firmy"], "summary": "Osoba z firma i szansami (id osoby)", "operationId": "get_osoby_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOsoba"}, "example": {"ok": true, "osoba": {"id": 4, "imie": "Jan", "nazwisko": "Kowalski", "imie_nazwisko": "Jan Kowalski", "email": "jan@acme.pl", "organizacja_id": 2}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}, "put": {"tags": ["Kontakty i firmy"], "summary": "Czesciowa edycja osoby (id osoby)", "operationId": "put_osoby_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOsoba"}, "example": {"ok": true, "osoba": {"id": 4, "imie": "Jan", "nazwisko": "Kowalski", "imie_nazwisko": "Jan Kowalski", "email": "jan@acme.pl", "organizacja_id": 2}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OsobaNowa"}, "example": {"telefon": "+48600100200"}}}}}}, "/api/leady/{id}/osoby": {"post": {"tags": ["Kontakty i firmy"], "summary": "Dopiecie osoby do szansy (istniejacej albo nowej)", "operationId": "post_leady_id_osoby", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzPowiazania"}, "example": {"ok": true, "lead_id": 17, "osoby": [{"id": 4, "imie": "Jan", "nazwisko": "Kowalski", "imie_nazwisko": "Jan Kowalski", "email": "jan@acme.pl", "organizacja_id": 2}], "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OsobaLeada"}, "example": {"osoba_id": 4, "rola": "kontaktowa", "glowna": true}}}}}}, "/api/leady/{id}/osoby/{osoba_id}": {"put": {"tags": ["Kontakty i firmy"], "summary": "Rola osoby przy szansie", "operationId": "put_leady_id_osoby_osoba_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzPowiazania"}, "example": {"ok": true, "lead_id": 17, "osoby": [{"id": 4, "imie": "Jan", "nazwisko": "Kowalski", "imie_nazwisko": "Jan Kowalski", "email": "jan@acme.pl", "organizacja_id": 2}], "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}, {"name": "osoba_id", "in": "path", "required": true, "schema": {"type": "integer"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OsobaLeada"}, "example": {"rola": "szef", "decydent": true}}}}}, "delete": {"tags": ["Kontakty i firmy"], "summary": "Odpiecie osoby od szansy", "operationId": "delete_leady_id_osoby_osoba_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzPowiazania"}, "example": {"ok": true, "lead_id": 17, "osoby": [], "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}, {"name": "osoba_id", "in": "path", "required": true, "schema": {"type": "integer"}}]}}, "/api/leady/{id}/organizacja": {"put": {"tags": ["Kontakty i firmy"], "summary": "Ustawienie firmy szansy (istniejacej, nowej albo null)", "operationId": "put_leady_id_organizacja", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzPowiazania"}, "example": {"ok": true, "lead_id": 17, "osoby": [{"id": 4, "imie": "Jan", "nazwisko": "Kowalski", "imie_nazwisko": "Jan Kowalski", "email": "jan@acme.pl", "organizacja_id": 2}], "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OrganizacjaLeada"}, "example": {"organizacja_id": 2}}}}}}, "/api/webhooki/{id}/dostawy": {"get": {"tags": ["Webhooki"], "summary": "Dziennik dostaw jednego webhooka: kod, czas, sekwencja, blad", "operationId": "get_webhooki_id_dostawy", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzDostawy"}, "example": {"ok": true, "dostawy": [{"id": 12, "webhook_id": 3, "zdarzenie": "nowy_lead", "stan": "dostarczone", "kod": 200, "czas_ms": 84, "proby": 1, "sekwencja": 1, "blad": null}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/webhooki/{id}/wznow": {"post": {"tags": ["Webhooki"], "summary": "Wznawia webhook wstrzymany po 50 kolejnych bledach", "operationId": "post_webhooki_id_wznow", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWebhooki"}, "example": {"ok": true, "webhooki": [{"id": 3, "nazwa": "n8n", "url": "https://example.com/hook", "zdarzenia": ["nowy_lead", "wygrana"], "aktywny": true, "ma_sekret": true, "utworzono": "2026-10-28T09:00:00", "ostatnia": null, "filtr_zrodla": [], "filtr_etapy": [], "lekki": false, "wstrzymany": null, "wstrzymanie_powod": null, "bledy_z_rzedu": 0}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/webhooki/wejscia": {"get": {"tags": ["Webhooki"], "summary": "Tokeny webhookow przychodzacych (bez wartosci tokenu)", "operationId": "get_webhooki_wejscia", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWejscia"}, "example": {"ok": true, "wejscia": [{"id": 1, "nazwa": "Zapier", "prefiks": "whin_aB3d...", "zrodlo": "zapier", "aktywny": true, "utworzono": "2026-11-01T09:00:00", "ostatnio": null, "przyjete": 0, "odrzucone": 0}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}, "post": {"tags": ["Webhooki"], "summary": "Nowy token wejscia; pelny token widac raz", "operationId": "post_webhooki_wejscia", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWejscia"}, "example": {"ok": true, "id": 1, "token": "whin_example", "wejscia": [{"id": 1, "nazwa": "Zapier", "prefiks": "whin_aB3d...", "zrodlo": "zapier", "aktywny": true, "utworzono": "2026-11-01T09:00:00", "ostatnio": null, "przyjete": 0, "odrzucone": 0}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WejscieNowe"}, "example": {"nazwa": "Zapier", "zrodlo": "zapier"}}}}}}, "/api/webhooki/wejscia/{id}": {"delete": {"tags": ["Webhooki"], "summary": "Usuwa token wejscia; zgloszenia z nim przestaja byc przyjmowane", "operationId": "delete_webhooki_wejscia_id", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "ustawienia", "modul_nazwa": "Ustawienia i reguly", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzWejscia"}, "example": {"ok": true, "wejscia": []}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/organizacje/propozycje": {"get": {"tags": ["Kontakty i firmy"], "summary": "Propozycje scalenia podobnych firm", "operationId": "get_organizacje_propozycje", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOgolna"}, "example": {"ok": true, "propozycje": []}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}}, "/api/organizacje/z_nip": {"get": {"tags": ["Kontakty i firmy"], "summary": "Podglad: leady z tym samym NIP do jednej firmy", "operationId": "get_organizacje_z_nip", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOgolna"}, "example": {"ok": true, "grupy": []}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}, "post": {"tags": ["Kontakty i firmy"], "summary": "Laczenie leadow z tym samym NIP w jedna firme", "operationId": "post_organizacje_z_nip", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOgolna"}, "example": {"ok": true, "grupy": []}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}}, "/api/organizacje/{id}/biala-lista": {"post": {"tags": ["Kontakty i firmy"], "summary": "Odswiezenie statusu VAT i rachunkow z bialej listy MF", "operationId": "post_organizacje_id_biala-lista", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacja"}, "example": {"ok": true, "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}]}}, "/api/organizacje/{id}/rejestry": {"post": {"tags": ["Kontakty i firmy"], "summary": "Forma prawna i adres z KRS lub CEIDG", "operationId": "post_organizacje_id_rejestry", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacja"}, "example": {"ok": true, "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RejestrZapytanie"}, "example": {"nip": "5260250274"}}}}}}, "/api/organizacje/{id}/oddzialy": {"post": {"tags": ["Kontakty i firmy"], "summary": "Nowy oddzial firmy (bez NIP dziedziczy NIP centrali)", "operationId": "post_organizacje_id_oddzialy", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacja"}, "example": {"ok": true, "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OrganizacjaNowa"}, "example": {"nazwa": "Oddzial Krakow", "miasto": "Krakow"}}}}}}, "/api/organizacje/{id}/nadrzedna": {"put": {"tags": ["Kontakty i firmy"], "summary": "Zmiana firmy nadrzednej (centrali) albo odpiecie oddzialu", "operationId": "put_organizacje_id_nadrzedna", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacja"}, "example": {"ok": true, "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NadrzednaFirma"}, "example": {"nadrzedna_id": 1}}}}}}, "/api/organizacje/{id}/scal": {"post": {"tags": ["Kontakty i firmy"], "summary": "Scalenie drugiej firmy w te", "operationId": "post_organizacje_id_scal", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOrganizacja"}, "example": {"ok": true, "organizacja": {"id": 2, "nazwa": "ACME Sp. z o.o.", "nip": "5260250274", "kraj": "PL", "miasto": "Warszawa"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ScalenieZ"}, "example": {"z": 3}}}}}}, "/api/osoby/propozycje": {"get": {"tags": ["Kontakty i firmy"], "summary": "Propozycje scalenia podobnych osob", "operationId": "get_osoby_propozycje", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOgolna"}, "example": {"ok": true, "propozycje": []}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}}, "/api/osoby/{id}/scal": {"post": {"tags": ["Kontakty i firmy"], "summary": "Scalenie drugiej osoby w te", "operationId": "post_osoby_id_scal", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOsoba"}, "example": {"ok": true, "osoba": {"id": 4, "imie": "Jan", "nazwisko": "Kowalski", "imie_nazwisko": "Jan Kowalski", "email": "jan@acme.pl", "organizacja_id": 2}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ScalenieZ"}, "example": {"z": 5}}}}}}, "/api/role": {"get": {"tags": ["Kontakty i firmy"], "summary": "Role osob przy szansie (slownik)", "operationId": "get_role", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "odczyt", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOgolna"}, "example": {"ok": true, "role": [{"klucz": "szef", "nazwa": "Szef"}]}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}}, "put": {"tags": ["Kontakty i firmy"], "summary": "Podmiana slownika rol osob", "operationId": "put_role", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzOgolna"}, "example": {"ok": true}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RolePodmiana"}, "example": {"role": [{"klucz": "szef", "nazwa": "Szef"}]}}}}}}, "/api/leady/{id}/szybko": {"post": {"tags": ["Leady"], "summary": "Szybka zmiana jednego pola karty szansy", "operationId": "post_leady_id_szybko", "security": [{"bearer": []}, {"klucz": []}, {"sesja": []}], "x-fluxcrm": {"modul": "szanse", "modul_nazwa": "Szanse i klienci", "tryb_klucza": "zapis", "tylko_wlasciciel": false}, "responses": {"200": {"description": "OK", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzLead"}, "example": {"ok": true, "lead": {"id": 17, "zrodlo": "reczne", "kanal": "reczny", "nazwa_kontaktu": "Jan Kowalski", "firma": "ACME Sp. z o.o.", "email": "jan@acme.pl", "tytul": "Kredyt dla firmy", "status": "w_trakcie", "etap": "nowe", "etap_reczny": false, "kwota": null, "opiekun": null, "organizacja_id": null, "pierwszy_kontakt": "2026-10-28T09:15:00"}}}}}, "401": {"description": "Brak klucza albo klucz bledny, cofniety lub wygasly", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "brak lub bledny naglowek x-fluxcrm-klucz"}}}}, "403": {"description": "Klucz nie obejmuje modulu albo trybu tej trasy (zakres), albo trasa tylko dla wlasciciela", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "klucz Zapier jest tylko do odczytu"}}}}, "404": {"description": "Nieznany rekord albo trasa", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "Nie znaleziono szansy. Odśwież listę, bo mogła zostać scalona lub usunięta."}}}}, "422": {"description": "Bledne dane; `pola` opisuje kazde bledne pole", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "bledne pola", "pola": {"email": "niepoprawny adres"}}}}}, "429": {"description": "Przekroczony limit klucza; czekaj Retry-After sekund", "headers": {"X-RateLimit-Limit": {"description": "Limit zadan klucza na minute", "schema": {"type": "integer"}}, "X-RateLimit-Remaining": {"description": "Ile zadan zostalo w biezacej minucie", "schema": {"type": "integer"}}, "X-RateLimit-Reset": {"description": "Sekundy do zwolnienia najstarszego zadania z okna minuty", "schema": {"type": "integer"}}, "X-RateLimit-Limit-Day": {"description": "Limit zadan klucza na dobe", "schema": {"type": "integer"}}, "X-RateLimit-Remaining-Day": {"description": "Ile zadan zostalo w dobie", "schema": {"type": "integer"}}, "X-RateLimit-Reset-Day": {"description": "Sekundy do zwolnienia najstarszego zadania z okna doby", "schema": {"type": "integer"}}, "Retry-After": {"description": "Sekundy do ponowienia", "schema": {"type": "integer"}}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Blad"}, "example": {"ok": false, "powod": "limit klucza Zapier przekroczony (minuta)"}}}}}, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}, "description": "Id szansy"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SzybkaWartosc"}, "example": {"wartosc": "jan@acme.pl"}}}}}}, "/api/v1/wejscie/{token}": {"post": {"tags": ["Webhooki"], "summary": "Webhook przychodzacy: tworzy szanse z zgloszenia obcego systemu", "description": "Token w adresie zastepuje klucz API. Zgloszenie przechodzi przez filtr nie-leadow jak formularz i kanaly.", "operationId": "post_v1_wejscie_token", "security": [], "parameters": [{"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "Token wejscia whin_... z Ustawien > Webhooki"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ZgloszenieWejscia"}}}}, "responses": {"200": {"description": "Przyjete", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OdpowiedzZgloszenia"}}}}, "401": {"description": "Nieznany albo wylaczony token"}, "422": {"description": "Puste albo bledne zgloszenie"}}}}}, "webhooks": {"nowy_lead": {"post": {"tags": ["Webhooki"], "summary": "Nowy lead", "description": "Powstala nowa szansa (panel, API, import, kanal, formularz). Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_nowy_lead", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "zmiana_etapu": {"post": {"tags": ["Webhooki"], "summary": "Zmiana etapu", "description": "Szansa zmienila etap; pole etap_przed ma poprzedni etap. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_zmiana_etapu", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "wygrana": {"post": {"tags": ["Webhooki"], "summary": "Wygrana", "description": "Szansa dostala status wygrany. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_wygrana", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "przegrana": {"post": {"tags": ["Webhooki"], "summary": "Przegrana", "description": "Szansa dostala status przegrany. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_przegrana", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "oferta_wyslana": {"post": {"tags": ["Webhooki"], "summary": "Oferta wysłana", "description": "Do klienta wyszla oferta; obiekt_id to id zdarzenia, opis to skrot oferty. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_oferta_wyslana", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "wiadomosc_klienta": {"post": {"tags": ["Webhooki"], "summary": "Wiadomość od klienta", "description": "Klient napisal (mail, kanal, portal); opis to skrot tresci. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_wiadomosc_klienta", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "wiadomosc_wyslana": {"post": {"tags": ["Webhooki"], "summary": "Wiadomość do klienta", "description": "Do klienta wyszla wiadomosc (mail, kanal, odpowiedz); opis to skrot tresci. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_wiadomosc_wyslana", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "zadanie_utworzone": {"post": {"tags": ["Webhooki"], "summary": "Nowe zadanie", "description": "Dodano zadanie przy szansie. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_zadanie_utworzone", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "zadanie_wykonane": {"post": {"tags": ["Webhooki"], "summary": "Zadanie wykonane", "description": "Zadanie oznaczono jako zrobione. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_zadanie_wykonane", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "notatka_dodana": {"post": {"tags": ["Webhooki"], "summary": "Nowa notatka", "description": "Dodano notatke przy szansie. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_notatka_dodana", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "opiekun_zmieniony": {"post": {"tags": ["Webhooki"], "summary": "Zmiana opiekuna", "description": "Zmieniono opiekuna szansy; opiekun_przed i opiekun. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_opiekun_zmieniony", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}, "lead_scalony": {"post": {"tags": ["Webhooki"], "summary": "Scalenie szans", "description": "Szansa zostala scalona z inna; opis to skrot zdarzenia scalenia. Naglowki: X-Fluxcrm-Signature (sha256=HMAC), X-Fluxcrm-Timestamp, X-FluxCRM-Sequence.", "operationId": "webhook_lead_scalony", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookLadunek"}}}}, "responses": {"2XX": {"description": "Dostarczone; inny kod to ponowienie (do 8 prob w 24 h)"}}}}}, "tags": [{"name": "Leady", "description": "Szanse sprzedazy: lista z filtrami, karta, zmiana pol, etapu i statusu."}, {"name": "Kontakty i firmy", "description": "Osoby i firmy oraz ich powiazanie ze szansa."}, {"name": "Zadania", "description": "Zadania przy szansach i lista zadan wszystkich szans."}, {"name": "Notatki", "description": "Notatki przy szansach."}, {"name": "Etapy i pola wlasne", "description": "Etapy lejka i definicje pol wlasnych sprawy (wartosci pol ustawia PATCH /api/leady/{id})."}, {"name": "Webhooki", "description": "Webhooki wychodzace (12 zdarzen, podpis HMAC-SHA256 z znacznikiem czasu, ponowienia, sekwencja, filtry, lekki ladunek) i przychodzace /api/v1/wejscie/{token}; opis w docs/webhooki.md."}, {"name": "Klucze API", "description": "Klucze API integracji (tylko wlasciciel zalogowany w panelu; klucz nie zarzadza kluczami)."}]}