API anahtarından yayınlanmış sürüme: bir bağlantı ekle, en üste taşı, tasarımı değiştir, taslağı doğrula ve yayınla – curl ve jq ile.
Bu örnekte mevcut bir sayfayı tamamen API üzerinden güncellersin: bir bağlantı ekler, en üste taşır, düğme stilini değiştirir, taslağı doğrular ve yayınlarsın. Komutlar curl ve jq bulunan her kabukta çalışır.
1. Bir API anahtarı oluştur
- Panelde “Callback ve API”yi aç
- “+ Yeni anahtar oluştur”a tıkla
- Hem “Sayfalar” hem de “Bağlantılar” için “Yazma”yı seç (bu, okuma erişimini içerir)
- “Anahtar oluştur”a tıkla ve anahtar gizli değerini kopyala
- Anahtar kimliğini listeden kopyala
İki değeri de betikte değil, ortam değişkenleri olarak sakla:
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com" 2. Bir erişim token’ı al
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 15 dakika geçerlidir. Betiğin daha uzun sürüyorsa arada yenisini al.
3. Sayfayı bul
curl -sS "$API/v1/pages" -H "Authorization: Bearer $LH_TOKEN" \
| jq '.items[] | {id, handle, title, status, current_version}' Sayfanın id’sini not al. Bu örnekte 42’dir:
PAGE_ID=42 4. Bir bağlantı ekle
LINK_ID=$(curl -sS -X POST "$API/v1/pages/$PAGE_ID/links" \
-H "Authorization: Bearer $LH_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Sonbahar indirimi","target_url_template":"https://shop.example.com/autumn","enabled":true}' \
| jq -r .id)
echo "Yeni bağlantı: $LINK_ID" API HTTP 201 ve yeni kimlikle yanıt verir. Yeni bağlantılar listenin sonuna gider. Planının bağlantı limitine ulaşıldıysa 409 link_limit_reached alırsın.
5. Bağlantıyı en üste taşı
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]}" Yalnızca öne gelmesi gereken kimlikleri göndermek yeterlidir. Diğer tüm bağlantılar arkalarında sıralarını korur.
6. Taslakta tasarımı değiştir
theme_config PATCH’te tamamen değiştirilir. Bu yüzden önce taslağı okur, yalnızca istediğin değeri değiştirir ve tüm nesneyi geri gönderirsin:
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 rounded, pill ve square değerlerini kabul eder. Diğer theme_config alanları arasında bg_color, text_color, button_color, button_text_color ve background bulunur.
7. Taslağı doğrula
curl -sS "$API/v1/pages/$PAGE_ID/draft/validate" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"valid":true,"issues":[]} valid false ise issues sorunları listeler. Yayınlamadan önce bunları düzelt. Taslağın yayındaki sürümden farklı olup olmadığını GET /v1/pages/$PAGE_ID has_unpublished_changes alanında gösterir – false ise yayınlamayı atlayabilirsin.
8. Yayınla
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"version":8,"checksum":"…"} Ziyaretçiler artık yeni sürümü görür – yeni bağlantı, sıra ve tasarım dahil. page.published için bir webhook’un varsa artık bir teslimat alır. Taslak yayınlanamıyorsa API 409 draft_not_publishable ve details.issues içindeki listeyle yanıt verir.
9. Geri al
Sonucu beğenmezsen önceki sürümü taslağa geri getir ve yeniden yayınla:
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" Bir sürüm numarası yerine current gönderebilirsin: bu, son yayınlamadan bu yana tüm taslak değişikliklerini atar. Geri yükleme tasarımı, şablonu, özel CSS’i, SEO’yu, blokları ve bağlantıları geri getirir; başlık, kullanıcı adı ve görünürlük sürümlenmez.
Sık görülen hatalar
- 400 bad_request
- Content-Type: application/json başlığı eksik. Bu başlık olmadan curl -d farklı bir tür gönderir.
- 401 invalid_token
- Token’ın süresi 15 dakika sonra doldu. Yenisini al.
- 403 insufficient_scope
- Anahtarda bir kapsam eksik, örneğin bağlantılar için “Yazma”.
- Tasarım aniden sıfırlandı
- theme_config yalnızca bir alanla gönderildi ve tüm temanın yerini aldı. Temanın tamamını yeniden gönder ya da son yayınlamadan bu yana tüm taslak değişikliklerini atmak için restore current kullan.
Tüm kodlar Hata biçimi ve hata kodları bölümünde açıklanıyor, tüm uç noktalar Alanlara göre uç noktalar bölümünde listeleniyor.
Bunlar da işine yarayabilir
Bir şey bulamadın mı?
Neye ihtiyacın olduğunu bize anlat, destek ekibimiz sana kişisel olarak yardımcı olsun.