API کلید سے شائع شدہ ورژن تک: لنک شامل کریں، اسے سب سے اوپر لے جائیں، ڈیزائن بدلیں، ڈرافٹ جانچیں اور شائع کریں – curl اور jq کے ساتھ۔
اس مثال میں آپ ایک موجودہ صفحے کو مکمل طور پر API کے ذریعے اپ ڈیٹ کرتے ہیں: آپ ایک لنک شامل کرتے ہیں، اسے سب سے اوپر لے جاتے ہیں، بٹن کا انداز بدلتے ہیں، ڈرافٹ جانچتے ہیں اور اسے شائع کرتے ہیں۔ کمانڈز curl اور jq والے کسی بھی شیل میں چلتی ہیں۔
1. API کلید بنائیں
- ڈیش بورڈ میں “کال بیک اور API” کھولیں
- “+ نئی کلید بنائیں” پر کلک کریں
- “صفحات” اور “لنکس” دونوں کے لیے “لکھنا” چنیں (اس میں پڑھنے کی رسائی شامل ہے)
- “کلید بنائیں” پر کلک کریں اور کلید کا سیکرٹ کاپی کریں
- فہرست سے کلید ID کاپی کریں
دونوں قدریں انوائرنمنٹ ویری ایبلز کے طور پر محفوظ کریں، اسکرپٹ میں نہیں:
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com" 2. ایکسیس ٹوکن حاصل کریں
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":"Autumn sale","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 کے لیے ویب ہُک ہے تو اب اسے ایک ڈیلیوری ملتی ہے۔ اگر ڈرافٹ شائع نہ ہو سکے تو 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
- کلید میں کوئی اسکوپ نہیں ہے، مثلاً لنکس کے لیے “لکھنا”۔
- ڈیزائن اچانک ری سیٹ ہو گیا
- theme_config صرف ایک فیلڈ کے ساتھ بھیجا گیا اور اس نے پوری تھیم بدل دی۔ مکمل تھیم دوبارہ بھیجیں، یا آخری اشاعت کے بعد سے ڈرافٹ کی تمام تبدیلیاں رد کرنے کے لیے restore current استعمال کریں۔
تمام کوڈز کی وضاحت خرابی کا فارمیٹ اور خرابی کوڈز میں ہے، اور تمام اینڈپوائنٹس حصوں کے لحاظ سے اینڈپوائنٹس میں درج ہیں۔
یہ بھی آپ کے کام آ سکتا ہے
کچھ نہیں ملا؟
ہمیں بتائیں کہ آپ کو کیا چاہیے، ہماری سپورٹ ٹیم ذاتی طور پر آپ کی مدد کرے گی۔