API key से पब्लिश किए वर्ज़न तक: लिंक जोड़ें, उसे सबसे ऊपर ले जाएँ, डिज़ाइन बदलें, ड्राफ़्ट जाँचें और पब्लिश करें – curl और jq के साथ।
इस उदाहरण में आप किसी मौजूदा पेज को पूरी तरह API से अपडेट करते हैं: आप एक लिंक जोड़ते हैं, उसे सबसे ऊपर ले जाते हैं, बटन की शैली बदलते हैं, ड्राफ़्ट जाँचते हैं और उसे पब्लिश करते हैं। कमांड curl और jq वाले किसी भी shell में चलते हैं।
1. API key बनाएँ
- डैशबोर्ड में “Callback और API” खोलें
- “+ नई key बनाएँ” पर क्लिक करें
- “पेज” और “लिंक” दोनों के लिए “लिखना” चुनें (इसमें पढ़ने की पहुँच शामिल है)
- “key बनाएँ” पर क्लिक करें और key secret कॉपी करें
- सूची से key ID कॉपी करें
दोनों वैल्यू environment variables के रूप में रखें, स्क्रिप्ट में नहीं:
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com" 2. Access 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) टोकन 15 मिनट वैध रहता है। अगर आपकी स्क्रिप्ट इससे लंबी चलती है, तो बीच में नया लें।
3. पेज ढूँढें
curl -sS "$API/v1/pages" -H "Authorization: Bearer $LH_TOKEN" \
| jq '.items[] | {id, handle, title, status, current_version}' पेज की id नोट करें। इस उदाहरण में यह 42 है:
PAGE_ID=42 4. लिंक जोड़ें
LINK_ID=$(curl -sS -X POST "$API/v1/pages/$PAGE_ID/links" \
-H "Authorization: Bearer $LH_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"दिवाली सेल","target_url_template":"https://shop.example.com/autumn","enabled":true}' \
| jq -r .id)
echo "New link: $LINK_ID" API HTTP 201 और नई ID के साथ जवाब देता है। नए लिंक सूची के अंत में जाते हैं। अगर आपके प्लान की लिंक सीमा पूरी हो गई है, तो आपको 409 link_limit_reached मिलता है।
5. लिंक को सबसे ऊपर ले जाएँ
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]}" सिर्फ़ उन IDs को भेजना काफ़ी है जिन्हें आगे जाना है। बाकी सभी लिंक उनके पीछे अपना क्रम बनाए रखते हैं।
6. ड्राफ़्ट में डिज़ाइन बदलें
PATCH पर theme_config पूरी तरह बदल जाता है। इसलिए पहले ड्राफ़्ट पढ़ें, सिर्फ़ मनचाही वैल्यू बदलें और पूरा ऑब्जेक्ट वापस भेजें:
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 और square स्वीकार करता है। theme_config के दूसरे फ़ील्ड में bg_color, text_color, button_color, button_text_color और background शामिल हैं।
7. ड्राफ़्ट जाँचें
curl -sS "$API/v1/pages/$PAGE_ID/draft/validate" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"valid":true,"issues":[]} अगर valid false है, तो issues समस्याओं की सूची देता है। पब्लिश करने से पहले उन्हें ठीक करें। ड्राफ़्ट लाइव वर्ज़न से अलग है भी या नहीं, यह GET /v1/pages/$PAGE_ID के has_unpublished_changes फ़ील्ड में दिखता है – अगर यह false है, तो आप पब्लिश करना छोड़ सकते हैं।
8. पब्लिश करें
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"version":8,"checksum":"…"} अब विज़िटर नया वर्ज़न देखते हैं – नए लिंक, क्रम और डिज़ाइन समेत। अगर आपके पास page.published के लिए webhook है, तो उसे अब एक डिलीवरी मिलती है। अगर ड्राफ़्ट पब्लिश नहीं हो सकता, तो API 409 draft_not_publishable और details.issues की सूची के साथ जवाब देता है।
9. पलटें
अगर नतीजा पसंद न आए, तो पिछला वर्ज़न फिर ड्राफ़्ट में लाएँ और दोबारा पब्लिश करें:
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" वर्ज़न नंबर की जगह आप current दे सकते हैं: यह पिछली बार पब्लिश के बाद के सभी ड्राफ़्ट बदलाव छोड़ देता है। बहाल करना डिज़ाइन, टेम्पलेट, कस्टम CSS, SEO, ब्लॉक और लिंक वापस लाता है; शीर्षक, हैंडल और दृश्यता वर्ज़न में नहीं होते।
आम त्रुटियाँ
- 400 bad_request
- Content-Type: application/json हेडर नहीं है। इसके बिना curl -d कोई दूसरा प्रकार भेजता है।
- 401 invalid_token
- 15 मिनट बाद टोकन की अवधि ख़त्म हो गई। नया लें।
- 403 insufficient_scope
- key में कोई स्कोप नहीं है, जैसे लिंक के लिए “लिखना”।
- डिज़ाइन अचानक रीसेट
- theme_config सिर्फ़ एक फ़ील्ड के साथ भेजा गया और उसने पूरी थीम बदल दी। पूरी थीम फिर से भेजें, या पिछली बार पब्लिश के बाद के सभी ड्राफ़्ट बदलाव छोड़ने के लिए restore current इस्तेमाल करें।
सभी कोड त्रुटि फ़ॉर्मैट और त्रुटि कोड में समझाए गए हैं, और सभी एंडपॉइंट हिस्सों के हिसाब से एंडपॉइंट में दिए गए हैं।
यह भी आपके काम आ सकता है
कुछ नहीं मिला?
हमें बताएँ कि आपको क्या चाहिए, और हमारी सपोर्ट टीम ख़ुद आपकी मदद करेगी।