/api/auth/loginPubliczneLogowanie (sesja panelu)
Zwraca token JWT używany w panelu webowym i requestach z Authorization: Bearer.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| email* | string | Adres email konta |
| password* | string | Hasło |
Pełna specyfikacja endpointów DropShoping — autoryzacja, produkty, sklepy, hurtownie, webhooki i przykłady cURL.
DropShoping udostępnia dwa sposoby autoryzacji: klucz API dla integracji zewnętrznych (/api/v1/*) oraz token JWT po zalogowaniu do panelu (/api/*).
Bazowy URL
https://twoja-domena.plFormat odpowiedzi
JSON · UTF-8 · błędy jako { "error": "..." }
Po POST /api/auth/login:
Authorization: Bearer eyJ...Token ważny 7 dni. Używany przez panel webowy.
Przychodzące POST z nagłówkiem X-Nouviro-Signature (HMAC). Konfigurujesz URL w Nouviro z parametrem connectionId.
/api/auth/loginPubliczneZwraca token JWT używany w panelu webowym i requestach z Authorization: Bearer.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| email* | string | Adres email konta |
| password* | string | Hasło |
/api/auth/registerPubliczneTworzy konto użytkownika i zwraca token JWT.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| email* | string | Unikalny email |
| password* | string | Min. 6 znaków |
| name | string | Imię lub nazwa firmy |
/api/auth/meSesja JWT (Bearer)Zwraca dane zalogowanego użytkownika na podstawie tokena JWT.
/api/keysSesja JWT (Bearer)Zwraca aktywne klucze (bez pełnej wartości — tylko prefix).
/api/keysSesja JWT (Bearer)Tworzy klucz do API zewnętrznego (/api/v1/*). Pełny klucz zwracany jest tylko raz w polu key.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| name* | string | Etykieta klucza |
Endpointy /api/v1/* wymagają klucza API z sekcji Klucze API. Identyfikator sklepu (shopConnectionId) pobierzesz z Kanały sprzedaży.
/api/v1/productsKlucz API (X-API-Key)Główny endpoint API zewnętrznego. Zwraca produkty z źródłami cen i aktywnymi ofertami w sklepach.
/api/v1/productsKlucz API (X-API-Key)Tworzy produkt z co najmniej jednym źródłem ceny i od razu publikuje ofertę w podłączonym sklepie (z marżą z ustawień).
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| name* | string | Nazwa produktu |
| sku | string | SKU / identyfikator |
| description | string | Opis produktu |
| imageUrl | string (url) | URL zdjęcia |
| shopConnectionId* | string | ID z sekcji Kanały sprzedaży |
| sources* | array | Min. 1 źródło ceny |
| sources[].sourceUrl* | string (url) | URL produktu u dostawcy lub wholesaler://bigbuy/ID |
| sources[].platform* | string | Np. bigbuy, cj_dropshipping, amazon |
| sources[].compareOnly | boolean | true dla Allegro/Ceneo — tylko porównanie |
/api/productsSesja JWT (Bearer)To samo co v1, ale przez sesję JWT z panelu.
/api/productsSesja JWT (Bearer)Tworzy produkt. Jeśli podasz shopConnectionId — od razu wystawia ofertę. Obsługuje category i sourcePriority (fallback źródeł).
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| name* | string | Nazwa |
| category | string | Kategoria — do reguł marży |
| shopConnectionId | string | Opcjonalnie — wystaw od razu |
| sources[].sourcePriority | number | 1 = pierwsze, 2 = zapasowe |
/api/productsSesja JWT (Bearer)Publikuje istniejący produkt w wybranym sklepie.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| productId* | string | ID produktu |
| shopConnectionId* | string | ID sklepu |
/api/shopsSesja JWT (Bearer)Zwraca podłączone sklepy z liczbą aktywnych ofert.
/api/shopsSesja JWT (Bearer)Tworzy połączenie z kanałem sprzedaży.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| name* | string | Nazwa w panelu |
| platform* | enum | WOOCOMMERCE | SHOPIFY | PRESTASHOP | NOUVIRO | CUSTOM |
| shopUrl* | string (url) | URL sklepu lub API |
| apiKey | string | Klucz API sklepu |
| apiSecret | string | Secret / webhook secret |
| accessToken | string | Token Shopify |
/api/shops?id={id}Sesja JWT (Bearer)Trwale usuwa połączenie z kanałem sprzedaży.
Parametry query
| Pole | Typ | Opis |
|---|---|---|
| id* | string | ID połączenia |
/api/wholesalersSesja JWT (Bearer)Zwraca podłączone hurtownie (BigBuy, CJ Dropshipping).
/api/wholesalersSesja JWT (Bearer)Dodaje połączenie z hurtownią dropshippingową.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| name* | string | Nazwa połączenia |
| provider* | enum | BIGBUY | CJ_DROPSHIPPING |
| apiKey* | string | Klucz API hurtowni |
| apiSecret | string | Secret (CJ) |
/api/wholesalersSesja JWT (Bearer)Pobiera i aktualizuje produkty z API hurtowni.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| connectionId* | string | ID hurtowni |
/api/wholesalers/products?connectionId={id}Sesja JWT (Bearer)Katalog zsynchronizowany z hurtowni — do importu do DropShoping.
Parametry query
| Pole | Typ | Opis |
|---|---|---|
| connectionId | string | Filtr po hurtowni |
/api/wholesalers/productsSesja JWT (Bearer)Tworzy produkt w DropShoping ze źródłem wholesaler://. Opcjonalnie wystawia w sklepie.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| wholesalerProductId* | string | ID produktu hurtowni |
| shopConnectionId | string | Wystaw od razu |
/api/ordersSesja JWT (Bearer)Zamówienia ze sklepów + status auto-realizacji u hurtowni.
/api/opportunitiesSesja JWT (Bearer)Zapisane okazje użytkownika + aktywne ScrapeTarget i autoUrls (linki do auto-wypełnienia).
/api/opportunitiesSesja JWT (Bearer)Bez urls: ustaw auto:true (opcjonalnie queue:true), żeby skanować cele/trendy. Z urls: scrapuje podane linki.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| urls | string[] | Lista URL produktów (opcjonalnie) |
| auto | boolean | true = skan automatyczny z celów i trendów |
| queue | boolean | true = dodaj job SCAN_OPPORTUNITIES do kolejki |
/api/settingsSesja JWT (Bearer)Pełne ustawienia użytkownika: marże, monitoring, automatyzacje (boty), trendy/popyt, platformy, powiadomienia i hurtownie.
/api/settingsSesja JWT (Bearer)Częściowa aktualizacja — wysyłasz tylko pola, które chcesz zmienić.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| defaultMarginPercent | number | Domyślna marża % (0–500) |
| minMarginAmount | number | Minimalna marża kwotowa (np. 5 PLN) |
| monitorIntervalMinutes | number | Co ile minut monitoring ma sprawdzać oferty (5–1440) |
| monitorEnabled | boolean | Globalny przełącznik: czy monitoring jest włączony |
| autoDelist | boolean | Czy bot ma zdejmować oferty, gdy brak dostępności u dostawcy |
| autoUpdatePrice | boolean | Czy bot ma aktualizować ceny ofert wg reguł marży |
| autoFulfillOrders | boolean | Czy auto-realizować zamówienia u hurtowni (gdy możliwe) |
| simulationMode | boolean | Tryb symulacji — bot liczy i loguje, ale nie publikuje i nie zamawia |
| autoScanOpportunities | boolean | Czy bot ma cyklicznie skanować cele (ScrapeTarget) pod okazje |
| autoRefreshTrending | boolean | Czy bot ma cyklicznie odświeżać trendy (seed trending) |
| autoRefreshDemand | boolean | Czy bot ma cyklicznie odświeżać popyt (Google Trends) |
| opportunityScanIntervalHours | number | Interwał skanu okazji w godzinach (1–168) |
| trendingRefreshIntervalHours | number | Interwał odświeżania trendów w godzinach (1–168) |
| demandRefreshIntervalHours | number | Interwał odświeżania popytu w godzinach (24–720) |
| minOpportunityMarginPercent | number | Minimalna marża % dla okazji, aby uznać ją za wartą zapisania |
| minOpportunityProfit | number | Minimalny zysk kwotowy dla okazji |
| currency | string | Waluta w formacie ISO-4217 (np. PLN, EUR) |
| demandRegion | string | Region/geo dla Google Trends (np. PL, DE, US) |
| sourcePlatformIds | string[] | Lista platform traktowanych jako źródła zakupu (sourcing) |
| comparePlatformIds | string[] | Lista platform referencyjnych/porównywarek (comparison/retail) |
| enabledTrendingCategories | string[] | Włączone kategorie trendów (np. Elektronika) |
| customTrendingQueries | { category: string; keyword: string }[] | Własne zapytania trendów per kategoria |
| defaultShopConnectionId | string | null | Domyślny kanał sprzedaży do publikacji (jeśli ustawiony) |
| showDemandStats | boolean | Czy pokazywać statystyki popytu w panelu |
| showComparisonStats | boolean | Czy pokazywać statystyki porównań cen w panelu |
| notifyWebhookUrl | string | null | Webhook URL dla powiadomień (Slack/Discord/Zapier). Null usuwa. |
| notifyEmail | string | null | Email do powiadomień (opcjonalnie). Pusty string usuwa. |
| notifyOnOpportunity | boolean | Powiadom, gdy bot znajdzie okazję |
| notifyOnPriceChange | boolean | Powiadom, gdy monitoring zmieni cenę |
| notifyOnDelist | boolean | Powiadom, gdy oferta zostanie zdjęta |
| autoImportWholesalers | boolean | Czy bot ma cyklicznie importować produkty z hurtowni |
| wholesalerImportIntervalHours | number | Interwał auto-importu hurtowni w godzinach (1–168) |
| wholesalerImportCategories | string[] | Jakie kategorie importować z hurtowni (filtr) |
/api/margin-rulesSesja JWT (Bearer)Nadpisują domyślną marżę dla produktów pasujących do categoryMatch.
/api/margin-rulesSesja JWT (Bearer)Tworzy regułę z priorytetem — wyższy priorytet wygrywa przy wielu dopasowaniach.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| name* | string | Nazwa reguły |
| categoryMatch | string | Fragment nazwy kategorii (np. elektronika) |
| marginPercent* | number | Marża % |
| priority | number | Wyższy = ważniejszy |
/api/monitorSesja JWT (Bearer)Historia aktualizacji cen, zdejmowań i błędów synchronizacji.
/api/monitorSesja JWT (Bearer)Sprawdza wszystkie aktywne oferty — ceny i dostępność u dostawcy.
/api/automationSesja JWT (Bearer)Dodaje zadanie do kolejki workera. Domyślnie RUN_AUTOMATION, ale można wskazać konkretny typ (np. SCAN_OPPORTUNITIES).
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| type | JobType | Opcjonalnie: RUN_AUTOMATION | REFRESH_TRENDING | REFRESH_DEMAND | SCAN_OPPORTUNITIES | IMPORT_WHOLESALERS |
/api/automation/statusSesja JWT (Bearer)Zbiorczy status automatyzacji: heartbeat workera, liczniki, ostatnie uruchomienia oraz health scrapera i sygnał czy Google Trends działa.
/api/automation/logs?limit={n}Sesja JWT (Bearer)Ostatnie zdarzenia botów (scan, refresh, notify, błędy).
Parametry query
| Pole | Typ | Opis |
|---|---|---|
| limit | number | Limit wpisów (max 200) |
/api/scrape-targetsSesja JWT (Bearer)Zapisane cele do auto-skana: frazy lub URL.
/api/scrape-targetsSesja JWT (Bearer)Dodaje ScrapeTarget dla botów (fraza lub URL).
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| name* | string | Nazwa celu |
| platform* | string | ID platformy (np. aliexpress) |
| baseUrl* | string | Bazowy URL albo URL produktu |
| searchQuery | string | Fraza wyszukiwania (opcjonalnie) |
| isActive | boolean | Czy aktywny |
/api/scrape-targetsSesja JWT (Bearer)Aktualizuje ScrapeTarget (włącz/wyłącz, zmień frazę/URL).
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| id* | string | ID celu |
| name | string | Nowa nazwa |
| baseUrl | string | URL |
| searchQuery | string | Fraza |
| isActive | boolean | Aktywny |
/api/scrape-targets?id={id}Sesja JWT (Bearer)Usuwa ScrapeTarget po ID.
Parametry query
| Pole | Typ | Opis |
|---|---|---|
| id* | string | ID celu |
/api/trending?limit={n}&refresh={0|1}PubliczneZwraca trending products do dashboardu. Jeśli użytkownik jest zalogowany, uwzględnia jego preferencje platform i ustawienia.
Parametry query
| Pole | Typ | Opis |
|---|---|---|
| limit | number | Ile pozycji zwrócić (max 20) |
| refresh | 0|1 | 1 = wymuś odświeżenie trendów przed zwróceniem |
/api/trendingPubliczneWymusza odświeżenie trendów (serwer-side).
/api/trending/demand?range={3m|6m|12m|24m}&from={YYYY-MM-DD}&to={YYYY-MM-DD}&category={name}&productId={id}&refresh={0|1}&forecastMonth={1-12}PubliczneZwraca punkty popytu, metryki oraz prognozę sezonową (monthlyForecast): które produkty historycznie najlepiej sprzedają się w wybranym miesiącu kalendarzowym.
Parametry query
| Pole | Typ | Opis |
|---|---|---|
| range | string | Zakres danych (np. 3m, 6m, 12m, 24m) |
| from | string | Data od (YYYY-MM-DD), opcjonalnie |
| to | string | Data do (YYYY-MM-DD), opcjonalnie |
| category | string | Filtr po kategorii (opcjonalnie) |
| productId | string | ID produktu (opcjonalnie) |
| refresh | 0|1 | 1 = wymuś odświeżenie popytu przed zwróceniem |
| forecastMonth | number | Miesiąc 1–12 do prognozy „co sprzedawać” (domyślnie bieżący miesiąc) |
/api/trending/demandPubliczneWymusza odświeżenie popytu (Google Trends) dla produktów w bazie.
/api/jobs?status={status}&type={type}&limit={n}Sesja JWT (Bearer)Zwraca joby użytkownika (kolejka wykonywana przez workera).
Parametry query
| Pole | Typ | Opis |
|---|---|---|
| status | JobStatus | Filtr statusu (opcjonalnie) |
| type | JobType | Filtr typu (opcjonalnie) |
| limit | number | Limit (max 200) |
/api/jobsSesja JWT (Bearer)Pozwala anulować job albo ponowić (ustawia status na QUEUED).
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| id* | string | ID joba |
| action* | string | cancel lub retry |
/api/catalog/importSesja JWT (Bearer)Tworzy produkt w katalogu na podstawie okazji lub trendu (z deduplikacją po sourceUrl). Opcjonalnie wystawia w domyślnym sklepie.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| type* | string | opportunity lub trending |
| id* | string | ID okazji lub ID trendu |
| shopConnectionId | string | Wystaw w konkretnym sklepie (opcjonalnie) |
/api/scraper/healthPubliczneSprawdza czy moduł scrapera działa (wbudowany lub zewnętrzny).
/api/scraper/scrapeSesja JWT (Bearer)Pobiera cenę/tytuł/dostępność dla URL produktu.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| url* | string | URL produktu |
| platform | string | Platforma (opcjonalnie, auto-detect) |
/api/scraper/compareSesja JWT (Bearer)Scrape wielu URL i zwrot najtańszego źródła + referencji rynku.
Body (JSON)
| Pole | Typ | Opis |
|---|---|---|
| urls* | string[] | Lista URL produktów |
URL webhooka w panelu Nouviro:
https://twoja-domena.pl/api/webhooks/nouviro?connectionId=ID_POŁĄCZENIASecret webhooka = pole apiSecret z połączenia Nouviro w DropShoping.
/api/webhooks/nouviro?connectionId={id}Webhook przychodzącyNouviro wysyła tu eventy zamówień. DropShoping przetwarza order.created i składa zamówienie u hurtowni.
Parametry query
| Pole | Typ | Opis |
|---|---|---|
| connectionId* | string | ID połączenia Nouviro z panelu |
Statusy ofert (ListingStatus)
PENDINGOczekuje na publikację w sklepieACTIVEOferta aktywnaDELISTEDZdjęta (brak towaru u dostawcy)ERRORBłąd publikacjiStatusy zamówień (OrderStatus)
RECEIVEDZamówienie odebraneFULFILLINGRealizacja u hurtowni w tokuFULFILLEDZrealizowane u dostawcyPARTIALCzęściowo zrealizowaneFAILEDBłąd realizacjiStatusy jobów (JobStatus)
QUEUEDW kolejce — czeka na workeraRUNNINGW trakcie — worker wykonuje jobaSUCCEEDEDZakończony sukcesemFAILEDZakończony błędem (można retry)CANCELLEDAnulowanyTypy jobów (JobType)
RUN_AUTOMATIONPełna tura automatyzacji (zbiorczo)REFRESH_TRENDINGOdśwież trendy (seed trending)REFRESH_DEMANDOdśwież popyt (Google Trends)SCAN_OPPORTUNITIESSkanuj cele (ScrapeTarget) pod okazjeIMPORT_WHOLESALERSAuto-import produktów z hurtowni