Mine sisu juurde
ShopentlyLearn

Artikkel

Artiklite lugemine ja mustandite eelvaade

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

Autentimine
Bearer
Saadaval alates
BASIC
Nõutav paigaldatud moodul
shopently.blog · Mooduli lepinguversioon 1
Nõutavad õigused
addon.shopently.blog:post_read

Koodinäited

Päringu näide

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))

Vastuse näide 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"
  }
}

Ülevaade

Pea poe blogi HTML-artiklite, fotode, autorite ja otsingumootorite metaandmetega. Salvesta mustandeid, valmista ette tõlkeid ning avalda kohe või valitud ajal kindlas ajavööndis. Halda kommentaare ja modereerimist juhtpaneelis; väline generaator saab kasutada API-t sinu antud õigustega.

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

Parameetrid

Tee parameetrid

post_idStringKohustuslik

Artikkel

format: "uuid"
Näide: "2103ba96-2713-420b-b197-8a008730c851"

Päringu parameetrid

localeStringKohustuslik

Selle päringu jaoks valitud keel.

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

See toiming ei võta vastu JSON-sisu.

Vastused

Vastus 200

dataObjektLisaväljad: EiKohustuslik

Eduka vastuse andmed.

Väljad · data
author_idString nullKohustuslik

Autor

String:format: "uuid"
comments_modeStringKohustuslik

Kommentaarid

Piirangud
enum
["inherit", "open", "closed"]
content_htmlStringKohustuslik

Sisu

maxLength: 50000
cover_altStringKohustuslik

Alternatiivtekst

maxLength: 250
cover_captionStringKohustuslik

Foto allkiri

maxLength: 500
cover_media_idString nullKohustuslik

Kaanefoto

String:format: "uuid"
draft_revision_idStringKohustuslik

Mustandi versioon

format: "uuid"
excerptStringKohustuslik

Sissejuhatus

maxLength: 1000
first_published_atString nullKohustuslik

Esmakordselt avaldatud

String:format: "date-time"
idStringKohustuslik

Ressursi identifikaator; säilita see tagastatud kujul.

format: "uuid"
last_published_atString nullKohustuslik

Viimati avaldatud

String:format: "date-time"
localeStringKohustuslik

Selle päringu jaoks valitud keel.

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

Otsingumootori kirjeldus valitud keeles.

maxLength: 160
meta_keywordsMassiiv <String> Kohustuslik

Otsingumootori märksõnad valitud keeles.

maxItems: 20
Massiiv:minLength: 1maxLength: 50
meta_titleStringKohustuslik

Otsingumootori pealkiri valitud keeles.

maxLength: 70
public_numberTäisarvKohustuslik

Number

minimum: 1
publish_atString nullKohustuslik

Avaldamiskuupäev

String:format: "date-time"
publish_timezoneString nullKohustuslik

Ajavöönd

String:maxLength: 64
published_revision_idString nullKohustuslik

Versioon (Avaldatud)

String:format: "uuid"
schedule_stateString nullKohustuslik

Ajastatud avaldamine

Piirangud · String 1
enum
["armed", "requires_confirmation"]
scheduled_revision_idString nullKohustuslik

Versioon (Ajastatud)

String:format: "uuid"
slugStringKohustuslik

URL-i teesegment valitud keeles.

maxLength: 160
statusStringKohustuslik

Selle konkreetse toimingu lubatud olek.

Piirangud
enum
["draft", "scheduled", "published", "archived"]
titleStringKohustuslik

Pealkiri valitud keeles.

maxLength: 200
updated_atStringKohustuslik

Viimase uuendamise aeg.

format: "date-time"
versionTäisarvKohustuslik

Ressursi versioon samaaegsuse kontrolliks.

minimum: 1maximum: 9223372036854775807
metaObjektLisaväljad: EiKohustuslik

Vastuse metaandmed.

Väljad · meta
request_idStringKohustuslik

Pöördumise identifikaator; vastuse metaandmetes tähistab see HTTP-päringut.

minLength: 1maxLength: 100
Vastuse näide

HTTP-olek

200
Edukas vastus Skeem
400
Vigane päring
401
Autentimine on nõutav
403
Juurdepääs keelatud
404
Ressurssi ei leitud
409
Versioonikonflikt
422
Valideerimine nurjus
429
Päringupiirang ületatud
Muud HTTP olekud (7)
405
Meetod pole lubatud
413
Päring on liiga suur
415
Vormingut ei toetata
500
Serveri viga
502
API lüüsi viga
503
Teenus pole saadaval
504
Ajalimiit ületatud

Veakataloog: ErrorResponse

Päised

401

WWW-AuthenticateStringValikuline

Serveri nõutav autentimisskeem.

405

AllowStringValikuline

Selle ressursi toetatud HTTP-meetodid.

429, 503

Retry-AfterTäisarvValikuline

Minimaalne viivitus enne korduskatset, sekundites.

minimum: 0