Pereiti prie turinio
ShopentlyLearn

Straipsnis

Skaityti straipsnius ir peržiūrėti juodraščius

GET/api/v1/addons/shopently.blog/posts/{post_id}

Tapatybės patvirtinimas
Bearer
Prieinama nuo plano
BASIC
Būtinas įdiegtas modulis
shopently.blog · Modulio sutarties versija 1
Būtinos teisės
addon.shopently.blog:post_read

Kodo pavyzdžiai

Užklausos pavyzdys

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/addons/shopently.blog/posts/2103ba96-2713-420b-b197-8a008730c851?locale=pl'

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/addons/shopently.blog/posts/2103ba96-2713-420b-b197-8a008730c851?locale=pl');
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/addons/shopently.blog/posts/2103ba96-2713-420b-b197-8a008730c851?locale=pl', 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))

Atsakymo pavyzdys 200

JSON
{
  "data": {
    "author_id": "341494e0-caab-4f47-a8ff-f6795c42a775",
    "comments_mode": "open",
    "content_html": "<h2>Porównaj właściwości</h2><p>Sprawdź opis produktu i wybierz wariant odpowiedni do swoich potrzeb.</p>",
    "cover_alt": "Niebieska ilustracja poradnika",
    "cover_caption": "Ilustracja redakcyjna",
    "cover_media_id": "e8663afe-3c38-461c-a142-a980085630af",
    "draft_revision_id": "8c4af6da-63f4-42aa-8b37-57c703fa0af7",
    "excerpt": "Praktyczny poradnik zakupowy.",
    "first_published_at": null,
    "id": "2103ba96-2713-420b-b197-8a008730c851",
    "last_published_at": null,
    "locale": "pl",
    "meta_description": "Praktyczne wskazówki dotyczące wyboru produktu.",
    "meta_keywords": [
      "poradnik",
      "wybór"
    ],
    "meta_title": "Jak wybrać produkt",
    "public_number": 1,
    "publish_at": null,
    "publish_timezone": null,
    "published_revision_id": null,
    "schedule_state": null,
    "scheduled_revision_id": null,
    "slug": "jak-wybrac-produkt",
    "status": "draft",
    "title": "Jak wybrać produkt",
    "updated_at": "2026-10-07T23:17:44.320869Z",
    "version": 1
  },
  "meta": {
    "request_id": "c85f6074-44e5-4d74-a117-fb631879fb7d"
  }
}

Apžvalga

Tvarkykite parduotuvės tinklaraštį su HTML straipsniais, nuotraukomis, autoriais ir paieškos sistemų metaduomenimis. Saugokite juodraščius, ruoškite vertimus ir publikuokite iš karto arba pasirinktu laiku konkrečioje laiko juostoje. Valdykite komentarus ir moderavimą skydelyje; išorinis generatorius gali naudoti API su suteiktomis teisėmis.

BASIC · api.enabled · addons.use(shopently.blog) · addon.shopently.blog:post_read

Parametrai

Kelio parametrai

post_idEilutėPrivalomas

Straipsnis

format: "uuid"
Pavyzdys: "2103ba96-2713-420b-b197-8a008730c851"

Užklausos parametrai

localeEilutėPrivalomas

Šiai užklausai pasirinkta kalba.

minLength: 2maxLength: 35
Apribojimai
pattern
"^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$"
Pavyzdys: "pl"

Ši operacija nepriima JSON turinio.

Atsakymai

Atsakymas 200

dataObjektasPapildomi laukai: NePrivalomas

Sėkmingo atsakymo duomenys.

Laukai · data
author_idEilutė nullPrivalomas

Autorius

Eilutė:format: "uuid"
comments_modeEilutėPrivalomas

Komentarai

Apribojimai
enum
["inherit", "open", "closed"]
content_htmlEilutėPrivalomas

Turinys

maxLength: 50000
cover_altEilutėPrivalomas

Alternatyvusis tekstas

maxLength: 250
cover_captionEilutėPrivalomas

Nuotraukos antraštė

maxLength: 500
cover_media_idEilutė nullPrivalomas

Viršelio nuotrauka

Eilutė:format: "uuid"
draft_revision_idEilutėPrivalomas

Juodraščio versija

format: "uuid"
excerptEilutėPrivalomas

Įžanga

maxLength: 1000
first_published_atEilutė nullPrivalomas

Pirmą kartą paskelbta

Eilutė:format: "date-time"
idEilutėPrivalomas

Ištekliaus identifikatorius; išsaugokite grąžintą išraišką.

format: "uuid"
last_published_atEilutė nullPrivalomas

Paskutinį kartą paskelbta

Eilutė:format: "date-time"
localeEilutėPrivalomas

Šiai užklausai pasirinkta kalba.

minLength: 2maxLength: 35
Apribojimai
pattern
"^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$"
meta_descriptionEilutėPrivalomas

Aprašymas paieškos sistemoms pasirinkta kalba.

maxLength: 160
meta_keywordsMasyvas <Eilutė> Privalomas

Raktažodžiai paieškos sistemoms pasirinkta kalba.

maxItems: 20
Masyvas:minLength: 1maxLength: 50
meta_titleEilutėPrivalomas

Antraštė paieškos sistemoms pasirinkta kalba.

maxLength: 70
public_numberSveikasis skaičiusPrivalomas

Numeris

minimum: 1
publish_atEilutė nullPrivalomas

Publikavimo data

Eilutė:format: "date-time"
publish_timezoneEilutė nullPrivalomas

Laiko juosta

Eilutė:maxLength: 64
published_revision_idEilutė nullPrivalomas

Versija (Paskelbta)

Eilutė:format: "uuid"
schedule_stateEilutė nullPrivalomas

Suplanuotas publikavimas

Apribojimai · Eilutė 1
enum
["armed", "requires_confirmation"]
scheduled_revision_idEilutė nullPrivalomas

Versija (Suplanuota)

Eilutė:format: "uuid"
slugEilutėPrivalomas

URL kelio segmentas pasirinkta kalba.

maxLength: 160
statusEilutėPrivalomas

Šios konkrečios operacijos priimama būsena.

Apribojimai
enum
["draft", "scheduled", "published", "archived"]
titleEilutėPrivalomas

Pavadinimas pasirinkta kalba.

maxLength: 200
updated_atEilutėPrivalomas

Paskutinio atnaujinimo laikas.

format: "date-time"
versionSveikasis skaičiusPrivalomas

Ištekliaus versija lygiagrečių pakeitimų kontrolei.

minimum: 1maximum: 9223372036854775807
metaObjektasPapildomi laukai: NePrivalomas

Atsakymo metaduomenys.

Laukai · meta
request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100
Atsakymo pavyzdys

HTTP būsena

200
Sėkmingas atsakymas Schema
400
Netinkama užklausa
401
Būtinas tapatybės patvirtinimas
403
Prieiga uždrausta
404
Išteklius nerastas
409
Versijų konfliktas
422
Tikrinimo klaida
429
Viršytas užklausų limitas
Kitos HTTP būsenos (7)
405
Metodas neleidžiamas
413
Užklausa per didelė
415
Nepalaikomas formatas
500
Serverio klaida
502
API tinklų sietuvo klaida
503
Paslauga nepasiekiama
504
Baigėsi laukimo laikas

Klaidų katalogas: ErrorResponse

Antraštės

401

WWW-AuthenticateEilutėNeprivalomas

Serverio reikalaujama tapatybės patvirtinimo schema.

405

AllowEilutėNeprivalomas

Šio ištekliaus palaikomi HTTP metodai.

429, 503

Retry-AfterSveikasis skaičiusNeprivalomas

Mažiausias laukimo laikas prieš kartojant, sekundėmis.

minimum: 0