Siirry sisältöön
ShopentlyLearn

Listaa · Tilat — Palautukset, reklamaatiot ja vaihdot

Lue tietoja resurssista ”Palautukset, reklamaatiot ja vaihdot”. Tulos riippuu toiminnon parametreista.

GET/api/v1/request-statuses

Todentaminen
Bearer
Saatavilla alkaen
BASIC
Vaaditut käyttöoikeudet
returns.request:read

Koodiesimerkit

Pyyntöesimerkki

cURL

: "${SHOPENTLY_SHOP_URL:?}"

curl --disable --globoff --fail-with-body --silent --show-error \
  --proto '=https' --connect-timeout 5 --max-time 30 \
  --request GET \
  --header "Authorization: Bearer ${SHOPENTLY_ACCESS_TOKEN:?}" \
  --url "${SHOPENTLY_SHOP_URL%/}"'/api/v1/request-statuses?limit=20'

PHP

<?php
declare(strict_types=1);

$baseUrl = rtrim(getenv('SHOPENTLY_SHOP_URL') ?: '', '/');
$origin = parse_url($baseUrl);
if (!$origin || ($origin['scheme'] ?? '') !== 'https' || empty($origin['host']) ||
    isset($origin['user'], $origin['pass']) || isset($origin['user']) || isset($origin['path']) ||
    isset($origin['query']) || isset($origin['fragment'])) {
    throw new RuntimeException('SHOPENTLY_SHOP_URL must be an HTTPS origin');
}
$credential = getenv('SHOPENTLY_ACCESS_TOKEN') ?: '';
if ($credential === '' || strpbrk($credential, "\r\n") !== false) {
    throw new RuntimeException('Invalid credential');
}
$headers = [];
$headers[] = 'Authorization: Bearer ' . $credential;
$responseHeaders = [];
$handle = curl_init($baseUrl . '/api/v1/request-statuses?limit=20');
curl_setopt_array($handle, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_PROTOCOLS => CURLPROTO_HTTPS,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HEADERFUNCTION => static function ($handle, string $line) use (&$responseHeaders): int {
        if (str_contains($line, ':')) {
            [$name, $value] = explode(':', $line, 2);
            $responseHeaders[strtolower(trim($name))] = trim($value);
        }
        return strlen($line);
    },
]);
$raw = curl_exec($handle);
$status = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
$error = curl_error($handle);
curl_close($handle);
if ($raw === false) {
    throw new RuntimeException('Transport error: ' . $error);
}
if ($status < 200 || $status >= 300) {
    throw new RuntimeException('HTTP ' . $status . '; request_id=' .
        ($responseHeaders['x-request-id'] ?? '') . '; retry_after=' . ($responseHeaders['retry-after'] ?? ''));
}
$result = $raw === '' ? null : json_decode($raw, true, 512, JSON_THROW_ON_ERROR | JSON_BIGINT_AS_STRING);
echo json_encode($result, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), PHP_EOL;

Python

from contextlib import ExitStack
import json
import os
from urllib.parse import urlsplit

import requests  # python -m pip install requests

base_url = os.environ["SHOPENTLY_SHOP_URL"].rstrip("/")
origin = urlsplit(base_url)
if origin.scheme != "https" or not origin.hostname or origin.username or origin.password or origin.path or origin.query or origin.fragment:
    raise ValueError("SHOPENTLY_SHOP_URL must be an HTTPS origin")
credential = os.environ['SHOPENTLY_ACCESS_TOKEN']
if not credential or "\r" in credential or "\n" in credential:
    raise ValueError("Invalid credential")
headers = {}
headers["Authorization"] = 'Bearer' + " " + credential
body = None
if body is not None:
    headers["Content-Type"] = "application/json"

with ExitStack() as stack:
    session = stack.enter_context(requests.Session())
    files = None
    if False:
        image = stack.enter_context(open(os.environ["SHOPENTLY_IMAGE_FILE"], "rb"))
        if os.fstat(image.fileno()).st_size > 5242880:
            raise ValueError("Image exceeds 5 MiB")
        files = {"file": ("article.png", image, "image/png")}
    response = session.request(
        'GET', base_url + '/api/v1/request-statuses?limit=20', headers=headers,
        data=body.encode("utf-8") if body is not None else None, files=files,
        timeout=(5, 30), allow_redirects=False,
    )
    if not 200 <= response.status_code < 300:
        raise RuntimeError(f"HTTP {response.status_code}; request_id={response.headers.get('X-Request-ID', '')}; retry_after={response.headers.get('Retry-After', '')}")
    if False:
        if response.headers.get("Content-Type") != "image/webp" or len(response.content) > 5242880:
            raise ValueError("Unexpected image response")
        with open(os.environ["SHOPENTLY_OUTPUT_FILE"], "xb") as output:
            output.write(response.content)
    else:
        result = response.json() if response.content else None
        print(json.dumps(result, ensure_ascii=False, indent=2))

Vastausesimerkki 200

JSON
{
  "data": [
    {
      "code": "example",
      "created_at": "2026-01-01T12:00:00Z",
      "id": "example",
      "is_initial": false,
      "locale": "en",
      "name": "Example",
      "position": 1,
      "type": "return"
    }
  ],
  "meta": {
    "pagination": {
      "has_more": false,
      "limit": 20,
      "next_cursor": null
    },
    "request_id": "example"
  }
}

Periaatteet

  • Käytä kokoelma- ja yksityiskohtapäätepisteitä tapausnumeron ja -tyypin, liittyvän tilauksen, ilmoitettujen tuotteiden, asiakastietojen ja palautustietojen hakemiseen.
  • Kelvolliset tapaustyypit ovat return, exchange ja complaint.
  • Hae tilatunnisteet osoitteesta /api/v1/request-statuses.
  • Tila ja palautussumma ovat erillisiä kirjoituksia, joissa tarkistetaan versio.
  • Kirjatun palautussumman muuttaminen päivittää tapaustietueen.
  • Se ei suorita rahansiirtoa.

Parametrit

Kyselyparametrit

limitKokonaislukuValinnainen

Tämän sivun tietueiden enimmäismäärä.

minimum: 1maximum: 100
Oletus: 50Esimerkki: 20
cursorMerkkijono nullValinnainen

Edellisen sivun palauttama läpinäkymätön jatkoarvo.

Merkkijono:minLength: 1maxLength: 1024
typeRequestType nullValinnainen

Resurssin tyyppi.

Tämä toiminto ei hyväksy JSON-sisältöä.

Vastaukset

Vastaus 200

dataTaulukko <shopently_engine__domains__returns__adapters__public_http__requests__schemas__StatusDefinitionData > Pakollinen

Onnistuneen vastauksen sisältö.

Kentät · data

shopently_engine__domains__returns__adapters__public_http__requests__schemas__StatusDefinitionData

codeMerkkijonoPakollinen

Vakaa koneellisesti luettava koodi.

created_atMerkkijonoPakollinen

Luontiajankohta.

format: "date-time"
idMerkkijonoPakollinen

Resurssin tunniste; säilytä se palautetussa muodossa.

is_initialTotuusarvoPakollinen

Onko tämä alkutila.

localeMerkkijonoPakollinen

Tälle pyynnölle valittu kieli.

nameMerkkijono nullPakollinen

Resurssin nimi kyseisessä kontekstissa.

positionKokonaislukuPakollinen

Sijainti järjestetyssä kokoelmassa.

typeRequestType Pakollinen

Resurssin tyyppi.

metaContextPageMeta ContextMeta PageMeta RequestMeta Pakollinen

Vastauksen metatiedot.

Kentät · meta

ContextPageMeta

localeMerkkijonoPakollinen

Tälle pyynnölle valittu kieli.

market_codeMerkkijonoPakollinen

Kontekstipäätepisteen palauttama markkinakoodi.

market_idMerkkijonoPakollinen

Kontekstipäätepisteen palauttama markkinatunniste.

paginationPagination Pakollinen

Kohdistinpohjaisen sivutuksen metatiedot.

request_idMerkkijonoPakollinen

Tapauksen tunniste; vastauksen metatiedoissa se yksilöi HTTP-pyynnön.

minLength: 1maxLength: 100

ContextMeta

localeMerkkijonoPakollinen

Tälle pyynnölle valittu kieli.

market_codeMerkkijonoPakollinen

Kontekstipäätepisteen palauttama markkinakoodi.

market_idMerkkijonoPakollinen

Kontekstipäätepisteen palauttama markkinatunniste.

request_idMerkkijonoPakollinen

Tapauksen tunniste; vastauksen metatiedoissa se yksilöi HTTP-pyynnön.

minLength: 1maxLength: 100

PageMeta

paginationPagination Pakollinen

Kohdistinpohjaisen sivutuksen metatiedot.

request_idMerkkijonoPakollinen

Tapauksen tunniste; vastauksen metatiedoissa se yksilöi HTTP-pyynnön.

minLength: 1maxLength: 100

RequestMeta

request_idMerkkijonoPakollinen

Tapauksen tunniste; vastauksen metatiedoissa se yksilöi HTTP-pyynnön.

minLength: 1maxLength: 100
Vastausesimerkki

HTTP-tilakoodi

200
Onnistunut vastaus Skeema
400
Virheellinen pyyntö
401
Tunnistautuminen vaaditaan
403
Pääsy estetty
404
Resurssia ei löydy
409
Versioristiriita
422
Validointi epäonnistui
429
Pyyntöraja ylitetty
Muut HTTP-tilat (7)
405
Menetelmä ei ole sallittu
413
Pyyntö on liian suuri
415
Muotoa ei tueta
500
Palvelinvirhe
502
API-yhdyskäytävän virhe
503
Palvelu ei ole käytettävissä
504
Aikakatkaisu

Virheluettelo: ErrorResponse

Otsakkeet

401

WWW-AuthenticateMerkkijonoValinnainen

Palvelimen vaatima todentamismenetelmä.

405

AllowMerkkijonoValinnainen

Tämän resurssin tukemat HTTP-metodit.

429, 503

Retry-AfterKokonaislukuValinnainen

Vähimmäisviive ennen uudelleenyritystä sekunteina.

minimum: 0