Skip to content
ভাষা: বাংলা

ডেভেলপারদের জন্য API

ধাপে ধাপে: API দিয়ে পেজ আপডেট করুন

হালনাগাদ ১ নভেম্বর, ২০২৬ 2 মিনিটে পড়া

API কী থেকে পাবলিশড ভার্সন পর্যন্ত: লিংক যোগ করুন, ওপরে সরান, ডিজাইন বদলান, খসড়া যাচাই করুন আর পাবলিশ করুন – curl আর jq দিয়ে।

এই উদাহরণে আপনি একটি বিদ্যমান পেজ পুরোপুরি API দিয়ে আপডেট করবেন: একটি লিংক যোগ করবেন, সেটি ওপরে সরাবেন, বাটনের স্টাইল বদলাবেন, খসড়া যাচাই করবেন আর পাবলিশ করবেন। কমান্ডগুলো curl আর jq আছে এমন যেকোনো শেলে চলে।

১. API কী তৈরি করুন

  1. ড্যাশবোর্ডে “কলব্যাক ও API” খুলুন
  2. “+ নতুন কী তৈরি করুন”-এ ক্লিক করুন
  3. “পেজ” আর “লিংক” দুটোর জন্যই “লেখা” বেছে নিন (এতে পড়ার অ্যাক্সেসও থাকে)
  4. “কী তৈরি করুন”-এ ক্লিক করে কী সিক্রেট কপি করুন
  5. তালিকা থেকে কী আইডি কপি করুন

দুটো মানই এনভায়রনমেন্ট ভেরিয়েবল হিসেবে রাখুন, স্ক্রিপ্টে নয়:

ক্রেডেনশিয়াল সেট করুন
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com"

২. অ্যাক্সেস টোকেন নিন

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)

টোকেন ১৫ মিনিট বৈধ থাকে। আপনার স্ক্রিপ্ট এর চেয়ে বেশি সময় চললে মাঝে নতুন একটি নিন।

৩. পেজটি খুঁজুন

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

পেজের id লিখে রাখুন। এই উদাহরণে এটি 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":"শরতের সেল","target_url_template":"https://shop.example.com/autumn","enabled":true}' \
  | jq -r .id)
echo "নতুন লিংক: $LINK_ID"

API HTTP 201 আর নতুন আইডি দিয়ে উত্তর দেয়। নতুন লিংক তালিকার শেষে যায়। আপনার প্ল্যানের লিংক সীমায় পৌঁছে থাকলে 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]}"

যে আইডিগুলো সামনে আসবে শুধু সেগুলো পাঠানোই যথেষ্ট। বাকি সব লিংক তাদের পরে নিজেদের ক্রম বজায় রাখে।

৬. খসড়ায় ডিজাইন বদলান

PATCH-এ theme_config পুরোপুরি প্রতিস্থাপিত হয়। তাই আগে খসড়া পড়ুন, শুধু যে মানটি চান সেটি বদলান আর পুরো অবজেক্ট ফেরত পাঠান:

GET আর 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 নেয় rounded, pill আর square। theme_config-এর অন্যান্য ফিল্ডের মধ্যে আছে bg_color, text_color, button_color, button_text_color আর background।

৭. খসড়া যাচাই করুন

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":[]}

valid যদি false হয়, issues-এ সমস্যাগুলোর তালিকা থাকে। পাবলিশ করার আগে সেগুলো ঠিক করুন। খসড়া লাইভ ভার্সন থেকে আদৌ আলাদা কি না, তা দেখা যায় GET /v1/pages/$PAGE_ID-এর has_unpublished_changes ফিল্ডে – এটি false হলে পাবলিশ করা বাদ দিতে পারেন।

৮. পাবলিশ করুন

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":"…"}

ভিজিটররা এখন নতুন ভার্সন দেখেন – নতুন লিংক, ক্রম আর ডিজাইনসহ। 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 এন্ডপয়েন্ট-এ।

কিছু খুঁজে পাননি?

আপনার কী দরকার তা আমাদের জানান, আমাদের সাপোর্ট টিম ব্যক্তিগতভাবে আপনাকে সাহায্য করবে।

সাপোর্টে যোগাযোগ করুন