Léim ar ábhar
ShopentlyLearn

Faigh · Comhartha rochtana — Fíordheimhniú

Faigh comhartha Shopently API atá bailí ar feadh 900 soicind. Féach ar cheanntásc ApiKey, an freagra agus úsáid Bearer in iarratais ina dhiaidh.

POST/api/v1/auth/token

Fíordheimhniú
ApiKey
Ar fáil ó
BASIC
Ceadanna riachtanacha
Neamhbhainteach

Samplaí cóid

Sampla iarratais

cURL

: "${SHOPENTLY_SHOP_URL:?}"

curl --disable --globoff --fail-with-body --silent --show-error \
  --proto '=https' --connect-timeout 5 --max-time 30 \
  --request POST \
  --header "Authorization: ApiKey ${SHOPENTLY_API_KEY:?}" \
  --header 'Content-Type: application/json' \
  --data-raw '{}' \
  --url "${SHOPENTLY_SHOP_URL%/}"/api/v1/auth/token

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_API_KEY') ?: '';
if ($credential === '' || strpbrk($credential, "\r\n") !== false) {
    throw new RuntimeException('Invalid credential');
}
$headers = ['Content-Type: application/json'];
$headers[] = 'Authorization: ApiKey ' . $credential;
$responseHeaders = [];
$handle = curl_init($baseUrl . '/api/v1/auth/token');
curl_setopt_array($handle, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    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);
    },
]);
curl_setopt($handle, CURLOPT_POSTFIELDS, '{}');
$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_API_KEY']
if not credential or "\r" in credential or "\n" in credential:
    raise ValueError("Invalid credential")
headers = {}
headers["Authorization"] = 'ApiKey' + " " + credential
body = '{}'
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(
        'POST', base_url + '/api/v1/auth/token', 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))

Sampla freagra 200

JSON
{
  "data": {
    "access_token": "EXAMPLE_ACCESS_TOKEN",
    "expires_at": "2026-01-01T12:00:00Z",
    "expires_in": 900,
    "rate_limits": {
      "auth_per_minute": 10,
      "read_per_minute": 60,
      "write_per_minute": 10
    },
    "token_type": "Bearer"
  },
  "meta": {
    "request_id": "example"
  }
}

Fíordheimhniú

  • Ní sheoltar an eochair API ach i gceanntásc Authorization de POST /api/v1/auth/token.
  • Ná cuir i JSON, in URL ná i bparaiméadair fiosrúcháin í.
  • Úsáid an comhartha a fhaightear d'iarratais acmhainní agus athnuaigh é de réir expires_at; cuirtear expires_in in iúl i soicindí.
  • Ní sheachnaíonn comhartha rochtana ceadanna reatha na heochrach, teidlíochtaí an tsiopa, cúlghairm ná srianta IP.

Cá fhad a bhíonn comhartha bailí?

  • expires_in: 900 soicind, nó 15 nóiméad ón eisiúint. Ní chuireann iarratais síneadh leis an tréimhse bhailíochta.
  • expires_at: Am éaga in UTC. Féadfaidh na srianta rochtana reatha an comhartha a bhlocáil níos luaithe.

Athúsáid an comhartha le haghaidh roinnt iarratas agus faigh ceann nua roimh expires_at. Ná faigh comhartha roimh gach oibríocht. Úsáid an eochair API chun an comhartha nua a fháil.

Teorainneacha ráta

Engine ≥ 4.143.0. Áirítear data.rate_limits ó pholasaí an tsiopa tráth a eisiúna i ngach freagra comhartha. Roinneann gach eochair na teorainneacha seo; ní athshocraíonn comhartha nua iad. D’fhéadfadh athrú plean teacht i bhfeidhm sula dtéann an comhartha in éag.

Paraiméadair

Níl paraiméadair chosáin, fiosrúcháin ná cheanntásca breise ann.

Corp an iarratais

application/json · Roghnach

TokenRequest null

Freagraí

Freagra 200

dataTokenData Riachtanach

Sonraí freagra rathúil.

Réimsí · data
access_tokenTeaghránRiachtanach

Dintiúr Bearer gearrthéarmach.

expires_atTeaghránRiachtanach

Dáta agus am éaga na ndintiúr.

format: "date-time"
expires_inSlánuimhirRoghnach

Saolré na ndintiúr i soicindí.

Réamhshocrú: 900

rate_limitsTokenRateLimitsData Riachtanach

Áirítear data.rate_limits ó pholasaí an tsiopa tráth a eisiúna i ngach freagra comhartha. Roinneann gach eochair na teorainneacha seo; ní athshocraíonn comhartha nua iad. D’fhéadfadh athrú plean teacht i bhfeidhm sula dtéann an comhartha in éag.

Réimsí · rate_limits
auth_per_minuteSlánuimhirRiachtanach

Iarratais ar chomhartha sa nóiméad, lena n-áirítear iarrachtaí fíordheimhnithe ar theip orthu.

minimum: 0maximum: 1000000
read_per_minuteSlánuimhirRiachtanach

Iarratais léitheoireachta sa nóiméad.

minimum: 0maximum: 1000000
write_per_minuteSlánuimhirRiachtanach

Iarratais scríbhneoireachta sa nóiméad; ní thugann an luach seo cead scríbhneoireachta.

minimum: 0maximum: 1000000
token_typeTeaghránRoghnach

Scéim fíordheimhnithe an chomhartha a thugtar ar ais.

const: "Bearer"

Réamhshocrú: "Bearer"

metaContextPageMeta ContextMeta PageMeta RequestMeta Riachtanach

Meiteashonraí an fhreagra.

Réimsí · meta

ContextPageMeta

localeTeaghránRiachtanach

Teanga roghnaithe don iarratas seo.

market_codeTeaghránRiachtanach

Cód margaidh a thugann an críochphointe comhthéacs.

market_idTeaghránRiachtanach

Aitheantóir margaidh a thugann an críochphointe comhthéacs.

paginationPagination Riachtanach

Meiteashonraí leathanaithe le cúrsóir.

request_idTeaghránRiachtanach

Aitheantóir iarratais; i meiteashonraí freagra aithníonn sé an t-iarratas HTTP.

minLength: 1maxLength: 100

ContextMeta

localeTeaghránRiachtanach

Teanga roghnaithe don iarratas seo.

market_codeTeaghránRiachtanach

Cód margaidh a thugann an críochphointe comhthéacs.

market_idTeaghránRiachtanach

Aitheantóir margaidh a thugann an críochphointe comhthéacs.

request_idTeaghránRiachtanach

Aitheantóir iarratais; i meiteashonraí freagra aithníonn sé an t-iarratas HTTP.

minLength: 1maxLength: 100

PageMeta

paginationPagination Riachtanach

Meiteashonraí leathanaithe le cúrsóir.

request_idTeaghránRiachtanach

Aitheantóir iarratais; i meiteashonraí freagra aithníonn sé an t-iarratas HTTP.

minLength: 1maxLength: 100

RequestMeta

request_idTeaghránRiachtanach

Aitheantóir iarratais; i meiteashonraí freagra aithníonn sé an t-iarratas HTTP.

minLength: 1maxLength: 100
Sampla freagra

Stádas HTTP

200
Freagra rathúil Scéim
400
Iarratas neamhbhailí
401
Fíordheimhniú riachtanach
403
Cead diúltaithe
404
Acmhainn gan aimsiú
409
Coinbhleacht leagain
422
Theip ar bhailíochtú
429
Teorainn iarratas sáraithe
Stádais HTTP eile (7)
405
Modh neamhcheadaithe
413
Iarratas rómhór
415
Formáid gan tacaíocht
500
Earráid freastalaí
502
Earráid gheata API
503
Seirbhís gan fáil
504
Teorainn ama sáraithe

Catalóg earráidí: ErrorResponse

Ceanntásca

401

WWW-AuthenticateTeaghránRoghnach

An scéim fíordheimhnithe a éilíonn an freastalaí.

405

AllowTeaghránRoghnach

Modhanna HTTP a thacaíonn an acmhainn seo leo.

429, 503

Retry-AfterSlánuimhirRoghnach

An mhoill íosta roimh atriail, i soicindí.

minimum: 0.0