Dokumentacja API

Pełna specyfikacja endpointów DropShoping — autoryzacja, produkty, sklepy, hurtownie, webhooki i przykłady cURL.

JSON spec →

Wprowadzenie

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.pl

Format odpowiedzi

JSON · UTF-8 · błędy jako { "error": "..." }

Kody HTTP
200  OK — sukces
201  Created — utworzono zasób
400  Bad Request — błąd walidacji body
401  Unauthorized — brak lub nieprawidłowa autoryzacja
404  Not Found — zasób nie istnieje
500  Internal Server Error — błąd serwera

Autoryzacja

Klucz API (integracje)

Nagłówek:

X-API-Key: ds_...

Alternatywnie: Authorization: Bearer ds_...

Generuj klucz →

Sesja JWT (panel)

Po POST /api/auth/login:

Authorization: Bearer eyJ...

Token ważny 7 dni. Używany przez panel webowy.

Webhook Nouviro

Przychodzące POST z nagłówkiem X-Nouviro-Signature (HMAC). Konfigurujesz URL w Nouviro z parametrem connectionId.

POST/api/auth/loginPubliczne

Logowanie (sesja panelu)

Zwraca token JWT używany w panelu webowym i requestach z Authorization: Bearer.

Body (JSON)

PoleTypOpis
email*stringAdres email konta
password*stringHasło
Przykład żądania
{
  "email": "jan@example.com",
  "password": "twoje_haslo"
}
Przykład odpowiedzi
{
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": {
    "id": "clxxx",
    "email": "jan@example.com",
    "name": "Jan"
  }
}
cURL
curl -X POST https://twoja-domena.pl/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"jan@example.com","password":"haslo"}'
POST/api/auth/registerPubliczne

Rejestracja konta

Tworzy konto użytkownika i zwraca token JWT.

Body (JSON)

PoleTypOpis
email*stringUnikalny email
password*stringMin. 6 znaków
namestringImię lub nazwa firmy
Przykład żądania
{
  "email": "jan@example.com",
  "password": "haslo123",
  "name": "Jan Kowalski"
}
Przykład odpowiedzi
{
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": { "id": "clxxx", "email": "jan@example.com", "name": "Jan Kowalski" }
}
GET/api/auth/meSesja JWT (Bearer)

Bieżący użytkownik

Zwraca dane zalogowanego użytkownika na podstawie tokena JWT.

Przykład odpowiedzi
{
  "id": "clxxx",
  "email": "jan@example.com",
  "name": "Jan Kowalski"
}
GET/api/keysSesja JWT (Bearer)

Lista kluczy API

Zwraca aktywne klucze (bez pełnej wartości — tylko prefix).

Przykład odpowiedzi
[
  {
    "id": "clxxx",
    "name": "Integracja ERP",
    "keyPrefix": "ds_a1b2c3d4",
    "isActive": true,
    "lastUsedAt": "2026-07-09T12:00:00.000Z",
    "createdAt": "2026-07-01T10:00:00.000Z"
  }
]
POST/api/keysSesja JWT (Bearer)

Generuj klucz API

Tworzy klucz do API zewnętrznego (/api/v1/*). Pełny klucz zwracany jest tylko raz w polu key.

Body (JSON)

PoleTypOpis
name*stringEtykieta klucza
Przykład odpowiedzi
{
  "id": "clxxx",
  "name": "Integracja ERP",
  "key": "ds_64znakowyhex...",
  "keyPrefix": "ds_a1b2c3d4",
  "message": "Zapisz klucz teraz. Nie będzie widoczny ponownie."
}

API zewnętrzne (v1)

Endpointy /api/v1/* wymagają klucza API z sekcji Klucze API. Identyfikator sklepu (shopConnectionId) pobierzesz z Kanały sprzedaży.

GET/api/v1/productsKlucz API (X-API-Key)

Lista produktów

Główny endpoint API zewnętrznego. Zwraca produkty z źródłami cen i aktywnymi ofertami w sklepach.

Przykład odpowiedzi
{
  "products": [
    {
      "id": "clxxx",
      "name": "Słuchawki Pro",
      "sku": "SLU-001",
      "sources": [
        {
          "id": "clxxx",
          "platform": "bigbuy",
          "sourceUrl": "wholesaler://bigbuy/12345",
          "currentPrice": 34.2,
          "isAvailable": true,
          "isLowest": true
        }
      ],
      "listings": [
        {
          "id": "clxxx",
          "status": "ACTIVE",
          "listedPrice": 41.04,
          "shopConnection": { "name": "Sklep WooCommerce", "platform": "WOOCOMMERCE" }
        }
      ]
    }
  ]
}
cURL
curl https://twoja-domena.pl/api/v1/products \
  -H "X-API-Key: ds_twoj_klucz"
POST/api/v1/productsKlucz API (X-API-Key)

Dodaj produkt i wystaw w sklepie

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)

PoleTypOpis
name*stringNazwa produktu
skustringSKU / identyfikator
descriptionstringOpis produktu
imageUrlstring (url)URL zdjęcia
shopConnectionId*stringID z sekcji Kanały sprzedaży
sources*arrayMin. 1 źródło ceny
sources[].sourceUrl*string (url)URL produktu u dostawcy lub wholesaler://bigbuy/ID
sources[].platform*stringNp. bigbuy, cj_dropshipping, amazon
sources[].compareOnlybooleantrue dla Allegro/Ceneo — tylko porównanie
Przykład żądania
{
  "name": "Słuchawki bezprzewodowe Pro",
  "sku": "SLU-001",
  "description": "Opis produktu",
  "imageUrl": "https://example.com/img.jpg",
  "shopConnectionId": "clxxx_id_sklepu",
  "sources": [
    {
      "sourceUrl": "wholesaler://bigbuy/12345",
      "platform": "bigbuy"
    },
    {
      "sourceUrl": "https://www.ceneo.pl/123456",
      "platform": "ceneo",
      "compareOnly": true
    }
  ]
}
Przykład odpowiedzi
{
  "product": { "id": "clxxx", "name": "Słuchawki...", "sources": [...] },
  "listing": {
    "id": "clxxx",
    "status": "ACTIVE",
    "listedPrice": 41.04,
    "sourcePrice": 34.2,
    "marginPercent": 20,
    "externalId": "123"
  }
}
cURL
curl -X POST https://twoja-domena.pl/api/v1/products \
  -H "X-API-Key: ds_twoj_klucz" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Słuchawki Pro",
    "shopConnectionId": "clxxx",
    "sources": [{
      "sourceUrl": "wholesaler://bigbuy/12345",
      "platform": "bigbuy"
    }]
  }'
  • ·Marża liczona z ustawień konta (defaultMarginPercent, minMarginAmount) i reguł per kategoria
  • ·Platformy porównawcze (Allegro, Ceneo) nie mogą być jedynym źródłem zakupu

Produkty

GET/api/productsSesja JWT (Bearer)

Lista produktów (panel)

To samo co v1, ale przez sesję JWT z panelu.

POST/api/productsSesja JWT (Bearer)

Utwórz produkt (panel)

Tworzy produkt. Jeśli podasz shopConnectionId — od razu wystawia ofertę. Obsługuje category i sourcePriority (fallback źródeł).

Body (JSON)

PoleTypOpis
name*stringNazwa
categorystringKategoria — do reguł marży
shopConnectionIdstringOpcjonalnie — wystaw od razu
sources[].sourcePrioritynumber1 = pierwsze, 2 = zapasowe
Przykład żądania
{
  "name": "Lampa LED",
  "category": "elektronika",
  "shopConnectionId": "clxxx",
  "sources": [
    { "sourceUrl": "wholesaler://cj_dropshipping/abc", "platform": "cj_dropshipping", "sourcePriority": 1 },
    { "sourceUrl": "wholesaler://bigbuy/999", "platform": "bigbuy", "sourcePriority": 2 }
  ]
}
PUT/api/productsSesja JWT (Bearer)

Wystaw istniejący produkt

Publikuje istniejący produkt w wybranym sklepie.

Body (JSON)

PoleTypOpis
productId*stringID produktu
shopConnectionId*stringID sklepu
Przykład żądania
{ "productId": "clxxx", "shopConnectionId": "clxxx" }

Kanały sprzedaży

GET/api/shopsSesja JWT (Bearer)

Lista kanałów sprzedaży

Zwraca podłączone sklepy z liczbą aktywnych ofert.

Przykład odpowiedzi
[
  {
    "id": "clxxx",
    "name": "Sklep WooCommerce",
    "platform": "WOOCOMMERCE",
    "shopUrl": "https://sklep.pl",
    "isActive": true,
    "_count": { "listings": 12 }
  }
]
POST/api/shopsSesja JWT (Bearer)

Podłącz sklep

Tworzy połączenie z kanałem sprzedaży.

Body (JSON)

PoleTypOpis
name*stringNazwa w panelu
platform*enumWOOCOMMERCE | SHOPIFY | PRESTASHOP | NOUVIRO | CUSTOM
shopUrl*string (url)URL sklepu lub API
apiKeystringKlucz API sklepu
apiSecretstringSecret / webhook secret
accessTokenstringToken Shopify
Przykład żądania
{
  "name": "Sklep WooCommerce",
  "platform": "WOOCOMMERCE",
  "shopUrl": "https://sklep.pl",
  "apiKey": "ck_...",
  "apiSecret": "cs_..."
}
DELETE/api/shops?id={id}Sesja JWT (Bearer)

Usuń połączenie sklepu

Trwale usuwa połączenie z kanałem sprzedaży.

Parametry query

PoleTypOpis
id*stringID połączenia

Hurtownie

Format URL źródła hurtowni
wholesaler://{platform}/{externalId}

Przykłady:
  wholesaler://bigbuy/12345
  wholesaler://cj_dropshipping/abc123
GET/api/wholesalersSesja JWT (Bearer)

Lista hurtowni

Zwraca podłączone hurtownie (BigBuy, CJ Dropshipping).

POST/api/wholesalersSesja JWT (Bearer)

Podłącz hurtownię

Dodaje połączenie z hurtownią dropshippingową.

Body (JSON)

PoleTypOpis
name*stringNazwa połączenia
provider*enumBIGBUY | CJ_DROPSHIPPING
apiKey*stringKlucz API hurtowni
apiSecretstringSecret (CJ)
Przykład żądania
{
  "name": "BigBuy EU",
  "provider": "BIGBUY",
  "apiKey": "twoj_klucz_bigbuy"
}
PUT/api/wholesalersSesja JWT (Bearer)

Synchronizuj katalog hurtowni

Pobiera i aktualizuje produkty z API hurtowni.

Body (JSON)

PoleTypOpis
connectionId*stringID hurtowni
Przykład odpowiedzi
{ "upserted": 50, "total": 50 }
GET/api/wholesalers/products?connectionId={id}Sesja JWT (Bearer)

Produkty z hurtowni

Katalog zsynchronizowany z hurtowni — do importu do DropShoping.

Parametry query

PoleTypOpis
connectionIdstringFiltr po hurtowni
POST/api/wholesalers/productsSesja JWT (Bearer)

Importuj produkt z hurtowni

Tworzy produkt w DropShoping ze źródłem wholesaler://. Opcjonalnie wystawia w sklepie.

Body (JSON)

PoleTypOpis
wholesalerProductId*stringID produktu hurtowni
shopConnectionIdstringWystaw od razu

Zamówienia

GET/api/ordersSesja JWT (Bearer)

Lista zamówień

Zamówienia ze sklepów + status auto-realizacji u hurtowni.

Przykład odpowiedzi
[
  {
    "id": "clxxx",
    "externalOrderId": "1842",
    "status": "FULFILLED",
    "totalAmount": 89.99,
    "shopConnection": { "name": "Nouviro", "platform": "NOUVIRO" },
    "supplierOrders": [
      {
        "provider": "BIGBUY",
        "status": "SUBMITTED",
        "externalOrderId": "bb_123",
        "cost": 34.2
      }
    ]
  }
]

Okazje

GET/api/opportunitiesSesja JWT (Bearer)

Lista okazji

Zapisane okazje użytkownika + aktywne ScrapeTarget i autoUrls (linki do auto-wypełnienia).

POST/api/opportunitiesSesja JWT (Bearer)

Analizuj linki lub auto-skan

Bez urls: ustaw auto:true (opcjonalnie queue:true), żeby skanować cele/trendy. Z urls: scrapuje podane linki.

Body (JSON)

PoleTypOpis
urlsstring[]Lista URL produktów (opcjonalnie)
autobooleantrue = skan automatyczny z celów i trendów
queuebooleantrue = dodaj job SCAN_OPPORTUNITIES do kolejki
Przykład żądania
{ "auto": true, "queue": true }

Ustawienia i marże

GET/api/settingsSesja JWT (Bearer)

Ustawienia konta

Pełne ustawienia użytkownika: marże, monitoring, automatyzacje (boty), trendy/popyt, platformy, powiadomienia i hurtownie.

Przykład odpowiedzi
{
  "defaultMarginPercent": 20,
  "minMarginAmount": 5,
  "monitorIntervalMinutes": 30,
  "monitorEnabled": true,
  "autoDelist": true,
  "autoUpdatePrice": true,
  "autoFulfillOrders": true,
  "simulationMode": false,

  "autoScanOpportunities": true,
  "autoRefreshTrending": true,
  "autoRefreshDemand": true,
  "opportunityScanIntervalHours": 6,
  "trendingRefreshIntervalHours": 24,
  "demandRefreshIntervalHours": 72,
  "minOpportunityMarginPercent": 20,
  "minOpportunityProfit": 10,

  "currency": "PLN",
  "demandRegion": "PL",
  "sourcePlatformIds": ["amazon", "aliexpress"],
  "comparePlatformIds": ["ceneo"],

  "enabledTrendingCategories": ["Elektronika", "Dom i ogród"],
  "customTrendingQueries": [{ "category": "Elektronika", "keyword": "powerbank 20000mah" }],
  "defaultShopConnectionId": "clxxx",
  "showDemandStats": true,
  "showComparisonStats": true,

  "notifyWebhookUrl": "https://hooks.slack.com/services/...",
  "notifyEmail": "jan@example.com",
  "notifyOnOpportunity": true,
  "notifyOnPriceChange": true,
  "notifyOnDelist": true,

  "autoImportWholesalers": false,
  "wholesalerImportIntervalHours": 24,
  "wholesalerImportCategories": ["Elektronika", "Moda"]
}
PUT/api/settingsSesja JWT (Bearer)

Aktualizuj ustawienia

Częściowa aktualizacja — wysyłasz tylko pola, które chcesz zmienić.

Body (JSON)

PoleTypOpis
defaultMarginPercentnumberDomyślna marża % (0–500)
minMarginAmountnumberMinimalna marża kwotowa (np. 5 PLN)
monitorIntervalMinutesnumberCo ile minut monitoring ma sprawdzać oferty (5–1440)
monitorEnabledbooleanGlobalny przełącznik: czy monitoring jest włączony
autoDelistbooleanCzy bot ma zdejmować oferty, gdy brak dostępności u dostawcy
autoUpdatePricebooleanCzy bot ma aktualizować ceny ofert wg reguł marży
autoFulfillOrdersbooleanCzy auto-realizować zamówienia u hurtowni (gdy możliwe)
simulationModebooleanTryb symulacji — bot liczy i loguje, ale nie publikuje i nie zamawia
autoScanOpportunitiesbooleanCzy bot ma cyklicznie skanować cele (ScrapeTarget) pod okazje
autoRefreshTrendingbooleanCzy bot ma cyklicznie odświeżać trendy (seed trending)
autoRefreshDemandbooleanCzy bot ma cyklicznie odświeżać popyt (Google Trends)
opportunityScanIntervalHoursnumberInterwał skanu okazji w godzinach (1–168)
trendingRefreshIntervalHoursnumberInterwał odświeżania trendów w godzinach (1–168)
demandRefreshIntervalHoursnumberInterwał odświeżania popytu w godzinach (24–720)
minOpportunityMarginPercentnumberMinimalna marża % dla okazji, aby uznać ją za wartą zapisania
minOpportunityProfitnumberMinimalny zysk kwotowy dla okazji
currencystringWaluta w formacie ISO-4217 (np. PLN, EUR)
demandRegionstringRegion/geo dla Google Trends (np. PL, DE, US)
sourcePlatformIdsstring[]Lista platform traktowanych jako źródła zakupu (sourcing)
comparePlatformIdsstring[]Lista platform referencyjnych/porównywarek (comparison/retail)
enabledTrendingCategoriesstring[]Włączone kategorie trendów (np. Elektronika)
customTrendingQueries{ category: string; keyword: string }[]Własne zapytania trendów per kategoria
defaultShopConnectionIdstring | nullDomyślny kanał sprzedaży do publikacji (jeśli ustawiony)
showDemandStatsbooleanCzy pokazywać statystyki popytu w panelu
showComparisonStatsbooleanCzy pokazywać statystyki porównań cen w panelu
notifyWebhookUrlstring | nullWebhook URL dla powiadomień (Slack/Discord/Zapier). Null usuwa.
notifyEmailstring | nullEmail do powiadomień (opcjonalnie). Pusty string usuwa.
notifyOnOpportunitybooleanPowiadom, gdy bot znajdzie okazję
notifyOnPriceChangebooleanPowiadom, gdy monitoring zmieni cenę
notifyOnDelistbooleanPowiadom, gdy oferta zostanie zdjęta
autoImportWholesalersbooleanCzy bot ma cyklicznie importować produkty z hurtowni
wholesalerImportIntervalHoursnumberInterwał auto-importu hurtowni w godzinach (1–168)
wholesalerImportCategoriesstring[]Jakie kategorie importować z hurtowni (filtr)
Przykład żądania
{
  "simulationMode": true,
  "autoScanOpportunities": true,
  "opportunityScanIntervalHours": 6,
  "enabledTrendingCategories": ["Elektronika"],
  "customTrendingQueries": [{ "category": "Elektronika", "keyword": "powerbank 20000mah" }],
  "notifyWebhookUrl": "https://hooks.slack.com/services/..."
}
GET/api/margin-rulesSesja JWT (Bearer)

Reguły marży per kategoria

Nadpisują domyślną marżę dla produktów pasujących do categoryMatch.

POST/api/margin-rulesSesja JWT (Bearer)

Dodaj regułę marży

Tworzy regułę z priorytetem — wyższy priorytet wygrywa przy wielu dopasowaniach.

Body (JSON)

PoleTypOpis
name*stringNazwa reguły
categoryMatchstringFragment nazwy kategorii (np. elektronika)
marginPercent*numberMarża %
prioritynumberWyższy = ważniejszy

Monitor

GET/api/monitorSesja JWT (Bearer)

Logi monitora

Historia aktualizacji cen, zdejmowań i błędów synchronizacji.

POST/api/monitorSesja JWT (Bearer)

Uruchom monitoring ręcznie

Sprawdza wszystkie aktywne oferty — ceny i dostępność u dostawcy.

Przykład odpowiedzi
{ "processed": 12, "results": [...] }

Automatyzacja (boty)

POST/api/automationSesja JWT (Bearer)

Kolejkuj job automatyzacji

Dodaje zadanie do kolejki workera. Domyślnie RUN_AUTOMATION, ale można wskazać konkretny typ (np. SCAN_OPPORTUNITIES).

Body (JSON)

PoleTypOpis
typeJobTypeOpcjonalnie: RUN_AUTOMATION | REFRESH_TRENDING | REFRESH_DEMAND | SCAN_OPPORTUNITIES | IMPORT_WHOLESALERS
Przykład żądania
{ "type": "SCAN_OPPORTUNITIES" }
Przykład odpowiedzi
{ "queued": true, "jobId": "clxxx" }
GET/api/automation/statusSesja JWT (Bearer)

Status workera i botów

Zbiorczy status automatyzacji: heartbeat workera, liczniki, ostatnie uruchomienia oraz health scrapera i sygnał czy Google Trends działa.

GET/api/automation/logs?limit={n}Sesja JWT (Bearer)

Logi automatyzacji (historia botów)

Ostatnie zdarzenia botów (scan, refresh, notify, błędy).

Parametry query

PoleTypOpis
limitnumberLimit wpisów (max 200)
GET/api/scrape-targetsSesja JWT (Bearer)

Lista celów skanowania

Zapisane cele do auto-skana: frazy lub URL.

POST/api/scrape-targetsSesja JWT (Bearer)

Dodaj cel skanowania

Dodaje ScrapeTarget dla botów (fraza lub URL).

Body (JSON)

PoleTypOpis
name*stringNazwa celu
platform*stringID platformy (np. aliexpress)
baseUrl*stringBazowy URL albo URL produktu
searchQuerystringFraza wyszukiwania (opcjonalnie)
isActivebooleanCzy aktywny
PATCH/api/scrape-targetsSesja JWT (Bearer)

Aktualizuj cel skanowania

Aktualizuje ScrapeTarget (włącz/wyłącz, zmień frazę/URL).

Body (JSON)

PoleTypOpis
id*stringID celu
namestringNowa nazwa
baseUrlstringURL
searchQuerystringFraza
isActivebooleanAktywny
DELETE/api/scrape-targets?id={id}Sesja JWT (Bearer)

Usuń cel skanowania

Usuwa ScrapeTarget po ID.

Parametry query

PoleTypOpis
id*stringID celu
Przykład odpowiedzi
{ "success": true }
GET/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}Publiczne

Popyt — analityka (Google Trends)

Zwraca punkty popytu, metryki oraz prognozę sezonową (monthlyForecast): które produkty historycznie najlepiej sprzedają się w wybranym miesiącu kalendarzowym.

Parametry query

PoleTypOpis
rangestringZakres danych (np. 3m, 6m, 12m, 24m)
fromstringData od (YYYY-MM-DD), opcjonalnie
tostringData do (YYYY-MM-DD), opcjonalnie
categorystringFiltr po kategorii (opcjonalnie)
productIdstringID produktu (opcjonalnie)
refresh0|11 = wymuś odświeżenie popytu przed zwróceniem
forecastMonthnumberMiesiąc 1–12 do prognozy „co sprzedawać” (domyślnie bieżący miesiąc)
POST/api/trending/demandPubliczne

Popyt — odśwież

Wymusza odświeżenie popytu (Google Trends) dla produktów w bazie.

Przykład odpowiedzi
{ "refreshed": 12 }

Joby (kolejka)

GET/api/jobs?status={status}&type={type}&limit={n}Sesja JWT (Bearer)

Lista jobów (kolejka)

Zwraca joby użytkownika (kolejka wykonywana przez workera).

Parametry query

PoleTypOpis
statusJobStatusFiltr statusu (opcjonalnie)
typeJobTypeFiltr typu (opcjonalnie)
limitnumberLimit (max 200)
PATCH/api/jobsSesja JWT (Bearer)

Akcja na jobie (retry/cancel)

Pozwala anulować job albo ponowić (ustawia status na QUEUED).

Body (JSON)

PoleTypOpis
id*stringID joba
action*stringcancel lub retry
Przykład żądania
{ "id": "clxxx", "action": "retry" }
Przykład odpowiedzi
{ "success": true }

Import do katalogu

POST/api/catalog/importSesja JWT (Bearer)

Import trendu/okazji do katalogu

Tworzy produkt w katalogu na podstawie okazji lub trendu (z deduplikacją po sourceUrl). Opcjonalnie wystawia w domyślnym sklepie.

Body (JSON)

PoleTypOpis
type*stringopportunity lub trending
id*stringID okazji lub ID trendu
shopConnectionIdstringWystaw w konkretnym sklepie (opcjonalnie)
Przykład żądania
{ "type": "trending", "id": "clxxx" }

Scraper (ceny)

GET/api/scraper/healthPubliczne

Status scrapera

Sprawdza czy moduł scrapera działa (wbudowany lub zewnętrzny).

POST/api/scraper/scrapeSesja JWT (Bearer)

Scrape pojedynczego URL

Pobiera cenę/tytuł/dostępność dla URL produktu.

Body (JSON)

PoleTypOpis
url*stringURL produktu
platformstringPlatforma (opcjonalnie, auto-detect)
Przykład żądania
{ "url": "https://www.amazon.pl/dp/...", "platform": "amazon" }
POST/api/scraper/compareSesja JWT (Bearer)

Porównaj ceny z listy URL

Scrape wielu URL i zwrot najtańszego źródła + referencji rynku.

Body (JSON)

PoleTypOpis
urls*string[]Lista URL produktów

Webhooki

Konfiguracja w Nouviro

URL webhooka w panelu Nouviro:

https://twoja-domena.pl/api/webhooks/nouviro?connectionId=ID_POŁĄCZENIA

Secret webhooka = pole apiSecret z połączenia Nouviro w DropShoping.

POST/api/webhooks/nouviro?connectionId={id}Webhook przychodzący

Webhook Nouviro (przychodzący)

Nouviro wysyła tu eventy zamówień. DropShoping przetwarza order.created i składa zamówienie u hurtowni.

Parametry query

PoleTypOpis
connectionId*stringID połączenia Nouviro z panelu
Przykład żądania
{
  "event": "order.created",
  "timestamp": "2026-07-09T12:00:00Z",
  "data": {
    "order": {
      "id": "1842",
      "customer_name": "Jan Kowalski",
      "items": [
        { "product_id": "nv_123", "sku": "SLU-001", "quantity": 1, "price": 41.04 }
      ],
      "total": 41.04,
      "currency": "PLN"
    }
  }
}
Przykład odpowiedzi
{ "ok": true, "shopOrderId": "clxxx", "status": "FULFILLING" }
  • ·Nagłówek X-Nouviro-Signature — weryfikacja HMAC (webhook secret z połączenia)
  • ·Obsługiwane eventy: order.created (auto-realizacja), order.updated (ignorowany)
  • ·product.low_stock — ignorowany (dropshipping bez własnego magazynu)

Słowniki

Statusy ofert (ListingStatus)

  • PENDINGOczekuje na publikację w sklepie
  • ACTIVEOferta aktywna
  • DELISTEDZdjęta (brak towaru u dostawcy)
  • ERRORBłąd publikacji

Statusy zamówień (OrderStatus)

  • RECEIVEDZamówienie odebrane
  • FULFILLINGRealizacja u hurtowni w toku
  • FULFILLEDZrealizowane u dostawcy
  • PARTIALCzęściowo zrealizowane
  • FAILEDBłąd realizacji

Statusy jobów (JobStatus)

  • QUEUEDW kolejce — czeka na workera
  • RUNNINGW trakcie — worker wykonuje joba
  • SUCCEEDEDZakończony sukcesem
  • FAILEDZakończony błędem (można retry)
  • CANCELLEDAnulowany

Typy 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 okazje
  • IMPORT_WHOLESALERSAuto-import produktów z hurtowni