Mine sisu juurde
ShopentlyLearn

Muuda artiklit

Artiklimustandite ja tõlgete muutmine

PATCH/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_update

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 PATCH \
  --header "Authorization: Bearer ${SHOPENTLY_ACCESS_TOKEN:?}" \
  --header 'Idempotency-Key: learn-6486f38921214552949f30311a1f543f' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "excerpt": "Praktyczny poradnik: porównanie właściwości i wariantów.",
  "expected_version": 1,
  "locale": "pl"
}' \
  --url "${SHOPENTLY_SHOP_URL%/}"/api/v1/addons/shopently.blog/posts/2103ba96-2713-420b-b197-8a008730c851

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 = ['Idempotency-Key: learn-6486f38921214552949f30311a1f543f', 'Content-Type: application/json'];
$headers[] = 'Authorization: Bearer ' . $credential;
$responseHeaders = [];
$handle = curl_init($baseUrl . '/api/v1/addons/shopently.blog/posts/2103ba96-2713-420b-b197-8a008730c851');
curl_setopt_array($handle, [
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    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, '{
  "excerpt": "Praktyczny poradnik: porównanie właściwości i wariantów.",
  "expected_version": 1,
  "locale": "pl"
}');
$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 = {'Idempotency-Key': 'learn-6486f38921214552949f30311a1f543f'}
headers["Authorization"] = 'Bearer' + " " + credential
body = '{\n  "excerpt": "Praktyczny poradnik: porównanie właściwości i wariantów.",\n  "expected_version": 1,\n  "locale": "pl"\n}'
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(
        'PATCH', base_url + '/api/v1/addons/shopently.blog/posts/2103ba96-2713-420b-b197-8a008730c851', 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": {
    "html_normalized": false,
    "id": "2103ba96-2713-420b-b197-8a008730c851",
    "public_number": null,
    "revision_id": "5745799d-723b-4341-9f6e-1a63e50f1d40",
    "status": "draft",
    "version": 2
  },
  "meta": {
    "request_id": "bd4bb9ba-0f29-41c0-858d-3581bb03928f"
  }
}

Ü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_update

Parameetrid

Tee parameetrid

post_idStringKohustuslik

Artikkel

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

Päringu päised

Idempotency-KeyStringKohustuslik

Ühe loogilise muutmistoimingu kordumatu identifikaator.

minLength: 1maxLength: 128
Piirangud
pattern
"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
Näide: "learn-6486f38921214552949f30311a1f543f"

Päringu sisu

application/json · Kohustuslik

ObjektLisaväljad: Ei
author_idString nullValikuline

Autor

String:format: "uuid"
comments_modeStringValikuline

Kommentaarid

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

Sisu

maxLength: 50000
cover_altStringValikuline

Alternatiivtekst

maxLength: 250
cover_captionStringValikuline

Foto allkiri

maxLength: 500
cover_media_idString nullValikuline

Kaanefoto

String:format: "uuid"
excerptStringValikuline

Sissejuhatus

maxLength: 1000
expected_versionTäisarvKohustuslik

Enne muutmist loetud versioon; erinevuse korral lükatakse muudatus tagasi.

minimum: 1maximum: 9223372036854775807
localeStringKohustuslik

Selle päringu jaoks valitud keel.

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

Otsingumootori kirjeldus valitud keeles.

maxLength: 160
meta_keywordsMassiiv <String> Valikuline

Otsingumootori märksõnad valitud keeles.

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

Otsingumootori pealkiri valitud keeles.

maxLength: 70
slugStringValikuline

URL-i teesegment valitud keeles.

maxLength: 160
titleStringValikuline

Pealkiri valitud keeles.

maxLength: 200

Vastused

Vastus 200

dataObjektLisaväljad: EiKohustuslik

Eduka vastuse andmed.

Väljad · data
html_normalizedTõeväärtusKohustuslik

HTML · category-v1

idStringKohustuslik

Ressursi identifikaator; säilita see tagastatud kujul.

format: "uuid"
public_numberTäisarv nullValikuline

Number

Täisarv:minimum: 1
revision_idStringKohustuslik

Versioon

format: "uuid"
statusStringKohustuslik

Selle konkreetse toimingu lubatud olek.

Piirangud
enum
["draft", "scheduled", "published", "archived"]
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