Preskoči na sadržaj
ShopentlyLearn

Dohvati — CMS stranice

Pročitajte podatke iz „CMS stranice“. Rezultat ovisi o parametrima ove radnje.

GET/api/v1/pages/{page_id}

Autentifikacija
Bearer
Dostupno od
STANDARD
Potrebne ovlasti
content.page:read

Primjeri koda

Primjer zahtjeva

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/pages/example

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/pages/example');
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/pages/example', 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))

Primjer odgovora 200

JSON
{
  "data": {
    "body_html": "<p>Example</p>",
    "created_at": "2026-01-01T12:00:00Z",
    "id": "example",
    "is_available": true,
    "market_scope": "all",
    "meta_description": "example",
    "meta_keywords": [
      "example"
    ],
    "meta_title": "example",
    "number": "example",
    "published": false,
    "slug": "example",
    "title": "example",
    "updated_at": "2026-01-01T12:00:00Z",
    "version": 1
  },
  "meta": {
    "locale": "en",
    "market_code": "PL",
    "market_id": "example",
    "request_id": "example"
  }
}

Kako funkcionira

  • Upisi stranica obuhvaćaju naslov, slug, HTML sadržaj, SEO metapodatke, stanje objave i podržani tržišni opseg.
  • Pri održavanju prevedenog sadržaja izričito odaberite jezik.
  • PATCH mijenja samo dostavljena polja.
  • Null je dopušten samo kada shema i kontekst dopuštaju uklanjanje vrijednosti.
  • Postojeća pravila objave, provjere sadržaja i plana ostaju na snazi.

Parametri

Parametri putanje

page_idNiz znakovaObvezno

Identifikator CMS stranice.

Ograničenja
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
Primjer: "example"

Parametri upita

localeNiz znakova nullNeobavezno

Jezik odabran za ovaj zahtjev.

Niz znakova:minLength: 2maxLength: 20
market_idNiz znakova nullNeobavezno

Identifikator tržišta vraćen s krajnje točke konteksta.

Ograničenja · Niz znakova 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
market_codeNiz znakova nullNeobavezno

Kod tržišta vraćen s krajnje točke konteksta.

Niz znakova:minLength: 1maxLength: 16

Ova operacija ne prihvaća JSON tijelo.

Odgovori

Odgovor 200

dataPageDetailData Obvezno

Podaci uspješnog odgovora.

Polja · data
body_htmlNiz znakova nullObvezno

Sadržaj stranice u HTML-u.

created_atNiz znakovaObvezno

Vrijeme izrade.

format: "date-time"
idNiz znakovaObvezno

Identifikator resursa; sačuvajte ga u vraćenom obliku.

is_availableLogička vrijednostObvezno

Je li stavka dostupna u ovom kontekstu.

market_scopeNiz znakovaObvezno

Odnosi li se resurs na sva ili na odabrana tržišta.

Ograničenja
enum
["all", "selected"]
meta_descriptionNiz znakova nullObvezno

Opis za tražilice na odabranom jeziku.

meta_keywordsPolje vrijednosti <Niz znakova> nullObvezno

Ključne riječi za tražilice na odabranom jeziku.

meta_titleNiz znakova nullObvezno

Naslov za tražilice na odabranom jeziku.

numberNiz znakovaObvezno

Broj narudžbe ili zahtjeva namijenjen korisniku.

publishedLogička vrijednostObvezno

Je li resurs objavljen.

slugNiz znakova nullObvezno

Dio URL putanje na odabranom jeziku.

titleNiz znakova nullObvezno

Naslov na odabranom jeziku.

updated_atNiz znakovaObvezno

Vrijeme posljednjeg ažuriranja.

format: "date-time"
versionCijeli brojObvezno

Verzija resursa za kontrolu istodobnih upisa.

metaContextPageMeta ContextMeta PageMeta RequestMeta Obvezno

Metapodaci odgovora.

Polja · meta

ContextPageMeta

localeNiz znakovaObvezno

Jezik odabran za ovaj zahtjev.

market_codeNiz znakovaObvezno

Kod tržišta vraćen s krajnje točke konteksta.

market_idNiz znakovaObvezno

Identifikator tržišta vraćen s krajnje točke konteksta.

paginationPagination Obvezno

Metapodaci straničenja pomoću kursora.

request_idNiz znakovaObvezno

Identifikator zahtjeva; u metapodacima odgovora označava HTTP zahtjev.

minLength: 1maxLength: 100

ContextMeta

localeNiz znakovaObvezno

Jezik odabran za ovaj zahtjev.

market_codeNiz znakovaObvezno

Kod tržišta vraćen s krajnje točke konteksta.

market_idNiz znakovaObvezno

Identifikator tržišta vraćen s krajnje točke konteksta.

request_idNiz znakovaObvezno

Identifikator zahtjeva; u metapodacima odgovora označava HTTP zahtjev.

minLength: 1maxLength: 100

PageMeta

paginationPagination Obvezno

Metapodaci straničenja pomoću kursora.

request_idNiz znakovaObvezno

Identifikator zahtjeva; u metapodacima odgovora označava HTTP zahtjev.

minLength: 1maxLength: 100

RequestMeta

request_idNiz znakovaObvezno

Identifikator zahtjeva; u metapodacima odgovora označava HTTP zahtjev.

minLength: 1maxLength: 100
Primjer odgovora

HTTP status

200
Uspješan odgovor Shema
400
Nevaljan zahtjev
401
Potrebna je autentikacija
403
Pristup odbijen
404
Resurs nije pronađen
409
Sukob verzija
422
Provjera nije uspjela
429
Prekoračeno ograničenje zahtjeva
Ostali HTTP statusi (7)
405
Metoda nije dopuštena
413
Zahtjev je prevelik
415
Nepodržan format
500
Pogreška poslužitelja
502
Pogreška API pristupnika
503
Usluga nije dostupna
504
Istek vremena

Katalog pogrešaka: ErrorResponse

Zaglavlja

401

WWW-AuthenticateNiz znakovaNeobavezno

Shema autentifikacije koju zahtijeva poslužitelj.

405

AllowNiz znakovaNeobavezno

HTTP metode koje ovaj resurs podržava.

429, 503

Retry-AfterCijeli brojNeobavezno

Najkraće čekanje prije ponavljanja, u sekundama.

minimum: 0