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
{
"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ėPrivalomasStraipsnis
format:"uuid"
Užklausos parametrai
localeEilutėPrivalomasŠiai užklausai pasirinkta kalba.
minLength:2maxLength:35Apribojimai
pattern"^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$"
Ši operacija nepriima JSON turinio.
Atsakymai
Atsakymas 200
dataObjektasPapildomi laukai: NePrivalomasSėkmingo atsakymo duomenys.
Laukai ·
dataauthor_idEilutė nullPrivalomasAutorius
Eilutė:format:"uuid"comments_modeEilutėPrivalomasKomentarai
Apribojimai
enum["inherit", "open", "closed"]
content_htmlEilutėPrivalomasTurinys
maxLength:50000cover_altEilutėPrivalomasAlternatyvusis tekstas
maxLength:250cover_captionEilutėPrivalomasNuotraukos antraštė
maxLength:500cover_media_idEilutė nullPrivalomasViršelio nuotrauka
Eilutė:format:"uuid"draft_revision_idEilutėPrivalomasJuodraščio versija
format:"uuid"excerptEilutėPrivalomasĮžanga
maxLength:1000first_published_atEilutė nullPrivalomasPirmą kartą paskelbta
Eilutė:format:"date-time"idEilutėPrivalomasIštekliaus identifikatorius; išsaugokite grąžintą išraišką.
format:"uuid"last_published_atEilutė nullPrivalomasPaskutinį kartą paskelbta
Eilutė:format:"date-time"localeEilutėPrivalomasŠiai užklausai pasirinkta kalba.
minLength:2maxLength:35Apribojimai
pattern"^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$"
meta_descriptionEilutėPrivalomasAprašymas paieškos sistemoms pasirinkta kalba.
maxLength:160meta_keywordsMasyvas <Eilutė> PrivalomasRaktažodžiai paieškos sistemoms pasirinkta kalba.
maxItems:20Masyvas:minLength:1maxLength:50meta_titleEilutėPrivalomasAntraštė paieškos sistemoms pasirinkta kalba.
maxLength:70public_numberSveikasis skaičiusPrivalomasNumeris
minimum:1publish_atEilutė nullPrivalomasPublikavimo data
Eilutė:format:"date-time"publish_timezoneEilutė nullPrivalomasLaiko juosta
Eilutė:maxLength:64published_revision_idEilutė nullPrivalomasVersija (Paskelbta)
Eilutė:format:"uuid"schedule_stateEilutė nullPrivalomasSuplanuotas publikavimas
Apribojimai · Eilutė 1
enum["armed", "requires_confirmation"]
scheduled_revision_idEilutė nullPrivalomasVersija (Suplanuota)
Eilutė:format:"uuid"slugEilutėPrivalomasURL kelio segmentas pasirinkta kalba.
maxLength:160statusEilutėPrivalomasŠios konkrečios operacijos priimama būsena.
Apribojimai
enum["draft", "scheduled", "published", "archived"]
titleEilutėPrivalomasPavadinimas pasirinkta kalba.
maxLength:200updated_atEilutėPrivalomasPaskutinio atnaujinimo laikas.
format:"date-time"versionSveikasis skaičiusPrivalomasIštekliaus versija lygiagrečių pakeitimų kontrolei.
minimum:1maximum:9223372036854775807
metaObjektasPapildomi laukai: NePrivalomasAtsakymo metaduomenys.
Laukai ·
metarequest_idEilutėPrivalomasPrašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.
minLength:1maxLength:100
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ėNeprivalomasServerio reikalaujama tapatybės patvirtinimo schema.
405
AllowEilutėNeprivalomasŠio ištekliaus palaikomi HTTP metodai.
429, 503
Retry-AfterSveikasis skaičiusNeprivalomasMažiausias laukimo laikas prieš kartojant, sekundėmis.
minimum:0