Skip to content
Język: Polski

API dla programistów

Krok po kroku: aktualizacja strony przez API

Zaktualizowano 1 listopada 2026 2 min czytania

Od klucza API do opublikowanej wersji: dodaj link, przenieś go na górę, zmień wygląd, sprawdź wersję roboczą i opublikuj – z curl i jq.

W tym przykładzie aktualizujesz istniejącą stronę wyłącznie przez API: dodajesz link, przenosisz go na górę, zmieniasz styl przycisków, sprawdzasz wersję roboczą i ją publikujesz. Polecenia działają w każdej powłoce z curl i jq.

1. Utwórz klucz API

  1. Otwórz w panelu „Callback i API”
  2. Kliknij „+ Utwórz nowy klucz”
  3. Wybierz „Zapis” zarówno dla „Strony”, jak i dla „Linki” (obejmuje to dostęp do odczytu)
  4. Kliknij „Utwórz klucz” i skopiuj sekret klucza
  5. Skopiuj ID klucza z listy

Zapisz obie wartości jako zmienne środowiskowe, nie w skrypcie:

Ustawienie danych dostępowych
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com"

2. Pobierz token dostępu

POST /v1/token
LH_TOKEN=$(curl -sS -X POST "$API/v1/token" \
  -H "Content-Type: application/json" \
  -d "{\"key_id\":\"$LH_KEY_ID\",\"key_secret\":\"$LH_KEY_SECRET\"}" \
  | jq -r .token)

Token jest ważny przez 15 minut. Jeśli Twój skrypt działa dłużej, pobierz w międzyczasie nowy.

3. Znajdź stronę

GET /v1/pages
curl -sS "$API/v1/pages" -H "Authorization: Bearer $LH_TOKEN" \
  | jq '.items[] | {id, handle, title, status, current_version}'

Zanotuj id strony. W tym przykładzie to 42:

bash
PAGE_ID=42
POST /v1/pages/{id}/links
LINK_ID=$(curl -sS -X POST "$API/v1/pages/$PAGE_ID/links" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Jesienna wyprzedaż","target_url_template":"https://shop.example.com/autumn","enabled":true}' \
  | jq -r .id)
echo "Nowy link: $LINK_ID"

API odpowiada kodem HTTP 201 i nowym ID. Nowe linki trafiają na koniec listy. Jeśli limit linków w Twoim planie został osiągnięty, dostajesz 409 link_limit_reached.

POST /v1/pages/{id}/links/reorder
curl -sS -X POST "$API/v1/pages/$PAGE_ID/links/reorder" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"order\":[$LINK_ID]}"

Wystarczy wysłać ID, które mają przejść na początek. Wszystkie pozostałe linki zachowują za nimi swoją kolejność.

6. Zmień wygląd w wersji roboczej

Przy PATCH theme_config jest zastępowany w całości. Dlatego najpierw odczytujesz wersję roboczą, zmieniasz tylko potrzebną wartość i odsyłasz cały obiekt:

GET i PATCH /v1/pages/{id}/draft
THEME=$(curl -sS "$API/v1/pages/$PAGE_ID/draft" -H "Authorization: Bearer $LH_TOKEN" \
  | jq -c '(.theme_config // {}) | .button_style = "pill"')

curl -sS -X PATCH "$API/v1/pages/$PAGE_ID/draft" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"theme_config\":$THEME}"

button_style przyjmuje rounded, pill i square. Inne pola theme_config to między innymi bg_color, text_color, button_color, button_text_color i background.

7. Sprawdź wersję roboczą

GET /v1/pages/{id}/draft/validate
curl -sS "$API/v1/pages/$PAGE_ID/draft/validate" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"valid":true,"issues":[]}

Jeśli valid ma wartość false, issues wymienia problemy. Usuń je przed publikacją. Czy wersja robocza w ogóle różni się od wersji na żywo, pokazuje GET /v1/pages/$PAGE_ID w polu has_unpublished_changes – jeśli ma ono wartość false, możesz pominąć publikację.

8. Opublikuj

POST /v1/pages/{id}/publish
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"version":8,"checksum":"…"}

Odwiedzający widzą teraz nową wersję – z nowym linkiem, kolejnością i wyglądem. Jeśli masz webhook dla page.published, dostaje on teraz dostarczenie. Jeśli wersji roboczej nie da się opublikować, API odpowiada kodem 409 draft_not_publishable i listą w details.issues.

9. Cofnij

Jeśli wynik Ci się nie podoba, przenieś poprzednią wersję z powrotem do wersji roboczej i opublikuj ponownie:

Przywrócenie wersji 7
curl -sS -X POST "$API/v1/pages/$PAGE_ID/versions/7/restore" -H "Authorization: Bearer $LH_TOKEN"
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"

Zamiast numeru wersji możesz podać current: odrzuca to wszystkie zmiany w wersji roboczej od ostatniej publikacji. Przywrócenie przywraca wygląd, szablon, własny CSS, SEO, bloki i linki; tytuł, handle i widoczność nie są wersjonowane.

Częste błędy

400 bad_request
Brakuje nagłówka Content-Type: application/json. Bez niego curl -d wysyła inny typ.
401 invalid_token
Token wygasł po 15 minutach. Pobierz nowy.
403 insufficient_scope
Kluczowi brakuje zakresu, na przykład „Zapis” dla linków.
Wygląd nagle zresetowany
theme_config został wysłany z tylko jednym polem i zastąpił cały motyw. Wyślij ponownie pełny motyw albo użyj restore z current, aby odrzucić wszystkie zmiany w wersji roboczej od ostatniej publikacji.

Wszystkie kody wyjaśnia artykuł Format błędów API i kody błędów, a wszystkie endpointy wymienia artykuł Endpointy API według obszarów.

Nic nie znaleziono?

Napisz, czego potrzebujesz, a nasz zespół pomocy technicznej pomoże Ci osobiście.

Skontaktuj się z pomocą