API কী থেকে পাবলিশড ভার্সন পর্যন্ত: লিংক যোগ করুন, ওপরে সরান, ডিজাইন বদলান, খসড়া যাচাই করুন আর পাবলিশ করুন – curl আর jq দিয়ে।
এই উদাহরণে আপনি একটি বিদ্যমান পেজ পুরোপুরি API দিয়ে আপডেট করবেন: একটি লিংক যোগ করবেন, সেটি ওপরে সরাবেন, বাটনের স্টাইল বদলাবেন, খসড়া যাচাই করবেন আর পাবলিশ করবেন। কমান্ডগুলো curl আর jq আছে এমন যেকোনো শেলে চলে।
১. API কী তৈরি করুন
- ড্যাশবোর্ডে “কলব্যাক ও API” খুলুন
- “+ নতুন কী তৈরি করুন”-এ ক্লিক করুন
- “পেজ” আর “লিংক” দুটোর জন্যই “লেখা” বেছে নিন (এতে পড়ার অ্যাক্সেসও থাকে)
- “কী তৈরি করুন”-এ ক্লিক করে কী সিক্রেট কপি করুন
- তালিকা থেকে কী আইডি কপি করুন
দুটো মানই এনভায়রনমেন্ট ভেরিয়েবল হিসেবে রাখুন, স্ক্রিপ্টে নয়:
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com" ২. অ্যাক্সেস টোকেন নিন
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) টোকেন ১৫ মিনিট বৈধ থাকে। আপনার স্ক্রিপ্ট এর চেয়ে বেশি সময় চললে মাঝে নতুন একটি নিন।
৩. পেজটি খুঁজুন
curl -sS "$API/v1/pages" -H "Authorization: Bearer $LH_TOKEN" \
| jq '.items[] | {id, handle, title, status, current_version}' পেজের id লিখে রাখুন। এই উদাহরণে এটি 42:
PAGE_ID=42 ৪. লিংক যোগ করুন
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 "নতুন লিংক: $LINK_ID" API HTTP 201 আর নতুন আইডি দিয়ে উত্তর দেয়। নতুন লিংক তালিকার শেষে যায়। আপনার প্ল্যানের লিংক সীমায় পৌঁছে থাকলে 409 link_limit_reached পাবেন।
৫. লিংকটি ওপরে সরান
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]}" যে আইডিগুলো সামনে আসবে শুধু সেগুলো পাঠানোই যথেষ্ট। বাকি সব লিংক তাদের পরে নিজেদের ক্রম বজায় রাখে।
৬. খসড়ায় ডিজাইন বদলান
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।
৭. খসড়া যাচাই করুন
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 হলে পাবলিশ করা বাদ দিতে পারেন।
৮. পাবলিশ করুন
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-এর তালিকা দিয়ে উত্তর দেয়।
৯. আনডু
ফলাফল পছন্দ না হলে আগের ভার্সনটি খসড়ায় ফিরিয়ে এনে আবার পাবলিশ করুন:
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
- ১৫ মিনিট পর টোকেনের মেয়াদ শেষ হয়ে গেছে। নতুন একটি নিন।
- 403 insufficient_scope
- কী-তে একটি স্কোপ নেই, যেমন লিংকের জন্য “লেখা”।
- ডিজাইন হঠাৎ রিসেট হয়ে গেছে
- theme_config শুধু একটি ফিল্ডসহ পাঠানো হয়েছিল এবং পুরো থিম প্রতিস্থাপন করেছে। সম্পূর্ণ থিম আবার পাঠান, অথবা শেষ পাবলিশের পর থেকে খসড়ার সব পরিবর্তন বাতিল করতে restore-এ current ব্যবহার করুন।
সব কোড ব্যাখ্যা করা আছে ত্রুটির ফরম্যাট ও ত্রুটি কোড-এ, আর সব এন্ডপয়েন্টের তালিকা আছে ক্ষেত্র অনুযায়ী API এন্ডপয়েন্ট-এ।
এগুলোও কাজে আসতে পারে
কিছু খুঁজে পাননি?
আপনার কী দরকার তা আমাদের জানান, আমাদের সাপোর্ট টিম ব্যক্তিগতভাবে আপনাকে সাহায্য করবে।