Przejdź do treści

Wymagania prawne oferty (GPSR, etykiety, skład)

GET /sale/offers/{offerId}/compliance

tylko alleeallegro:api:sale:offers:readlimit: read

Ocena oferty regułami kategorii (GPSR: producent, informacje o bezpieczeństwie, osoba w UE dla producenta spoza UE; klasa energetyczna; kod EPREL; skład wyrobu tekstylnego). Każdy problem ma regułę z wersją, podstawę prawną i ścieżkę pola.

publishingAllowed mówi, czy ofertę można teraz opublikować lub wznowić (profil sprzedawcy + reguły z blokadą). Reguły blokujące działają od blockingFrom — wcześniej są ostrzeżeniami.

Zgodność: tylko allee — Rozszerzenie allee (Z2).
Uprawnienie: zakres allegro:api:sale:offers:read.
Grupa limitu: read.

Parametry ścieżki

offerId string wymagany

Identyfikator oferty (liczba w tekście).

Odpowiedzi

200 Ocena. · OfferCompliance
offerId string zawsze
status string zawsze
Wartości: COMPLIANT, WARNINGS, BLOCKED
publishingAllowed boolean zawsze

Czy można teraz opublikować / wznowić ofertę.

publishingBlockedBy object · null zawsze
Pola obiektu
code string zawsze
Wartości: SELLER_COMPLIANCE_INCOMPLETE, OFFER_COMPLIANCE_BLOCKED
message string zawsze
issues array<object> zawsze
Pola obiektu
code string zawsze
message string zawsze
severity string zawsze
Wartości: ERROR, WARNING
path string zawsze
rule string zawsze
ruleVersion string zawsze
legalBasis string · null zawsze
blockingFrom string · date-time · null zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
404NOT_FOUNDNie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama).
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
Wymagania prawne oferty (GPSR, etykiety)
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/sale/offers/900000000000021/compliance" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "offerId": "900000000000021",
  "status": "COMPLIANT",
  "publishingAllowed": true,
  "publishingBlockedBy": null,
  "issues": []
}

Profil prawny sprzedawcy

GET /allee/sellers/legal-profile

tylko alleeallegro:api:profile:readlimit: read

Rodzaj sprzedawcy (PRIVATE_PERSON, SOLE_TRADER, COMPANY, UNREGISTERED_ACTIVITY), kraj, język kontaktu, telefon w formacie E.164, imię i nazwisko oraz — dla firm — dane przedsiębiorcy (nazwa, NIP, REGON/KRS/BDO, adres siedziby, kontakt dla kupujących).

sellerTypeConfirmed: false = rodzaj zgadnięty z konta (prywatne/firmowe); potwierdź go przez PUT.

Zgodność: tylko allee — Sellers — getAccount (businessType, primaryContact).
Uprawnienie: zakres allegro:api:profile:read.
Grupa limitu: read.

Odpowiedzi

200 Profil. · SellerLegalProfile
sellerId string zawsze
sellerType string zawsze

Rodzaj sprzedawcy: osoba prywatna, jednoosobowa działalność, spółka, działalność nierejestrowana.

Wartości: PRIVATE_PERSON, SOLE_TRADER, COMPANY, UNREGISTERED_ACTIVITY
sellerTypeConfirmed boolean zawsze

false = rodzaj zgadnięty z konta (prywatne/firmowe) — potwierdź go przez PUT.

sellerTypeLabel string zawsze

Nazwa rodzaju po polsku.

country string zawsze

Kraj zamieszkania lub siedziby (ISO 3166-1 alfa-2).

contactLanguage string zawsze

Język kontaktu (ISO 639-1).

phone string · null zawsze

Telefon E.164.

personName string · null zawsze

Imię i nazwisko.

company object · null zawsze

Tylko SOLE_TRADER i COMPANY.

Pola obiektu
companyName string · null zawsze
legalName string · null zawsze

Pełna nazwa prawna, gdy inna niż companyName.

taxId string · null zawsze

NIP (10 cyfr).

registrationNumbers object zawsze
Pola obiektu
regon string · null zawsze
krs string · null zawsze
bdo string · null zawsze
address object zawsze

Adres siedziby.

Pola obiektu
street string · null zawsze
postalCode string · null zawsze
city string · null zawsze
countryCode string zawsze
contact object zawsze
Pola obiektu
email string zawsze

E-mail dla kupujących (domyślnie e-mail konta).

phone string · null zawsze
publicDataVisible boolean zawsze

Czy kupujący widzą komplet danych przedsiębiorcy (DSA art. 30) na stronie sklepu i oferty.

updatedAt string · date-time · null zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Przykład
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/allee/sellers/legal-profile" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "sellerId": "980000001",
  "sellerType": "SOLE_TRADER",
  "sellerTypeConfirmed": false,
  "sellerTypeLabel": "Jednoosobowa działalność gospodarcza",
  "country": "PL",
  "contactLanguage": "pl",
  "phone": null,
  "personName": null,
  "company": {
    "companyName": null,
    "legalName": null,
    "taxId": null,
    "registrationNumbers": {
      "regon": null,
      "krs": null,
      "bdo": null
    },
    "address": {
      "street": null,
      "postalCode": null,
      "city": null,
      "countryCode": "PL"
    },
    "contact": {
      "email": "[email protected]",
      "phone": null
    },
    "publicDataVisible": false
  },
  "updatedAt": null
}

Zmiana profilu prawnego

PUT /allee/sellers/legal-profile

tylko alleeallegro:api:sale:settings:writelimit: write

Pola, których nie wyślesz, zostają bez zmian (możesz też odesłać to, co zwrócił GET — pola tylko do odczytu pomijamy). Dane firmy sprawdzamy tymi samymi regułami co panel (NIP z cyfrą kontrolną, kod pocztowy, KRS…); błędy mają path pola API, np. address.postalCode.

  • Konto prywatne → SOLE_TRADER/COMPANY: w tym samym żądaniu podaj companyName i taxId (i adres siedziby).
  • Konto firmowe → osoba prywatna: 409 SELLER_TYPE_CHANGE_NOT_ALLOWED (NIP jest na fakturach — zmiana przez pomoc allee).
  • Każda zmiana trafia do historii (GET …/history) z kanałem API i Twoją aplikacją.

Zgodność: tylko allee — — (allee).
Uprawnienie: zakres allegro:api:sale:settings:write.
Grupa limitu: write.

Treść żądania application/vnd.allegro.public.v1+json

sellerType string
Wartości: PRIVATE_PERSON, SOLE_TRADER, COMPANY, UNREGISTERED_ACTIVITY
country string

ISO 3166-1 alfa-2.

contactLanguage string
Wartości: pl, en, de, cs, sk, uk, lt, fr, es, it
phone string · null

Dowolny zapis; zamieniamy na E.164 (9 cyfr bez kierunkowego = Polska).

personName string · null

Imię i nazwisko.

companyName string

Nazwa firmy (SOLE_TRADER, COMPANY).

taxId string

NIP, z „PL” albo bez.

registrationNumbers object
Pola obiektu
regon string · null
krs string · null
bdo string · null
address object

Adres siedziby.

Pola obiektu
street string
postalCode string
city string
countryCode string
contact object

Kontakt dla kupujących.

Pola obiektu
email string · email · null
phone string · null

Odpowiedzi

200 Profil po zmianie. · SellerLegalProfile
sellerId string zawsze
sellerType string zawsze

Rodzaj sprzedawcy: osoba prywatna, jednoosobowa działalność, spółka, działalność nierejestrowana.

Wartości: PRIVATE_PERSON, SOLE_TRADER, COMPANY, UNREGISTERED_ACTIVITY
sellerTypeConfirmed boolean zawsze

false = rodzaj zgadnięty z konta (prywatne/firmowe) — potwierdź go przez PUT.

sellerTypeLabel string zawsze

Nazwa rodzaju po polsku.

country string zawsze

Kraj zamieszkania lub siedziby (ISO 3166-1 alfa-2).

contactLanguage string zawsze

Język kontaktu (ISO 639-1).

phone string · null zawsze

Telefon E.164.

personName string · null zawsze

Imię i nazwisko.

company object · null zawsze

Tylko SOLE_TRADER i COMPANY.

Pola obiektu
companyName string · null zawsze
legalName string · null zawsze

Pełna nazwa prawna, gdy inna niż companyName.

taxId string · null zawsze

NIP (10 cyfr).

registrationNumbers object zawsze
Pola obiektu
regon string · null zawsze
krs string · null zawsze
bdo string · null zawsze
address object zawsze

Adres siedziby.

Pola obiektu
street string · null zawsze
postalCode string · null zawsze
city string · null zawsze
countryCode string zawsze
contact object zawsze
Pola obiektu
email string zawsze

E-mail dla kupujących (domyślnie e-mail konta).

phone string · null zawsze
publicDataVisible boolean zawsze

Czy kupujący widzą komplet danych przedsiębiorcy (DSA art. 30) na stronie sklepu i oferty.

updatedAt string · date-time · null zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
409SELLER_TYPE_CHANGE_NOT_ALLOWEDKonta firmowego nie można samodzielnie zmienić na prywatne (NIP jest na fakturach i w zamówieniach).
413PAYLOAD_TOO_LARGETreść żądania za duża (JSON 5 MB, faktura PDF 3 MB).
415UNSUPPORTED_MEDIA_TYPEZły Content-Type treści.
422JsonMappingExceptionTreść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty).
422MISSING_REQUIREDBrak pola wymaganego w tej sytuacji (np. companyName i taxId przy zmianie konta prywatnego na firmowe).
422VALIDATION_ERRORZła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce.
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Telefon w formacie międzynarodowym i język kontaktu
curl -sS -X PUT "${ALLEE_API_URL:-https://api.allee.pl}/allee/sellers/legal-profile" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -H "Content-Type: application/vnd.allegro.public.v1+json" \
  --data-binary @- \
  -w '\nHTTP %{http_code}\n' <<'JSON'
{
  "phone": "+48 601 234 567",
  "contactLanguage": "pl"
}
JSON
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "sellerId": "980000001",
  "sellerType": "SOLE_TRADER",
  "sellerTypeConfirmed": true,
  "sellerTypeLabel": "Jednoosobowa działalność gospodarcza",
  "country": "PL",
  "contactLanguage": "pl",
  "phone": "+48601234567",
  "personName": null,
  "company": {
    "companyName": null,
    "legalName": null,
    "taxId": null,
    "registrationNumbers": {
      "regon": null,
      "krs": null,
      "bdo": null
    },
    "address": {
      "street": null,
      "postalCode": null,
      "city": null,
      "countryCode": "PL"
    },
    "contact": {
      "email": "[email protected]",
      "phone": null
    },
    "publicDataVisible": false
  },
  "updatedAt": "2026-11-10T11:10:03.492Z"
}

Historia zmian danych prawnych

GET /allee/sellers/legal-profile/history

tylko alleeallegro:api:profile:readlimit: read

Każda zmiana pola osobno (było → jest), najnowsze pierwsze: z panelu (PANEL), API (API, z identyfikatorem aplikacji), od allee (ADMIN — np. blokada) i automatyczne (SYSTEM). Oświadczenia jako declaration.{KOD}.

Zgodność: tylko allee.
Uprawnienie: zakres allegro:api:profile:read.
Grupa limitu: read.

Parametry zapytania

limit integer

Ile zmian.

offset integer

Przesunięcie.

Odpowiedzi

200 Zmiany. · SellerLegalProfileHistory
changes array<object> zawsze
Pola obiektu
field string zawsze

Pole (ścieżka API), np. phone, address.city, declaration.DSA_LEGAL_PRODUCTS, restriction.offers.

before string · null zawsze
after string · null zawsze
channel string zawsze
Wartości: PANEL, API, ADMIN, SYSTEM
applicationId string · null zawsze

Aplikacja, która zmieniła (kanał API).

changedAt string · date-time zawsze
limit integer zawsze
offset integer zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Przykład
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/allee/sellers/legal-profile/history?limit=20" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "changes": [
    {
      "field": "declaration.DSA_LEGAL_PRODUCTS",
      "before": null,
      "after": "2026-11-10",
      "channel": "API",
      "applicationId": "98000",
      "changedAt": "2026-11-10T11:10:03.502Z"
    },
    {
      "field": "phone",
      "before": null,
      "after": "+48601234567",
      "channel": "API",
      "applicationId": "98000",
      "changedAt": "2026-11-10T11:10:03.493Z"
    },
    {
      "field": "contactLanguage",
      "before": null,
      "after": "pl",
      "channel": "API",
      "applicationId": "98000",
      "changedAt": "2026-11-10T11:10:03.493Z"
    },
    {
      "field": "country",
      "before": null,
      "after": "PL",
      "channel": "API",
      "applicationId": "98000",
      "changedAt": "2026-11-10T11:10:03.492Z"
    },
    {
      "field": "sellerType",
      "before": null,
      "after": "SOLE_TRADER",
      "channel": "API",
      "applicationId": "98000",
      "changedAt": "2026-11-10T11:10:03.492Z"
    }
  ],
  "limit": 20,
  "offset": 0
}

Stan zgodności: statusy, braki, blokady

GET /allee/sellers/compliance

tylko alleeallegro:api:profile:readlimit: read

Jedno miejsce, z którego integrator wie, czego brakuje sprzedawcy:

  • status: ACTIVE (brak braków ERROR), INCOMPLETE, RESTRICTED (blokada ofert lub wypłat), SUSPENDED, CLOSED;
  • statuses: niezależne obszary identity, business, tax, productCompliance, payment, dac7 (VERIFIED, PENDING, NOT_STARTED, REJECTED, NOT_REQUIRED, NOT_AVAILABLE);
  • missing[]: braki w kształcie błędów ofert (code, path, message, severity ERROR/WARNING, area) — wymagania zależą od rodzaju sprzedawcy;
  • restrictions: trzy poziomy blokady (oferty / wypłaty / sprzedaż) z uzasadnieniem;
  • enforcement.active: czy braki ERROR już blokują nowe oferty (dziś false).

Zmiana stanu = webhook SELLER_COMPLIANCE_CHANGED.

Zgodność: tylko allee — Account Health (część).
Uprawnienie: zakres allegro:api:profile:read.
Grupa limitu: read.

Odpowiedzi

200 Stan. · SellerCompliance
sellerId string zawsze
status string zawsze

Status główny.

Wartości: ACTIVE, INCOMPLETE, RESTRICTED, SUSPENDED, CLOSED
sellerType string zawsze
Wartości: PRIVATE_PERSON, SOLE_TRADER, COMPANY, UNREGISTERED_ACTIVITY
sellerTypeConfirmed boolean zawsze
statuses object zawsze

Obszary niezależne.

Pola obiektu
identity ComplianceArea zawsze

Status jednego obszaru.

Pola obiektu
status string zawsze

NOT_AVAILABLE = funkcja allee jeszcze nie działa (np. wypłaty, DAC7).

Wartości: VERIFIED, PENDING, NOT_STARTED, REJECTED, NOT_REQUIRED, NOT_AVAILABLE
reason string · null zawsze

Wyjaśnienie dla sprzedawcy.

checkedAt string · date-time · null

Ostatnie sprawdzenie w rejestrach (business).

vatStatus string · null

Status VAT z Białej listy (tax).

activeOffers integer

Aktywne oferty (productCompliance).

business ComplianceArea zawsze

Status jednego obszaru.

Pola obiektu
status string zawsze

NOT_AVAILABLE = funkcja allee jeszcze nie działa (np. wypłaty, DAC7).

Wartości: VERIFIED, PENDING, NOT_STARTED, REJECTED, NOT_REQUIRED, NOT_AVAILABLE
reason string · null zawsze

Wyjaśnienie dla sprzedawcy.

checkedAt string · date-time · null

Ostatnie sprawdzenie w rejestrach (business).

vatStatus string · null

Status VAT z Białej listy (tax).

activeOffers integer

Aktywne oferty (productCompliance).

payment ComplianceArea zawsze

Status jednego obszaru.

Pola obiektu
status string zawsze

NOT_AVAILABLE = funkcja allee jeszcze nie działa (np. wypłaty, DAC7).

Wartości: VERIFIED, PENDING, NOT_STARTED, REJECTED, NOT_REQUIRED, NOT_AVAILABLE
reason string · null zawsze

Wyjaśnienie dla sprzedawcy.

checkedAt string · date-time · null

Ostatnie sprawdzenie w rejestrach (business).

vatStatus string · null

Status VAT z Białej listy (tax).

activeOffers integer

Aktywne oferty (productCompliance).

tax ComplianceArea zawsze

Status jednego obszaru.

Pola obiektu
status string zawsze

NOT_AVAILABLE = funkcja allee jeszcze nie działa (np. wypłaty, DAC7).

Wartości: VERIFIED, PENDING, NOT_STARTED, REJECTED, NOT_REQUIRED, NOT_AVAILABLE
reason string · null zawsze

Wyjaśnienie dla sprzedawcy.

checkedAt string · date-time · null

Ostatnie sprawdzenie w rejestrach (business).

vatStatus string · null

Status VAT z Białej listy (tax).

activeOffers integer

Aktywne oferty (productCompliance).

dac7 ComplianceArea zawsze

Status jednego obszaru.

Pola obiektu
status string zawsze

NOT_AVAILABLE = funkcja allee jeszcze nie działa (np. wypłaty, DAC7).

Wartości: VERIFIED, PENDING, NOT_STARTED, REJECTED, NOT_REQUIRED, NOT_AVAILABLE
reason string · null zawsze

Wyjaśnienie dla sprzedawcy.

checkedAt string · date-time · null

Ostatnie sprawdzenie w rejestrach (business).

vatStatus string · null

Status VAT z Białej listy (tax).

activeOffers integer

Aktywne oferty (productCompliance).

productCompliance ComplianceArea zawsze

Status jednego obszaru.

Pola obiektu
status string zawsze

NOT_AVAILABLE = funkcja allee jeszcze nie działa (np. wypłaty, DAC7).

Wartości: VERIFIED, PENDING, NOT_STARTED, REJECTED, NOT_REQUIRED, NOT_AVAILABLE
reason string · null zawsze

Wyjaśnienie dla sprzedawcy.

checkedAt string · date-time · null

Ostatnie sprawdzenie w rejestrach (business).

vatStatus string · null

Status VAT z Białej listy (tax).

activeOffers integer

Aktywne oferty (productCompliance).

restrictions object zawsze

Trzy poziomy blokady.

Pola obiektu
offers object zawsze

Nowe oferty i wznowienia wstrzymane.

Pola obiektu
blocked boolean zawsze
since string · date-time · null zawsze
payouts object zawsze

Wypłaty wstrzymane.

Pola obiektu
blocked boolean zawsze
since string · date-time · null zawsze
selling object zawsze

Sprzedaż zawieszona.

Pola obiektu
suspended boolean zawsze
since string · date-time · null zawsze
reason string · null zawsze

Uzasadnienie (DSA art. 17).

missing array<object> zawsze

Braki (ERROR przed WARNING).

Pola obiektu
code string zawsze

Np. PHONE_MISSING, TAX_ID_INVALID, DECLARATION_REQUIRED, GPSR_PRODUCER_MISSING.

path string zawsze

Pole albo miejsce do uzupełnienia.

message string zawsze
userMessage string zawsze
severity string zawsze

ERROR = wymagane, WARNING = zalecane.

Wartości: ERROR, WARNING
area string zawsze
Wartości: identity, business, tax, productCompliance, payment, dac7
details object

Np. {code, version} oświadczenia.

summary object zawsze
Pola obiektu
errors integer zawsze
warnings integer zawsze
declarations array<object> zawsze
Pola obiektu
code string zawsze
version string zawsze
title string zawsze
required boolean zawsze

Wymagane dla tego rodzaju sprzedawcy.

accepted boolean zawsze

Zaakceptowana aktualna wersja.

acceptedAt string · date-time · null zawsze
previousVersionAccepted boolean zawsze

Zaakceptowana wcześniejsza wersja (treść się zmieniła).

enforcement object zawsze
Pola obiektu
active boolean zawsze

true = braki ERROR blokują nowe oferty.

description string zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Przykład
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/allee/sellers/compliance" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "sellerId": "980000001",
  "status": "INCOMPLETE",
  "sellerType": "SOLE_TRADER",
  "sellerTypeConfirmed": true,
  "statuses": {
    "identity": {
      "status": "PENDING",
      "reason": "Poziom kontaktowy: e-mail potwierdzony przez Google/Litfas i telefon. Weryfikacja dokumentem ruszy z operatorem płatności."
    },
    "business": {
      "status": "NOT_STARTED",
      "reason": "Sprawdzimy NIP w Białej liście VAT, VIES i REGON (raz na dobę).",
      "checkedAt": null
    },
    "payment": {
      "status": "NOT_AVAILABLE",
      "reason": "Wypłaty przez allee ruszą po podłączeniu operatora płatności (KYC/KYB po jego stronie)."
    },
    "tax": {
      "status": "NOT_STARTED",
      "reason": null,
      "vatStatus": null
    },
    "dac7": {
      "status": "NOT_AVAILABLE",
      "reason": "Liczniki DAC7 (progi 30 transakcji / 2000 EUR) — w przygotowaniu."
    },
    "productCompliance": {
      "status": "NOT_STARTED",
      "reason": null,
      "activeOffers": 20
    }
  },
  "restrictions": {
    "offers": {
      "blocked": false,
      "since": null
    },
    "payouts": {
      "blocked": false,
      "since": null
    },
    "selling": {
      "suspended": false,
      "since": null
    },
    "reason": null
  },
  "missing": [
    {
      "code": "COMPANY_NAME_MISSING",
      "path": "companyName",
      "message": "Podaj nazwę firmy (tak jak w CEIDG albo KRS).",
      "userMessage": "Podaj nazwę firmy (tak jak w CEIDG albo KRS).",
      "severity": "ERROR",
      "area": "business"
    },
    {
      "code": "BUSINESS_ADDRESS_MISSING",
      "path": "address",
      "message": "Podaj adres siedziby firmy (ulica, kod, miejscowość).",
      "userMessage": "Podaj adres siedziby firmy (ulica, kod, miejscowość).",
      "severity": "ERROR",
      "area": "business"
    },
    {
      "code": "PERSON_NAME_MISSING",
      "path": "personName",
      "message": "Podaj imię i nazwisko właściciela działalności.",
      "userMessage": "Podaj imię i nazwisko właściciela działalności.",
      "severity": "ERROR",
      "area": "identity"
    },
    {
      "code": "DECLARATION_REQUIRED",
      "path": "declarations.AUTHENTIC_GOODS",
      "message": "Złóż oświadczenie: „Sprzedaję oryginalne towary z legalnego źródła”.",
      "userMessage": "Złóż oświadczenie: „Sprzedaję oryginalne towary z legalnego źródła”.",
      "severity": "ERROR",
      "area": "identity",
      "details": {
        "code": "AUTHENTIC_GOODS",
        "version": "2026-11-10"
      }
    },
    {
      "code": "DECLARATION_REQUIRED",
      "path": "declarations.DATA_TRUE",
      "message": "Złóż oświadczenie: „Moje dane są prawdziwe i aktualne”.",
      "userMessage": "Złóż oświadczenie: „Moje dane są prawdziwe i aktualne”.",
      "severity": "ERROR",
      "area": "identity",
      "details": {
        "code": "DATA_TRUE",
        "version": "2026-11-10"
      }
    },
    {
      "code": "DECLARATION_REQUIRED",
      "path": "declarations.IMAGE_RIGHTS",
      "message": "Złóż oświadczenie: „Mam prawa do zdjęć i opisów”.",
      "userMessage": "Złóż oświadczenie: „Mam prawa do zdjęć i opisów”.",
      "severity": "ERROR",
      "area": "identity",
      "details": {
        "code": "IMAGE_RIGHTS",
        "version": "2026-11-10"
      }
    },
    {
      "code": "RETURN_ADDRESS_MISSING",
      "path": "returnAddress",
      "message": "Ustaw adres zwrotów (panel → Ustawienia → Dane firmy).",
      "userMessage": "Ustaw adres zwrotów (panel → Ustawienia → Dane firmy).",
      "severity": "ERROR",
      "area": "productCompliance"
    },
    {
      "code": "TAX_ID_INVALID",
      "path": "taxId",
      "message": "Podaj poprawny NIP (10 cyfr).",
      "userMessage": "Podaj poprawny NIP (10 cyfr).",
      "severity": "ERROR",
      "area": "tax"
    },
    {
      "code": "REGON_MISSING",
      "path": "registrationNumbers.regon",
      "message": "Podaj REGON firmy (9 cyfr) — uzupełnisz go jednym kliknięciem z rejestru w panelu.",
      "userMessage": "Podaj REGON firmy (9 cyfr) — uzupełnisz go jednym kliknięciem z rejestru w panelu.",
      "severity": "WARNING",
      "area": "business"
    }
  ],
  "summary": {
    "errors": 8,
    "warnings": 1
  },
  "declarations": [
    {
      "code": "AUTHENTIC_GOODS",
      "version": "2026-11-10",
      "title": "Sprzedaję oryginalne towary z legalnego źródła",
      "required": true,
      "accepted": false,
      "acceptedAt": null,
      "previousVersionAccepted": false
    },
    {
      "code": "DATA_TRUE",
      "version": "2026-11-10",
      "title": "Moje dane są prawdziwe i aktualne",
      "required": true,
      "accepted": false,
      "acceptedAt": null,
      "previousVersionAccepted": false
    },
    {
      "code": "DSA_LEGAL_PRODUCTS",
      "version": "2026-11-10",
      "title": "Oferuję wyłącznie produkty i usługi zgodne z prawem",
      "required": true,
      "accepted": true,
      "acceptedAt": "2026-11-10T11:10:03.000Z",
      "previousVersionAccepted": false
    },
    {
      "code": "IMAGE_RIGHTS",
      "version": "2026-11-10",
      "title": "Mam prawa do zdjęć i opisów",
      "required": true,
      "accepted": false,
      "acceptedAt": null,
      "previousVersionAccepted": false
    },
    {
      "code": "PRIVATE_NOT_TRADER",
      "version": "2026-11-10",
      "title": "Sprzedaję jako osoba prywatna, nie w ramach działalności",
      "required": false,
      "accepted": false,
      "acceptedAt": null,
      "previousVersionAccepted": false
    },
    {
      "code": "UNREGISTERED_LIMIT",
      "version": "2026-11-10",
      "title": "Działalność nierejestrowana mieści się w limicie",
      "required": false,
      "accepted": false,
      "acceptedAt": null,
      "previousVersionAccepted": false
    }
  ],
  "enforcement": {
    "active": false,
    "description": "Braki są informacją — dz
… (skrócono — pełna odpowiedź ma 5 KB)

Oświadczenia sprzedawcy (treści z wersjami)

GET /allee/declarations

tylko alleeallegro:api:profile:readlimit: read

Aktualne treści oświadczeń (np. DSA „tylko produkty zgodne z prawem”), dla kogo są wymagane i czy sprzedawca zaakceptował aktualną wersję. Nowa wersja treści = trzeba ją zaakceptować ponownie (w compliance: DECLARATION_UPDATE_REQUIRED).

Zgodność: tylko allee.
Uprawnienie: zakres allegro:api:profile:read.
Grupa limitu: read.

Odpowiedzi

200 Oświadczenia. · DeclarationList
declarations array<Declaration> zawsze
Pola obiektu
code string zawsze
version string zawsze
title string zawsze
text string zawsze

Pełna treść do pokazania sprzedawcy.

legalBasis string · null zawsze
requiredFor array<string> zawsze
Wartości: PRIVATE_PERSON, SOLE_TRADER, COMPANY, UNREGISTERED_ACTIVITY
effectiveFrom string · date-time · null zawsze
accepted object zawsze
Pola obiektu
current boolean zawsze

Zaakceptowana aktualna wersja.

acceptedAt string · date-time · null zawsze
acceptedVersions array<string> zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Przykład
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/allee/declarations" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "declarations": [
    {
      "code": "AUTHENTIC_GOODS",
      "version": "2026-11-10",
      "title": "Sprzedaję oryginalne towary z legalnego źródła",
      "text": "Oświadczam, że sprzedawane przeze mnie towary są oryginalne, pochodzą z legalnego źródła i nie naruszają praw własności intelektualnej (w tym znaków towarowych).",
      "legalBasis": "prawo własności przemysłowej",
      "requiredFor": [
        "SOLE_TRADER",
        "COMPANY",
        "UNREGISTERED_ACTIVITY"
      ],
      "effectiveFrom": "2026-11-09T23:00:00.000Z",
      "accepted": {
        "current": false,
        "acceptedAt": null,
        "acceptedVersions": []
      }
    },
    {
      "code": "DATA_TRUE",
      "version": "2026-11-10",
      "title": "Moje dane są prawdziwe i aktualne",
      "text": "Oświadczam, że dane podane w allee (dane identyfikacyjne, adres, dane kontaktowe i rejestrowe) są prawdziwe, kompletne i aktualne, a każdą zmianę wprowadzę bez zwłoki.",
      "legalBasis": "DSA art. 30 ust. 1 i 4",
      "requiredFor": [
        "PRIVATE_PERSON",
        "SOLE_TRADER",
        "COMPANY",
        "UNREGISTERED_ACTIVITY"
      ],
      "effectiveFrom": "2026-11-09T23:00:00.000Z",
      "accepted": {
        "current": false,
        "acceptedAt": null,
        "acceptedVersions": []
      }
    },
    {
      "code": "DSA_LEGAL_PRODUCTS",
      "version": "2026-11-10",
      "title": "Oferuję wyłącznie produkty i usługi zgodne z prawem",
      "text": "Oświadczam, że oferuję w allee wyłącznie produkty i usługi zgodne z mającymi zastosowanie przepisami prawa Unii Europejskiej i prawa polskiego, w tym z wymaganiami dotyczącymi bezpieczeństwa produktów i oznakowania.",
      "legalBasis": "DSA art. 30 ust. 1 lit. e",
      "requiredFor": [
        "PRIVATE_PERSON",
        "SOLE_TRADER",
        "COMPANY",
        "UNREGISTERED_ACTIVITY"
      ],
      "effectiveFrom": "2026-11-09T23:00:00.000Z",
      "accepted": {
        "current": false,
        "acceptedAt": null,
        "acceptedVersions": []
      }
    },
    {
      "code": "IMAGE_RIGHTS",
      "version": "2026-11-10",
      "title": "Mam prawa do zdjęć i opisów",
      "text": "Oświadczam, że mam prawo do używania zdjęć, opisów i innych materiałów, które publikuję w ofertach, i że nie naruszają one praw osób trzecich.",
      "legalBasis": "ustawa o prawie autorskim i prawach pokrewnych",
      "requiredFor": [
        "SOLE_TRADER",
        "COMPANY",
        "UNREGISTERED_ACTIVITY"
      ],
      "effectiveFrom": "2026-11-09T23:00:00.000Z",
      "accepted": {
        "current": false,
        "acceptedAt": null,
        "acceptedVersions": []
      }
    },
    {
      "code": "PRIVATE_NOT_TRADER",
      "version": "2026-11-10",
      "title": "Sprzedaję jako osoba prywatna, nie w ramach działalności",
      "text": "Oświadczam, że sprzedaję w allee rzeczy z własnego gospodarstwa domowego, okazjonalnie i nie w celach zarobkowych w ramach działalności gospodarczej. Rozumiem, że kupujący nie korzystają wobec mnie z praw konsumenta przysługujących przy zakupie od przedsiębiorcy. Jeśli zacznę sprzedawać zarobkowo, zmienię rodzaj konta.",
      "legalBasis": "DSA art. 30 i 31; ustawa o prawach konsumenta",
      "requiredFor": [
        "PRIVATE_PERSON"
      ],
      "effectiveFrom": "2026-11-09T23:00:00.000Z",
      "accepted": {
        "current": false,
        "acceptedAt": null,
        "acceptedVersions": []
      }
    },
    {
      "code": "UNREGISTERED_LIMIT",
      "version": "2026-11-10",
      "title": "Działalność nierejestrowana mieści się w limicie",
      "text": "Oświadczam, że prowadzę działalność nierejestrowaną, której przychód należny nie przekracza w żadnym kwartale limitu z art. 5 ustawy Prawo przedsiębiorców. Po przekroczeniu limitu zarejestruję działalność i zmienię rodzaj konta w allee.",
      "legalBasis": "Prawo przedsiębiorców art. 5",
      "requiredFor": [
        "UNREGISTERED_ACTIVITY"
      ],
      "effectiveFrom": "2026-11-09T23:00:00.000Z",
      "accepted": {
        "current": false,
        "acceptedAt": null,
        "acceptedVersions": []
      }
    }
  ]
}

Złożenie oświadczenia

POST /allee/sellers/declarations

tylko alleeallegro:api:sale:settings:writelimit: write

Akceptacja aktualnej wersji. Zapisujemy wersję, czas, kanał API, aplikację i adres IP. Pokaż sprzedawcy treść z GET /allee/declarations, zanim to wyślesz — oświadczenie składa sprzedawca, nie integrator.

Powtórna akceptacja tej samej wersji → 200 (bez zmian). Starsza wersja → 409 DECLARATION_VERSION_OUTDATED z details.currentVersion.

Zgodność: tylko allee.
Uprawnienie: zakres allegro:api:sale:settings:write.
Grupa limitu: write.

Nagłówki

Idempotency-Key string

Ochrona przed podwójnym wykonaniem (jak Stripe/Amazon): powtórzony POST z tym samym kluczem i tą samą treścią w ciągu 24 h zwraca zapisaną odpowiedź z nagłówkiem Idempotent-Replayed: true i niczego nie wykonuje drugi raz. Inna treść → 422 IDEMPOTENCY_KEY_REUSED; żądanie jeszcze trwa → 409 IDEMPOTENCY_KEY_IN_USE. 1–100 znaków ASCII (np. UUID).

Treść żądania application/vnd.allegro.public.v1+json

code string wymagane

Kod z GET /allee/declarations.

version string

Wersja, którą sprzedawca przeczytał (zalecane — inna niż aktualna → 409).

Odpowiedzi

200 Już złożone wcześniej. · DeclarationAcceptResponse
code string zawsze
version string zawsze
accepted boolean zawsze
compliance object zawsze
Pola obiektu
status string zawsze
Wartości: ACTIVE, INCOMPLETE, RESTRICTED, SUSPENDED, CLOSED
201 Złożono. · DeclarationAcceptResponse
code string zawsze
version string zawsze
accepted boolean zawsze
compliance object zawsze
Pola obiektu
status string zawsze
Wartości: ACTIVE, INCOMPLETE, RESTRICTED, SUSPENDED, CLOSED

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
409DECLARATION_VERSION_OUTDATEDTreść oświadczenia zmieniła się — wersja z żądania nie jest aktualna.
413PAYLOAD_TOO_LARGETreść żądania za duża (JSON 5 MB, faktura PDF 3 MB).
415UNSUPPORTED_MEDIA_TYPEZły Content-Type treści.
422JsonMappingExceptionTreść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty).
422VALIDATION_ERRORZła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce.
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Oświadczenie DSA: tylko produkty zgodne z prawem
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/allee/sellers/declarations" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -H "Content-Type: application/vnd.allegro.public.v1+json" \
  --data-binary @- \
  -w '\nHTTP %{http_code}\n' <<'JSON'
{
  "code": "DSA_LEGAL_PRODUCTS",
  "version": "2026-11-10"
}
JSON
Odpowiedź (środowisko testowe)
HTTP 201 application/vnd.allegro.public.v1+json
{
  "code": "DSA_LEGAL_PRODUCTS",
  "version": "2026-11-10",
  "accepted": true,
  "compliance": {
    "status": "INCOMPLETE"
  }
}

Wymagania prawne w kategorii

GET /allee/compliance/rules

tylko alleelimit: read

Co trzeba podać w ofercie tej kategorii, żeby była zgodna z prawem: reguły z kodem i wersją, wymaganie, ścieżka pola (productSet[0].responsibleProducer, parameters.{id}…), skutek (WARN / BLOCK), od kiedy blokuje, podstawa prawna. Reguły dotyczą poddrzewa kategorii (np. GPSR nie obejmuje żywności, antyków, usług), rodzaju sprzedawcy i stanu produktu; reguły parametrowe — tylko kategorii, które mają dany parametr.

Pytaj raz na kategorię (wynik możesz trzymać w pamięci podręcznej do zmiany wersji reguł).

Zgodność: tylko allee — Product Type Definitions (wymagania prawne).
Uprawnienie: dowolny ważny token lub klucz (działa też token aplikacji client_credentials).
Grupa limitu: read.

Parametry zapytania

category.id string wymagany

Kategoria.

sellerType string

Tylko reguły dla tego rodzaju sprzedawcy.

Wartości: PRIVATE_PERSON, SOLE_TRADER, COMPANY, UNREGISTERED_ACTIVITY

Odpowiedzi

200 Reguły. · ComplianceRuleList
category object zawsze
Pola obiektu
id string zawsze

Kategoria allee.

sellerType string · null zawsze
rules array<ComplianceRule> zawsze
Pola obiektu
code string zawsze
version string zawsze
name string zawsze
issueCode string zawsze

Kod problemu w issues[] oferty, np. ENERGY_CLASS_MISSING.

requirement string zawsze

Co podać.

legalBasis string · null zawsze
path string zawsze

Pole oferty, np. parameters.{id} albo productSet[0].responsibleProducer.

sellerTypes array<string> zawsze
Wartości: PRIVATE_PERSON, SOLE_TRADER, COMPANY, UNREGISTERED_ACTIVITY
condition string zawsze

Stan produktu, którego dotyczy.

Wartości: NEW, ANY
effect string zawsze
Wartości: WARN, BLOCK
severity string zawsze

Waga dziś (BLOCK przed blockingFrom = WARNING).

Wartości: ERROR, WARNING
blockingFrom string · date-time · null zawsze
effectiveFrom string · date-time · null zawsze
count integer zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
404CATEGORY_NOT_FOUNDNie ma takiej kategorii.
422VALIDATION_ERRORZła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce.
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Co trzeba podać w tej kategorii
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/allee/compliance/rules?category.id=20585" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "category": {
    "id": "20585"
  },
  "sellerType": null,
  "rules": [],
  "count": 0
}

Zgłoszenia nielegalnych treści (DSA)

GET /allee/notices

tylko alleeallegro:api:sale:offers:readlimit: read

Zgłoszenia dotyczące ofert i sklepu sprzedawcy, najnowsze pierwsze: kategoria, uzasadnienie zgłaszającego, stan (NOWE, W_TOKU, ZASADNE, NIEZASADNE), stanowisko sprzedawcy i numer decyzji. Bez danych zgłaszającego.

Nowe zgłoszenie = webhook OFFER_NOTICE_RECEIVED.

Zgodność: tylko allee — — (DSA art. 16).
Uprawnienie: zakres allegro:api:sale:offers:read.
Grupa limitu: read.

Parametry zapytania

limit integer

Ile pozycji.

offset integer

Przesunięcie.

Odpowiedzi

200 Zgłoszenia. · NoticeList
notices array<Notice> zawsze
Pola obiektu
id string zawsze

Numer zgłoszenia.

offerId string · null zawsze
subject string zawsze
Wartości: OFERTA, SKLEP, INNE
url string zawsze
category string zawsze
Wartości: NIELEGALNY_PRODUKT, NIEBEZPIECZNY_PRODUKT, PODROBKA, WLASNOSC_INTELEKTUALNA, OSZUSTWO, TRESC_NIEZGODNA, DANE_OSOBOWE, OCHRONA_MALOLETNICH, OCHRONA_KONSUMENTA, INNE
categoryLabel string zawsze
explanation string zawsze

Uzasadnienie zgłaszającego.

status string zawsze
Wartości: NOWE, W_TOKU, ZASADNE, NIEZASADNE, WYCOFANE
trustedFlagger boolean zawsze

Zaufany podmiot sygnalizujący (art. 22).

createdAt string · date-time zawsze
sellerResponse object · null zawsze
Pola obiektu
text string zawsze
respondedAt string · date-time · null zawsze
channel string · null zawsze
Wartości: PANEL, API, null
decisionId string · null zawsze
limit integer zawsze
offset integer zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Zgłoszenia nielegalnych treści dotyczące moich ofert
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/allee/notices" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "notices": [
    {
      "id": "DSA-2026-000001",
      "offerId": "900000000000021",
      "subject": "OFERTA",
      "url": "https://allee.pl/oferta/-900000000000021",
      "category": "PODROBKA",
      "categoryLabel": "Podróbka (fałszywy znak towarowy)",
      "explanation": "Logo na zdjęciach wygląda na podrobione, a cena jest dużo niższa niż u autoryzowanych sprzedawców.",
      "status": "NOWE",
      "trustedFlagger": false,
      "createdAt": "2026-11-10T11:10:03.000Z",
      "sellerResponse": null,
      "decisionId": null
    }
  ],
  "limit": 50,
  "offset": 0
}

Stanowisko sprzedawcy do zgłoszenia

POST /allee/notices/{id}/response

tylko alleeallegro:api:sale:offers:writelimit: write

Przed decyzją allee sprzedawca może wyjaśnić, dlaczego treść jest zgodna z prawem (np. faktura od dystrybutora, licencja). Tylko zgłoszenia w stanie NOWE albo W_TOKU; po decyzji → 409 (odwołaj się od decyzji).

Zgodność: tylko allee.
Uprawnienie: zakres allegro:api:sale:offers:write.
Grupa limitu: write.

Parametry ścieżki

id string wymagany

Numer zgłoszenia.

Nagłówki

Idempotency-Key string

Ochrona przed podwójnym wykonaniem (jak Stripe/Amazon): powtórzony POST z tym samym kluczem i tą samą treścią w ciągu 24 h zwraca zapisaną odpowiedź z nagłówkiem Idempotent-Replayed: true i niczego nie wykonuje drugi raz. Inna treść → 422 IDEMPOTENCY_KEY_REUSED; żądanie jeszcze trwa → 409 IDEMPOTENCY_KEY_IN_USE. 1–100 znaków ASCII (np. UUID).

Treść żądania application/vnd.allegro.public.v1+json

text string wymagane

Treść (stanowisko albo uzasadnienie odwołania).

Odpowiedzi

200 Zgłoszenie ze stanowiskiem. · Notice
id string zawsze

Numer zgłoszenia.

offerId string · null zawsze
subject string zawsze
Wartości: OFERTA, SKLEP, INNE
url string zawsze
category string zawsze
Wartości: NIELEGALNY_PRODUKT, NIEBEZPIECZNY_PRODUKT, PODROBKA, WLASNOSC_INTELEKTUALNA, OSZUSTWO, TRESC_NIEZGODNA, DANE_OSOBOWE, OCHRONA_MALOLETNICH, OCHRONA_KONSUMENTA, INNE
categoryLabel string zawsze
explanation string zawsze

Uzasadnienie zgłaszającego.

status string zawsze
Wartości: NOWE, W_TOKU, ZASADNE, NIEZASADNE, WYCOFANE
trustedFlagger boolean zawsze

Zaufany podmiot sygnalizujący (art. 22).

createdAt string · date-time zawsze
sellerResponse object · null zawsze
Pola obiektu
text string zawsze
respondedAt string · date-time · null zawsze
channel string · null zawsze
Wartości: PANEL, API, null
decisionId string · null zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
404NOT_FOUNDNie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama).
409CONFLICTOperacja niemożliwa w obecnym stanie (np. zgłoszenie już rozpatrzone, odwołanie już złożone).
413PAYLOAD_TOO_LARGETreść żądania za duża (JSON 5 MB, faktura PDF 3 MB).
415UNSUPPORTED_MEDIA_TYPEZły Content-Type treści.
422JsonMappingExceptionTreść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty).
422VALIDATION_ERRORZła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce.
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Stanowisko sprzedawcy
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/allee/notices/DSA-2026-000001/response" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -H "Content-Type: application/vnd.allegro.public.v1+json" \
  --data-binary @- \
  -w '\nHTTP %{http_code}\n' <<'JSON'
{
  "text": "Produkt pochodzi od autoryzowanego dystrybutora — faktura FV/2026/11/123."
}
JSON
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "id": "DSA-2026-000001",
  "offerId": "900000000000021",
  "subject": "OFERTA",
  "url": "https://allee.pl/oferta/-900000000000021",
  "category": "PODROBKA",
  "categoryLabel": "Podróbka (fałszywy znak towarowy)",
  "explanation": "Logo na zdjęciach wygląda na podrobione, a cena jest dużo niższa niż u autoryzowanych sprzedawców.",
  "status": "W_TOKU",
  "trustedFlagger": false,
  "createdAt": "2026-11-10T11:10:03.000Z",
  "sellerResponse": {
    "text": "Produkt pochodzi od autoryzowanego dystrybutora — faktura FV/2026/11/123.",
    "respondedAt": "2026-11-10T11:10:03.000Z",
    "channel": "API"
  },
  "decisionId": null
}

Decyzje allee z uzasadnieniem (DSA)

GET /allee/decisions

tylko alleeallegro:api:sale:offers:readlimit: read

Decyzje ograniczające (zakończenie oferty, ostrzeżenie, blokady, zawieszenie) z uzasadnieniem: środek, podstawa (ILLEGAL_CONTENT — przepis prawa albo TERMS_OF_SERVICE), fakty, czy użyto automatu, środki odwoławcze i termin odwołania.

Nowa decyzja = webhook OFFER_RESTRICTED.

Zgodność: tylko allee — — (DSA art. 17).
Uprawnienie: zakres allegro:api:sale:offers:read.
Grupa limitu: read.

Parametry zapytania

limit integer

Ile pozycji.

offset integer

Przesunięcie.

Odpowiedzi

200 Decyzje. · DecisionList
decisions array<Decision> zawsze
Pola obiektu
id string zawsze
noticeId string · null zawsze
offerId string · null zawsze
measure string zawsze
Wartości: BRAK_DZIALANIA, OSTRZEZENIE, OFERTA_ZAKONCZONA, BLOKADA_OFERT, BLOKADA_WYPLAT, ZAWIESZENIE
measureLabel string zawsze
legalGround string zawsze
Wartości: ILLEGAL_CONTENT, TERMS_OF_SERVICE
groundReference string zawsze

Przepis albo punkt regulaminu.

facts string zawsze

Fakty i okoliczności.

automatedMeans boolean zawsze
territorialScope string zawsze
createdAt string · date-time zawsze
redress object zawsze

Środki odwoławcze.

Pola obiektu
internalComplaint string zawsze
outOfCourt string zawsze
court string zawsze
appealDeadline string · date-time zawsze
appeal object · null zawsze
Pola obiektu
status string zawsze
Wartości: SUBMITTED, ACCEPTED, REJECTED
text string · null zawsze
submittedAt string · date-time · null zawsze
resolution string · null zawsze
resolvedAt string · date-time · null zawsze
limit integer zawsze
offset integer zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Przykład
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/allee/decisions" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "decisions": [
    {
      "id": "DEC-2026-000001",
      "noticeId": "DSA-2026-000001",
      "offerId": "900000000000021",
      "measure": "OSTRZEZENIE",
      "measureLabel": "Ostrzeżenie dla sprzedawcy",
      "legalGround": "TERMS_OF_SERVICE",
      "groundReference": "§ 7 regulaminu allee (oryginalność towarów)",
      "facts": "Zdjęcia sugerują podrobiony znak; sprzedawca przedstawił fakturę — ostrzeżenie zamiast zakończenia oferty.",
      "automatedMeans": false,
      "territorialScope": "allee.pl (cała UE)",
      "createdAt": "2026-11-10T11:10:03.000Z",
      "redress": {
        "internalComplaint": "Odwołanie w panelu (Ustawienia › Zgodność) albo POST /allee/decisions/{id}/appeal do 12.05.2027.",
        "outOfCourt": "Certyfikowany organ pozasądowego rozstrzygania sporów (art. 21 DSA).",
        "court": "Sąd powszechny."
      },
      "appealDeadline": "2027-05-12T11:10:03.000Z",
      "appeal": null
    }
  ],
  "limit": 50,
  "offset": 0
}

Decyzja (uzasadnienie)

GET /allee/decisions/{id}

tylko alleeallegro:api:sale:offers:readlimit: read

Jedna decyzja ze stanem odwołania.

Zgodność: tylko allee.
Uprawnienie: zakres allegro:api:sale:offers:read.
Grupa limitu: read.

Parametry ścieżki

id string wymagany

Numer decyzji.

Odpowiedzi

200 Decyzja. · Decision
id string zawsze
noticeId string · null zawsze
offerId string · null zawsze
measure string zawsze
Wartości: BRAK_DZIALANIA, OSTRZEZENIE, OFERTA_ZAKONCZONA, BLOKADA_OFERT, BLOKADA_WYPLAT, ZAWIESZENIE
measureLabel string zawsze
legalGround string zawsze
Wartości: ILLEGAL_CONTENT, TERMS_OF_SERVICE
groundReference string zawsze

Przepis albo punkt regulaminu.

facts string zawsze

Fakty i okoliczności.

automatedMeans boolean zawsze
territorialScope string zawsze
createdAt string · date-time zawsze
redress object zawsze

Środki odwoławcze.

Pola obiektu
internalComplaint string zawsze
outOfCourt string zawsze
court string zawsze
appealDeadline string · date-time zawsze
appeal object · null zawsze
Pola obiektu
status string zawsze
Wartości: SUBMITTED, ACCEPTED, REJECTED
text string · null zawsze
submittedAt string · date-time · null zawsze
resolution string · null zawsze
resolvedAt string · date-time · null zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
404NOT_FOUNDNie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama).
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Przykład
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/allee/decisions/DEC-2026-000001" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -w '\nHTTP %{http_code}\n'
Odpowiedź (środowisko testowe)
HTTP 200 application/vnd.allegro.public.v1+json
{
  "id": "DEC-2026-000001",
  "noticeId": "DSA-2026-000001",
  "offerId": "900000000000021",
  "measure": "OSTRZEZENIE",
  "measureLabel": "Ostrzeżenie dla sprzedawcy",
  "legalGround": "TERMS_OF_SERVICE",
  "groundReference": "§ 7 regulaminu allee (oryginalność towarów)",
  "facts": "Zdjęcia sugerują podrobiony znak; sprzedawca przedstawił fakturę — ostrzeżenie zamiast zakończenia oferty.",
  "automatedMeans": false,
  "territorialScope": "allee.pl (cała UE)",
  "createdAt": "2026-11-10T11:10:03.000Z",
  "redress": {
    "internalComplaint": "Odwołanie w panelu (Ustawienia › Zgodność) albo POST /allee/decisions/{id}/appeal do 12.05.2027.",
    "outOfCourt": "Certyfikowany organ pozasądowego rozstrzygania sporów (art. 21 DSA).",
    "court": "Sąd powszechny."
  },
  "appealDeadline": "2027-05-12T11:10:03.000Z",
  "appeal": null
}

Odwołanie od decyzji

POST /allee/decisions/{id}/appeal

tylko alleeallegro:api:sale:offers:writelimit: write

Odwołanie w ciągu 6 miesięcy; rozpatruje człowiek. Uchylenie cofa środek (wznowienie oferty, zdjęcie blokady). Jedno odwołanie na decyzję — drugie → 409.

Zgodność: tylko allee — — (DSA art. 20).
Uprawnienie: zakres allegro:api:sale:offers:write.
Grupa limitu: write.

Parametry ścieżki

id string wymagany

Numer decyzji.

Nagłówki

Idempotency-Key string

Ochrona przed podwójnym wykonaniem (jak Stripe/Amazon): powtórzony POST z tym samym kluczem i tą samą treścią w ciągu 24 h zwraca zapisaną odpowiedź z nagłówkiem Idempotent-Replayed: true i niczego nie wykonuje drugi raz. Inna treść → 422 IDEMPOTENCY_KEY_REUSED; żądanie jeszcze trwa → 409 IDEMPOTENCY_KEY_IN_USE. 1–100 znaków ASCII (np. UUID).

Treść żądania application/vnd.allegro.public.v1+json

text string wymagane

Treść (stanowisko albo uzasadnienie odwołania).

Odpowiedzi

201 Odwołanie złożone. · Decision
id string zawsze
noticeId string · null zawsze
offerId string · null zawsze
measure string zawsze
Wartości: BRAK_DZIALANIA, OSTRZEZENIE, OFERTA_ZAKONCZONA, BLOKADA_OFERT, BLOKADA_WYPLAT, ZAWIESZENIE
measureLabel string zawsze
legalGround string zawsze
Wartości: ILLEGAL_CONTENT, TERMS_OF_SERVICE
groundReference string zawsze

Przepis albo punkt regulaminu.

facts string zawsze

Fakty i okoliczności.

automatedMeans boolean zawsze
territorialScope string zawsze
createdAt string · date-time zawsze
redress object zawsze

Środki odwoławcze.

Pola obiektu
internalComplaint string zawsze
outOfCourt string zawsze
court string zawsze
appealDeadline string · date-time zawsze
appeal object · null zawsze
Pola obiektu
status string zawsze
Wartości: SUBMITTED, ACCEPTED, REJECTED
text string · null zawsze
submittedAt string · date-time · null zawsze
resolution string · null zawsze
resolvedAt string · date-time · null zawsze

Błędy

HTTPKodZnaczenie
401invalid_tokenBrak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate).
403ACCOUNT_INACTIVEKonto sprzedawcy jest nieaktywne.
403AccessDeniedBrak zakresu albo zasób innego sprzedawcy.
403KEY_QUARANTINEDKwarantanna: działa tylko odczyt (wykryto nietypowe użycie).
403KEY_SUSPENDEDKlucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę).
404NOT_FOUNDNie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama).
409CONFLICTOperacja niemożliwa w obecnym stanie (np. zgłoszenie już rozpatrzone, odwołanie już złożone).
413PAYLOAD_TOO_LARGETreść żądania za duża (JSON 5 MB, faktura PDF 3 MB).
415UNSUPPORTED_MEDIA_TYPEZły Content-Type treści.
422JsonMappingExceptionTreść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty).
422VALIDATION_ERRORZła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce.
429TOO_MANY_REQUESTSPrzekroczony limit (minutowy, grupy operacji albo IP).
500INTERNAL_ERRORBłąd serwera allee.
503NOT_DEPLOYEDFunkcja jeszcze nie uruchomiona (np. sandbox, wsady).
Odwołanie od decyzji
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/allee/decisions/DEC-2026-000001/appeal" \
  -H "Authorization: Bearer $ALLEE_API_KEY" \
  -H "Accept: application/vnd.allegro.public.v1+json" \
  -H "Content-Type: application/vnd.allegro.public.v1+json" \
  --data-binary @- \
  -w '\nHTTP %{http_code}\n' <<'JSON'
{
  "text": "Faktura potwierdza legalne pochodzenie towaru — proszę o uchylenie ostrzeżenia."
}
JSON
Odpowiedź (środowisko testowe)
HTTP 201 application/vnd.allegro.public.v1+json
{
  "id": "DEC-2026-000001",
  "noticeId": "DSA-2026-000001",
  "offerId": "900000000000021",
  "measure": "OSTRZEZENIE",
  "measureLabel": "Ostrzeżenie dla sprzedawcy",
  "legalGround": "TERMS_OF_SERVICE",
  "groundReference": "§ 7 regulaminu allee (oryginalność towarów)",
  "facts": "Zdjęcia sugerują podrobiony znak; sprzedawca przedstawił fakturę — ostrzeżenie zamiast zakończenia oferty.",
  "automatedMeans": false,
  "territorialScope": "allee.pl (cała UE)",
  "createdAt": "2026-11-10T11:10:03.000Z",
  "redress": {
    "internalComplaint": "Odwołanie w panelu (Ustawienia › Zgodność) albo POST /allee/decisions/{id}/appeal do 12.05.2027.",
    "outOfCourt": "Certyfikowany organ pozasądowego rozstrzygania sporów (art. 21 DSA).",
    "court": "Sąd powszechny."
  },
  "appealDeadline": "2027-05-12T11:10:03.000Z",
  "appeal": {
    "status": "SUBMITTED",
    "text": "Faktura potwierdza legalne pochodzenie towaru — proszę o uchylenie ostrzeżenia.",
    "submittedAt": "2026-11-10T11:10:03.000Z",
    "resolution": null,
    "resolvedAt": null
  }
}