Dyskusje i reklamacje
Reklamacje i dyskusje (zasób BETA Allegro).
Reklamacje i dyskusje
GET /sale/issues
Allegro + rozszerzeniaallegro:api:disputes:readlimit: readBETA (Allegro)
Sprawy posprzedażowe. allee.responseDeadline = termin ustawowy (14 dni, art. 7a ustawy o prawach konsumenta) — brak odpowiedzi w terminie oznacza uznanie reklamacji.
Kupujący: id i login (bez danych kontaktowych).
Zgodność: zgodna z Allegro REST API, z rozszerzeniami allee (pola allee.*, alleeId) — GET /sale/issues (BETA).
Uprawnienie: zakres allegro:api:disputes:read.
Grupa limitu: read.
Parametry zapytania
offset integerIle pozycji pominąć.
limit integerIle pozycji zwrócić (1–100, domyślnie 100).
type stringRodzaj.
CLAIM, DISPUTEstatus stringStatus.
CLAIM_SUBMITTED, CLAIM_ACCEPTED, CLAIM_REJECTED, DISPUTE_ONGOING, DISPUTE_CLOSEDcheckoutForm.id string · uuidZamówienie.
createdAt.gte string · date-timeOd.
createdAt.lte string · date-timeDo.
Odpowiedzi
200 Sprawy. · IssueList
issues array<Issue> zawszePola obiektu
id string zawszeRK-… (reklamacja) albo DS-… (dyskusja).
type string zawszeCLAIM, DISPUTEreferenceNumber string zawszestatus string zawszeCLAIM_SUBMITTED, CLAIM_ACCEPTED, CLAIM_REJECTED, DISPUTE_ONGOING, DISPUTE_CLOSEDsubject string zawszedescription string · null zawszebuyer object zawszePola obiektu
id string zawszelogin string · null zawszecheckoutForm object zawszePola obiektu
id string · null zawszecreatedAt string · date-time · null zawszeoffer IdRef · null zawszePola obiektu
id string zawszeexpectations array<string> zawszeREPAIR, EXCHANGE, DIFFERENCE_REFUND, REFUND, OTHERopenedDate string · date-time zawszecreatedAt string · date-time zawszedecisionDueDate string · date-time · null zawszeTermin odpowiedzi (sprawa otwarta).
chat object zawszePola obiektu
messagesCount integer zawszelastMessageDateTime string · date-time · null zawszeallee object zawszePola obiektu
responseDeadline string · date-time · null zawszeTermin ustawowy (14 dni, art. 7a upk).
deadlinePassed boolean zawszelegalBasis string · null zawszedemand string · null zawszeŻądanie kupującego.
result string · null zawszeACCEPTED, REJECTED, RESOLVED, nullresolution string · null zawszeclosedAt string · date-time · null zawszecount integer zawszetotalCount integer zawszeBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 400 | VALIDATION_ERROR | Zła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce. |
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
| 503 | NOT_DEPLOYED | Funkcja jeszcze nie uruchomiona (np. sandbox, wsady). |
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/sale/issues?type=CLAIM&limit=50" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.beta.v1+json" \
-w '\nHTTP %{http_code}\n'<?php
// allee API: GET /sale/issues (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$ch = curl_init($base . '/sale/issues?type=CLAIM&limit=50');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.beta.v1+json',
],
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: GET /sale/issues (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.beta.v1+json",
}
r = requests.request("GET", BASE + "/sale/issues?type=CLAIM&limit=50", headers=headers, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: GET /sale/issues (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const res = await fetch(`${BASE}/sale/issues?type=CLAIM&limit=50`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.beta.v1+json",
},
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: GET /sale/issues (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("GET"), baseUrl + "/sale/issues?type=CLAIM&limit=50");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.beta.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: GET /sale/issues (Java 11+, java.net.http; uruchom: java Main.java)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/sale/issues?type=CLAIM&limit=50"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.beta.v1+json")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: GET /sale/issues (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
req, err := http.NewRequest("GET", base+"/sale/issues?type=CLAIM&limit=50", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.beta.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.beta.v1+json{
"issues": [
{
"id": "RK-900000001",
"type": "CLAIM",
"referenceNumber": "RK-900000001",
"status": "CLAIM_SUBMITTED",
"subject": "Reklamacja (niezgodność towaru z umową)",
"description": "Płyta nie odtwarza się od 40. minuty filmu.",
"buyer": {
"id": "4000000001",
"login": "kupujacy_demo_4816f227"
},
"checkoutForm": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92",
"createdAt": "2026-11-10T11:10:05.411Z"
},
"offer": {
"id": "900000000000021"
},
"expectations": [
"EXCHANGE"
],
"openedDate": "2026-11-10T11:10:05.548Z",
"createdAt": "2026-11-10T11:10:05.548Z",
"decisionDueDate": "2026-11-24T11:10:05.000Z",
"chat": {
"messagesCount": 2,
"lastMessageDateTime": "2026-11-10T11:10:05.549Z"
},
"allee": {
"responseDeadline": "2026-11-24T11:10:05.000Z",
"deadlinePassed": false,
"legalBasis": "art. 7a ustawy o prawach konsumenta (14 dni)",
"demand": "Wymiana na nowy",
"result": null,
"resolution": null,
"closedAt": null
}
}
],
"count": 1,
"totalCount": 1
}Sprawa
GET /sale/issues/{issueId}
Allegro + rozszerzeniaallegro:api:disputes:readlimit: readBETA (Allegro)
Reklamacja albo dyskusja.
Zgodność: zgodna z Allegro REST API, z rozszerzeniami allee (pola allee.*, alleeId) — GET /sale/issues/{issueId} (BETA).
Uprawnienie: zakres allegro:api:disputes:read.
Grupa limitu: read.
Parametry ścieżki
issueId string wymaganyNumer sprawy: RK-… (reklamacja) albo DS-… (dyskusja).
Odpowiedzi
200 Sprawa. · Issue
id string zawszeRK-… (reklamacja) albo DS-… (dyskusja).
type string zawszeCLAIM, DISPUTEreferenceNumber string zawszestatus string zawszeCLAIM_SUBMITTED, CLAIM_ACCEPTED, CLAIM_REJECTED, DISPUTE_ONGOING, DISPUTE_CLOSEDsubject string zawszedescription string · null zawszebuyer object zawszePola obiektu
id string zawszelogin string · null zawszecheckoutForm object zawszePola obiektu
id string · null zawszecreatedAt string · date-time · null zawszeoffer IdRef · null zawszePola obiektu
id string zawszeexpectations array<string> zawszeREPAIR, EXCHANGE, DIFFERENCE_REFUND, REFUND, OTHERopenedDate string · date-time zawszecreatedAt string · date-time zawszedecisionDueDate string · date-time · null zawszeTermin odpowiedzi (sprawa otwarta).
chat object zawszePola obiektu
messagesCount integer zawszelastMessageDateTime string · date-time · null zawszeallee object zawszePola obiektu
responseDeadline string · date-time · null zawszeTermin ustawowy (14 dni, art. 7a upk).
deadlinePassed boolean zawszelegalBasis string · null zawszedemand string · null zawszeŻądanie kupującego.
result string · null zawszeACCEPTED, REJECTED, RESOLVED, nullresolution string · null zawszeclosedAt string · date-time · null zawszeBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/sale/issues/RK-900000001" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.beta.v1+json" \
-w '\nHTTP %{http_code}\n'<?php
// allee API: GET /sale/issues/RK-900000001 (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$ch = curl_init($base . '/sale/issues/RK-900000001');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.beta.v1+json',
],
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: GET /sale/issues/RK-900000001 (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.beta.v1+json",
}
r = requests.request("GET", BASE + "/sale/issues/RK-900000001", headers=headers, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: GET /sale/issues/RK-900000001 (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const res = await fetch(`${BASE}/sale/issues/RK-900000001`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.beta.v1+json",
},
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: GET /sale/issues/RK-900000001 (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("GET"), baseUrl + "/sale/issues/RK-900000001");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.beta.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: GET /sale/issues/RK-900000001 (Java 11+, java.net.http; uruchom: java Main.java)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/sale/issues/RK-900000001"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.beta.v1+json")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: GET /sale/issues/RK-900000001 (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
req, err := http.NewRequest("GET", base+"/sale/issues/RK-900000001", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.beta.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.beta.v1+json{
"id": "RK-900000001",
"type": "CLAIM",
"referenceNumber": "RK-900000001",
"status": "CLAIM_SUBMITTED",
"subject": "Reklamacja (niezgodność towaru z umową)",
"description": "Płyta nie odtwarza się od 40. minuty filmu.",
"buyer": {
"id": "4000000001",
"login": "kupujacy_demo_4816f227"
},
"checkoutForm": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92",
"createdAt": "2026-11-10T11:10:05.411Z"
},
"offer": {
"id": "900000000000021"
},
"expectations": [
"EXCHANGE"
],
"openedDate": "2026-11-10T11:10:05.548Z",
"createdAt": "2026-11-10T11:10:05.548Z",
"decisionDueDate": "2026-11-24T11:10:05.000Z",
"chat": {
"messagesCount": 2,
"lastMessageDateTime": "2026-11-10T11:10:05.549Z"
},
"allee": {
"responseDeadline": "2026-11-24T11:10:05.000Z",
"deadlinePassed": false,
"legalBasis": "art. 7a ustawy o prawach konsumenta (14 dni)",
"demand": "Wymiana na nowy",
"result": null,
"resolution": null,
"closedAt": null
}
}Rozmowa w sprawie
GET /sale/issues/{issueId}/chat
zgodna z Allegroallegro:api:disputes:readlimit: readBETA (Allegro)
Wiadomości sprawy, najstarsza pierwsza (do 200 ostatnich).
Zgodność: zgodna z Allegro REST API (ten sam kształt) — GET /sale/issues/{issueId}/chat (BETA).
Uprawnienie: zakres allegro:api:disputes:read.
Grupa limitu: read.
Parametry ścieżki
issueId string wymaganyNumer sprawy: RK-… (reklamacja) albo DS-… (dyskusja).
Odpowiedzi
200 Rozmowa. · IssueChat
chat array<IssueChatMessage> zawszeNajstarsza pierwsza (do 200 ostatnich).
Pola obiektu
id string zawszetext string zawszetype string zawszeREGULARcreatedAt string · date-time zawszeauthor object zawszePola obiektu
login string zawszerole string zawszeBUYER, SELLER, ADMINattachments array<object> zawszeallee object zawszePola obiektu
sender string zawszeBUYER, SELLER, SYSTEMBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/sale/issues/RK-900000001/chat" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.beta.v1+json" \
-w '\nHTTP %{http_code}\n'<?php
// allee API: GET /sale/issues/RK-900000001/chat (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$ch = curl_init($base . '/sale/issues/RK-900000001/chat');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.beta.v1+json',
],
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: GET /sale/issues/RK-900000001/chat (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.beta.v1+json",
}
r = requests.request("GET", BASE + "/sale/issues/RK-900000001/chat", headers=headers, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: GET /sale/issues/RK-900000001/chat (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const res = await fetch(`${BASE}/sale/issues/RK-900000001/chat`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.beta.v1+json",
},
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: GET /sale/issues/RK-900000001/chat (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("GET"), baseUrl + "/sale/issues/RK-900000001/chat");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.beta.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: GET /sale/issues/RK-900000001/chat (Java 11+, java.net.http; uruchom: java Main.java)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/sale/issues/RK-900000001/chat"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.beta.v1+json")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: GET /sale/issues/RK-900000001/chat (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
req, err := http.NewRequest("GET", base+"/sale/issues/RK-900000001/chat", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.beta.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.beta.v1+json{
"chat": [
{
"id": "900000011",
"text": "Kupujący złożył reklamację RK-900000001 (niezgodność towaru z umową). Żądanie: Wymiana na nowy. Sprzedawca odpowiada do 24.11.2026 — brak odpowiedzi w 14 dni oznacza uznanie reklamacji (art. 7a ustawy o prawach konsumenta).",
"type": "REGULAR",
"createdAt": "2026-11-10T11:10:05.549Z",
"author": {
"login": "allee",
"role": "ADMIN"
},
"attachments": [],
"allee": {
"sender": "SYSTEM"
}
},
{
"id": "900000012",
"text": "Opis kupującego: Płyta nie odtwarza się od 40. minuty filmu.",
"type": "REGULAR",
"createdAt": "2026-11-10T11:10:05.549Z",
"author": {
"login": "allee",
"role": "ADMIN"
},
"attachments": [],
"allee": {
"sender": "SYSTEM"
}
}
]
}Wiadomość w sprawie
POST /sale/issues/{issueId}/message
zgodna z Allegroallegro:api:disputes:writelimit: writeBETA (Allegro)
Sprawa pozostaje otwarta (zamknięcie: POST …/status).
Treść: bez linków zewnętrznych (422 EXTERNAL_LINK), filtr jak w panelu, najwyżej 20 wiadomości na godzinę wspólnie z panelem (429 MESSAGE_LIMIT). Bez załączników.
Zgodność: zgodna z Allegro REST API (ten sam kształt) — POST /sale/issues/{issueId}/message (BETA).
Uprawnienie: zakres allegro:api:disputes:write.
Grupa limitu: write.
Parametry ścieżki
issueId string wymaganyNumer sprawy: RK-… (reklamacja) albo DS-… (dyskusja).
Nagłówki
Idempotency-Key stringOchrona 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.beta.v1+json
text string wymaganetype stringREGULARattachments array<object>Odpowiedzi
201 Wysłano. · IssueChatMessage
id string zawszetext string zawszetype string zawszeREGULARcreatedAt string · date-time zawszeauthor object zawszePola obiektu
login string zawszerole string zawszeBUYER, SELLER, ADMINattachments array<object> zawszeallee object zawszePola obiektu
sender string zawszeBUYER, SELLER, SYSTEMBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 409 | NO_THREAD | Sprawa nie ma rozmowy. |
| 413 | PAYLOAD_TOO_LARGE | Treść żądania za duża (JSON 5 MB, faktura PDF 3 MB). |
| 415 | UNSUPPORTED_MEDIA_TYPE | Zły Content-Type treści. |
| 422 | CARD_DATA | Treść wygląda na dane karty płatniczej. |
| 422 | EXTERNAL_LINK | Treść zawiera link spoza allee.pl. |
| 422 | JsonMappingException | Treść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty). |
| 422 | PROFANITY | Wulgaryzmy. |
| 422 | SENSITIVE_REQUEST | Prośba o dane wrażliwe (hasła, dane logowania). |
| 422 | TEXT_EMPTY | Pusta treść. |
| 422 | TEXT_INVALID | Treść niedozwolona przez filtr. |
| 422 | TEXT_TOO_LONG | Treść za długa. |
| 422 | VALIDATION_ERROR | Zła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce. |
| 429 | BUSY | Ta sama operacja trwa równolegle. |
| 429 | MESSAGE_LIMIT | 20 wiadomości na godzinę (wspólnie z panelem). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/sale/issues/RK-900000001/message" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.beta.v1+json" \
-H "Content-Type: application/vnd.allegro.public.v1+json" \
--data-binary @- \
-w '\nHTTP %{http_code}\n' <<'JSON'
{
"text": "Przepraszamy za kłopot. Prosimy odesłać płytę — wyślemy nowy egzemplarz.",
"type": "REGULAR"
}
JSON<?php
// allee API: POST /sale/issues/RK-900000001/message (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$body = [
'text' => 'Przepraszamy za kłopot. Prosimy odesłać płytę — wyślemy nowy egzemplarz.',
'type' => 'REGULAR',
];
$ch = curl_init($base . '/sale/issues/RK-900000001/message');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.beta.v1+json',
'Content-Type: application/vnd.allegro.public.v1+json',
],
CURLOPT_POSTFIELDS => json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: POST /sale/issues/RK-900000001/message (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.beta.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
}
body = {
"text": "Przepraszamy za kłopot. Prosimy odesłać płytę — wyślemy nowy egzemplarz.",
"type": "REGULAR",
}
r = requests.request("POST", BASE + "/sale/issues/RK-900000001/message", headers=headers, json=body, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: POST /sale/issues/RK-900000001/message (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const body = {
"text": "Przepraszamy za kłopot. Prosimy odesłać płytę — wyślemy nowy egzemplarz.",
"type": "REGULAR"
};
const res = await fetch(`${BASE}/sale/issues/RK-900000001/message`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.beta.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
},
body: JSON.stringify(body),
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: POST /sale/issues/RK-900000001/message (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("POST"), baseUrl + "/sale/issues/RK-900000001/message");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.beta.v1+json");
var json = """
{
"text": "Przepraszamy za kłopot. Prosimy odesłać płytę — wyślemy nowy egzemplarz.",
"type": "REGULAR"
}
""";
req.Content = new StringContent(json, Encoding.UTF8);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: POST /sale/issues/RK-900000001/message (Java 11+, java.net.http; uruchom: java Main.java)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
String body = """
{
"text": "Przepraszamy za kłopot. Prosimy odesłać płytę — wyślemy nowy egzemplarz.",
"type": "REGULAR"
}
""";
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/sale/issues/RK-900000001/message"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.beta.v1+json")
.header("Content-Type", "application/vnd.allegro.public.v1+json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: POST /sale/issues/RK-900000001/message (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
body := `{
"text": "Przepraszamy za kłopot. Prosimy odesłać płytę — wyślemy nowy egzemplarz.",
"type": "REGULAR"
}`
req, err := http.NewRequest("POST", base+"/sale/issues/RK-900000001/message", strings.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.beta.v1+json")
req.Header.Set("Content-Type", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.beta.v1+json{
"id": "900000015",
"text": "Przepraszamy za kłopot. Prosimy odesłać płytę — wyślemy nowy egzemplarz.",
"type": "REGULAR",
"createdAt": "2026-11-10T11:10:05.563Z",
"author": {
"login": "sklep_przykladowy_0e60e9",
"role": "SELLER"
},
"attachments": [],
"allee": {
"sender": "SELLER"
}
}Decyzja w sprawie
POST /sale/issues/{issueId}/status
Allegro + rozszerzeniaallegro:api:disputes:writelimit: writeBETA (Allegro)
Reklamacja: ACCEPTED (uznana) albo REJECTED (nieuznana). Dyskusja: RESOLVED. message = odpowiedź do kupującego (wymagana), solution = krótko, jak rozwiązano.
Po terminie ustawowym reklamację można już tylko uznać (409 DEADLINE_PASSED).
Zgodność: zgodna z Allegro REST API, z rozszerzeniami allee (pola allee.*, alleeId) — POST /sale/issues/{issueId}/status (BETA).
Uprawnienie: zakres allegro:api:disputes:write.
Grupa limitu: write.
Parametry ścieżki
issueId string wymaganyNumer sprawy: RK-… (reklamacja) albo DS-… (dyskusja).
Nagłówki
Idempotency-Key stringOchrona 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.beta.v1+json
status string wymaganeReklamacja: ACCEPTED/REJECTED; dyskusja: RESOLVED.
ACCEPTED, REJECTED, RESOLVED, CLAIM_ACCEPTED, CLAIM_REJECTED, DISPUTE_CLOSEDmessage string wymaganeOdpowiedź do kupującego (wymagana).
solution stringKrótko, jak rozwiązano (do 80 znaków).
Odpowiedzi
200 Sprawa po decyzji. · Issue
id string zawszeRK-… (reklamacja) albo DS-… (dyskusja).
type string zawszeCLAIM, DISPUTEreferenceNumber string zawszestatus string zawszeCLAIM_SUBMITTED, CLAIM_ACCEPTED, CLAIM_REJECTED, DISPUTE_ONGOING, DISPUTE_CLOSEDsubject string zawszedescription string · null zawszebuyer object zawszePola obiektu
id string zawszelogin string · null zawszecheckoutForm object zawszePola obiektu
id string · null zawszecreatedAt string · date-time · null zawszeoffer IdRef · null zawszePola obiektu
id string zawszeexpectations array<string> zawszeREPAIR, EXCHANGE, DIFFERENCE_REFUND, REFUND, OTHERopenedDate string · date-time zawszecreatedAt string · date-time zawszedecisionDueDate string · date-time · null zawszeTermin odpowiedzi (sprawa otwarta).
chat object zawszePola obiektu
messagesCount integer zawszelastMessageDateTime string · date-time · null zawszeallee object zawszePola obiektu
responseDeadline string · date-time · null zawszeTermin ustawowy (14 dni, art. 7a upk).
deadlinePassed boolean zawszelegalBasis string · null zawszedemand string · null zawszeŻądanie kupującego.
result string · null zawszeACCEPTED, REJECTED, RESOLVED, nullresolution string · null zawszeclosedAt string · date-time · null zawszeBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 409 | DEADLINE_PASSED | Po terminie ustawowym reklamację można tylko uznać. |
| 409 | ISSUE_ALREADY_CLOSED | Sprawa już zamknięta. |
| 413 | PAYLOAD_TOO_LARGE | Treść żądania za duża (JSON 5 MB, faktura PDF 3 MB). |
| 415 | UNSUPPORTED_MEDIA_TYPE | Zły Content-Type treści. |
| 422 | CARD_DATA | Treść wygląda na dane karty płatniczej. |
| 422 | EXTERNAL_LINK | Treść zawiera link spoza allee.pl. |
| 422 | INVALID_STATUS_FOR_TYPE | Status nie pasuje do rodzaju sprawy. |
| 422 | JsonMappingException | Treść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty). |
| 422 | PROFANITY | Wulgaryzmy. |
| 422 | SENSITIVE_REQUEST | Prośba o dane wrażliwe (hasła, dane logowania). |
| 422 | TEXT_EMPTY | Pusta treść. |
| 422 | TEXT_INVALID | Treść niedozwolona przez filtr. |
| 422 | TEXT_TOO_LONG | Treść za długa. |
| 422 | VALIDATION_ERROR | Zła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce. |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/sale/issues/RK-900000001/status" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.beta.v1+json" \
-H "Content-Type: application/vnd.allegro.public.v1+json" \
--data-binary @- \
-w '\nHTTP %{http_code}\n' <<'JSON'
{
"status": "ACCEPTED",
"message": "Reklamację uznajemy — nowy egzemplarz wyślemy po otrzymaniu płyty.",
"solution": "Wymiana na nowy egzemplarz"
}
JSON<?php
// allee API: POST /sale/issues/RK-900000001/status (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$body = [
'status' => 'ACCEPTED',
'message' => 'Reklamację uznajemy — nowy egzemplarz wyślemy po otrzymaniu płyty.',
'solution' => 'Wymiana na nowy egzemplarz',
];
$ch = curl_init($base . '/sale/issues/RK-900000001/status');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.beta.v1+json',
'Content-Type: application/vnd.allegro.public.v1+json',
],
CURLOPT_POSTFIELDS => json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: POST /sale/issues/RK-900000001/status (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.beta.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
}
body = {
"status": "ACCEPTED",
"message": "Reklamację uznajemy — nowy egzemplarz wyślemy po otrzymaniu płyty.",
"solution": "Wymiana na nowy egzemplarz",
}
r = requests.request("POST", BASE + "/sale/issues/RK-900000001/status", headers=headers, json=body, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: POST /sale/issues/RK-900000001/status (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const body = {
"status": "ACCEPTED",
"message": "Reklamację uznajemy — nowy egzemplarz wyślemy po otrzymaniu płyty.",
"solution": "Wymiana na nowy egzemplarz"
};
const res = await fetch(`${BASE}/sale/issues/RK-900000001/status`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.beta.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
},
body: JSON.stringify(body),
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: POST /sale/issues/RK-900000001/status (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("POST"), baseUrl + "/sale/issues/RK-900000001/status");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.beta.v1+json");
var json = """
{
"status": "ACCEPTED",
"message": "Reklamację uznajemy — nowy egzemplarz wyślemy po otrzymaniu płyty.",
"solution": "Wymiana na nowy egzemplarz"
}
""";
req.Content = new StringContent(json, Encoding.UTF8);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: POST /sale/issues/RK-900000001/status (Java 11+, java.net.http; uruchom: java Main.java)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
String body = """
{
"status": "ACCEPTED",
"message": "Reklamację uznajemy — nowy egzemplarz wyślemy po otrzymaniu płyty.",
"solution": "Wymiana na nowy egzemplarz"
}
""";
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/sale/issues/RK-900000001/status"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.beta.v1+json")
.header("Content-Type", "application/vnd.allegro.public.v1+json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: POST /sale/issues/RK-900000001/status (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
body := `{
"status": "ACCEPTED",
"message": "Reklamację uznajemy — nowy egzemplarz wyślemy po otrzymaniu płyty.",
"solution": "Wymiana na nowy egzemplarz"
}`
req, err := http.NewRequest("POST", base+"/sale/issues/RK-900000001/status", strings.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.beta.v1+json")
req.Header.Set("Content-Type", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.beta.v1+json{
"id": "RK-900000001",
"type": "CLAIM",
"referenceNumber": "RK-900000001",
"status": "CLAIM_ACCEPTED",
"subject": "Reklamacja (niezgodność towaru z umową)",
"description": "Płyta nie odtwarza się od 40. minuty filmu.",
"buyer": {
"id": "4000000001",
"login": "kupujacy_demo_4816f227"
},
"checkoutForm": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92",
"createdAt": "2026-11-10T11:10:05.411Z"
},
"offer": {
"id": "900000000000021"
},
"expectations": [
"EXCHANGE"
],
"openedDate": "2026-11-10T11:10:05.548Z",
"createdAt": "2026-11-10T11:10:05.548Z",
"decisionDueDate": null,
"chat": {
"messagesCount": 5,
"lastMessageDateTime": "2026-11-10T11:10:05.567Z"
},
"allee": {
"responseDeadline": "2026-11-24T11:10:05.000Z",
"deadlinePassed": false,
"legalBasis": "art. 7a ustawy o prawach konsumenta (14 dni)",
"demand": "Wymiana na nowy",
"result": "ACCEPTED",
"resolution": "Rozwiązanie: Wymiana na nowy egzemplarz.\nReklamację uznajemy — nowy egzemplarz wyślemy po otrzymaniu płyty.",
"closedAt": "2026-11-10T11:10:05.566Z"
}
}Przykład: Zamknięcie dyskusji (RESOLVED)
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/sale/issues/DS-900000002/status" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.beta.v1+json" \
-H "Content-Type: application/vnd.allegro.public.v1+json" \
--data-binary @- \
-w '\nHTTP %{http_code}\n' <<'JSON'
{
"status": "RESOLVED",
"message": "Wysłaliśmy nową płytę w wzmocnionym opakowaniu."
}
JSON<?php
// allee API: POST /sale/issues/DS-900000002/status (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$body = [
'status' => 'RESOLVED',
'message' => 'Wysłaliśmy nową płytę w wzmocnionym opakowaniu.',
];
$ch = curl_init($base . '/sale/issues/DS-900000002/status');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.beta.v1+json',
'Content-Type: application/vnd.allegro.public.v1+json',
],
CURLOPT_POSTFIELDS => json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: POST /sale/issues/DS-900000002/status (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.beta.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
}
body = {
"status": "RESOLVED",
"message": "Wysłaliśmy nową płytę w wzmocnionym opakowaniu.",
}
r = requests.request("POST", BASE + "/sale/issues/DS-900000002/status", headers=headers, json=body, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: POST /sale/issues/DS-900000002/status (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const body = {
"status": "RESOLVED",
"message": "Wysłaliśmy nową płytę w wzmocnionym opakowaniu."
};
const res = await fetch(`${BASE}/sale/issues/DS-900000002/status`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.beta.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
},
body: JSON.stringify(body),
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: POST /sale/issues/DS-900000002/status (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("POST"), baseUrl + "/sale/issues/DS-900000002/status");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.beta.v1+json");
var json = """
{
"status": "RESOLVED",
"message": "Wysłaliśmy nową płytę w wzmocnionym opakowaniu."
}
""";
req.Content = new StringContent(json, Encoding.UTF8);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: POST /sale/issues/DS-900000002/status (Java 11+, java.net.http; uruchom: java Main.java)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
String body = """
{
"status": "RESOLVED",
"message": "Wysłaliśmy nową płytę w wzmocnionym opakowaniu."
}
""";
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/sale/issues/DS-900000002/status"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.beta.v1+json")
.header("Content-Type", "application/vnd.allegro.public.v1+json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: POST /sale/issues/DS-900000002/status (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
body := `{
"status": "RESOLVED",
"message": "Wysłaliśmy nową płytę w wzmocnionym opakowaniu."
}`
req, err := http.NewRequest("POST", base+"/sale/issues/DS-900000002/status", strings.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.beta.v1+json")
req.Header.Set("Content-Type", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.beta.v1+json{
"id": "DS-900000002",
"type": "DISPUTE",
"referenceNumber": "DS-900000002",
"status": "DISPUTE_CLOSED",
"subject": "Problem z zamówieniem",
"description": "Paczka dotarła uszkodzona, pudełko pęknięte.",
"buyer": {
"id": "4000000001",
"login": "kupujacy_demo_4816f227"
},
"checkoutForm": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92",
"createdAt": "2026-11-10T11:10:05.411Z"
},
"offer": {
"id": "900000000000021"
},
"expectations": [],
"openedDate": "2026-11-10T11:10:05.550Z",
"createdAt": "2026-11-10T11:10:05.550Z",
"decisionDueDate": null,
"chat": {
"messagesCount": 4,
"lastMessageDateTime": "2026-11-10T11:10:05.571Z"
},
"allee": {
"responseDeadline": null,
"deadlinePassed": false,
"legalBasis": null,
"demand": null,
"result": "RESOLVED",
"resolution": "Wysłaliśmy nową płytę w wzmocnionym opakowaniu.",
"closedAt": "2026-11-10T11:10:05.570Z"
}
}