Skip to content
زبان: اردو

ڈیولپرز کے لیے API

فروخت اور اپنا ڈیٹا LinkHarbor کو بھیجیں

اپ ڈیٹ: 1 نومبر، 2026 پڑھنے کا وقت: 6 منٹ

سیل کال بیکس سے اپنی شاپ کی فروخت کو لنک کلکس سے ملائیں، اور “Custom (API)” سے اپنے ٹولز کا لائیو ڈیٹا اپنے صفحے پر بھیجیں۔

LinkHarbor باہر سے بھی ڈیٹا قبول کرتا ہے۔ دو صورتوں کے لیے اپنے سیکرٹس والے مخصوص اینڈپوائنٹس ہیں – ان کے لیے آپ کو API کلید کی ضرورت نہیں: سیل کال بیکس آپ کی شاپ کی فروخت کی اطلاع دیتے ہیں، تاکہ آپ اپنے اعداد و شمار میں دیکھ سکیں کہ کس لنک سے آمدنی ہوئی۔ “Custom (API)” انٹیگریشن آپ کے اپنے ٹولز کا لائیو ڈیٹا ویجٹ کے طور پر آپ کے صفحے پر لاتی ہے اور پش نوٹیفکیشنز بھی بھیج سکتی ہے۔

سیل کال بیکس: فروخت کا ملان

کلک ID (lt_click_id)، ملان اور رپورٹنگ آپس میں کیسے جڑتے ہیں، یہ کنورژنز اور فروخت کی نسبت میں بیان کیا گیا ہے؛ یہاں آپ کو ڈویلپرز کے لیے تمام فیلڈز اور جوابات ملیں گے۔ مختصراً: جب LinkHarbor کسی گنے گئے کلک کو http یا https ہدف پر ری ڈائریکٹ کرتا ہے تو وہ پیرامیٹر lt_click_id ساتھ لگا دیتا ہے؛ آپ کی شاپ اسے یاد رکھتی ہے اور خریداری کے بعد واپس بھیجتی ہے۔

کال بیک سیکرٹ بنائیں

“کال بیک اور API” کا صفحہ، “کال بیک سیکرٹس” کارڈ کے ساتھ
کال بیک سیکرٹس آپ “کال بیک اور API” کے صفحے پر بناتے ہیں
  1. “کال بیک اور API” کھولیں
  2. “کال بیک سیکرٹس” کارڈ میں “+ نیا سیکرٹ بنائیں” پر کلک کریں
  3. چاہیں تو اسے نام دیں، مثلاً “شاپ کال بیک”، اور “سیکرٹ بنائیں” پر کلک کریں
  4. سیکرٹ فوراً کاپی کریں – یہ صرف ایک بار دکھایا جاتا ہے
کون
مالکان اور ایڈمنز، Creator Pro سے۔ Creator Free میں لکھا ہوتا ہے “کال بیک سیکرٹس Creator Pro سے دستیاب ہیں۔”
کتنے
ہر ورک اسپیس میں 5 تک سیکرٹس، مثلاً ہر شاپ کے لیے ایک۔
“ترمیم کریں”
نام تبدیل کریں اور اسٹیٹس کو “فعال” یا “غیر فعال” پر سیٹ کریں۔ غیر فعال سیکرٹ کے ساتھ API کال بیکس مسترد کر دیتا ہے۔
“↺ تبدیل کریں”
نیا سیکرٹ بناتا ہے؛ پرانا فوراً کام کرنا بند کر دیتا ہے۔
“آخری کال بیک:”
دکھاتا ہے کہ سیکرٹ آخری بار کب کامیابی سے استعمال ہوا۔

کال بیک بھیجیں

POST /v1/callbacks/sale
curl -X POST https://dock.at-harbor.com/v1/callbacks/sale \
  -H "Content-Type: application/json" \
  -H "X-Callback-Secret: $LH_CALLBACK_SECRET" \
  -d '{
    "click_id": "3f1c2a9e-8d4b-4a51-9f0e-6b7c1d2e3f40",
    "order_id": "A-10023",
    "amount": "49.90",
    "currency": "EUR",
    "occurred_at": "2026-11-01T10:15:00Z"
  }'
# → {"ok":true,"conversion_id":123}
فیلڈضروریمطلب
click_idہاںlt_click_id کی قدر (10–36 حروف)
order_idہاںآپ کا آرڈر نمبر (1–128 حروف)؛ ہر آرڈر نمبر ہر ورک اسپیس میں صرف ایک بار گنا جاتا ہے
amountہاںاعشاری عدد کے طور پر رقم، مثلاً "49.90"؛ منفی قدریں نہیں
currencyہاںتین حرفی کوڈ کے طور پر کرنسی، مثلاً EUR؛ API چھوٹے حروف کو بدل دیتا ہے
occurred_atنہیںخریداری کا وقت (ISO 8601)
amount_base_minor, base_currency, fx_rateنہیںسب سے چھوٹی اکائی میں تبدیل شدہ رقم، بنیادی کرنسی اور شرح تبادلہ، اگر آپ کئی کرنسیوں میں فروخت کرتے ہیں
metaنہیںہموار آبجیکٹ کی شکل میں آپ کا اپنا اضافی ڈیٹا: 1–64 حروف والی 50 تک کلیدیں؛ قدریں متن (500 حروف تک)، عدد، true/false یا null ہوتی ہیں؛ اندرونی آبجیکٹس اور فہرستیں مسترد کر دی جاتی ہیں
workspace_idنہیںآپ کی ورک اسپیس ID؛ اس کے ساتھ API نامعلوم click_id کو 403 کے بجائے 404 کے طور پر بتاتا ہے
جوابمطلب
200 {"ok":true,"conversion_id":…}فروخت محفوظ ہو گئی – یا یہ order_id پہلے ہی محفوظ تھا (تب موجودہ کنورژن کی ID)
403 forbiddenغلط سیکرٹ یا دستخط، یا نامعلوم click_id (workspace_id کے بغیر)
403 secret_inactiveسیکرٹ “غیر فعال” پر سیٹ ہے
404 not_foundنامعلوم click_id (صرف workspace_id اور درست سیکرٹ کے ساتھ)
413 request_too_largeباڈی 1 MB سے بڑی ہے
422 validation_failedکوئی فیلڈ موجود نہیں یا غلط ہے، مثلاً meta میں کوئی قدر جو بہت لمبی یا اندرونی ہو
429 rate_limitedآپ کے IP پتے سے فی منٹ 120 سے زیادہ کال بیکس

اختیاری دستخط

سیکرٹ کے علاوہ آپ X-Callback-Signature ہیڈر بھی بھیج سکتے ہیں۔ اس میں sha256= اور خام باڈی کا hex میں HMAC-SHA256 دستخط ہوتا ہے۔ کلید خود سیکرٹ نہیں بلکہ بائنری شکل میں اس کا SHA-256 ہیش ہے۔ اگر آپ ہیڈر بھیجیں تو اسے درست ہونا چاہیے – ورنہ کال بیک مسترد ہو جاتا ہے۔

دستخط کا حساب (PHP)
<?php
$body = json_encode($payload);
$key  = hash('sha256', getenv('LH_CALLBACK_SECRET'), true); // binary hash of the secret
$sig  = 'sha256=' . hash_hmac('sha256', $body, $key);
// Headers: X-Callback-Secret and X-Callback-Signature: $sig, body: $body

فروخت کہاں نظر آتی ہے

رپورٹ کی گئی فروخت آپ کے اعداد و شمار میں کنورژنز کے طور پر نظر آتی ہے، دیکھیں کنورژنز اور فروخت کو منسوب کرنا۔ API کے ذریعے آپ انہیں read:stats کے ساتھ /v1/stats/…/conversions/breakdown کے تحت پڑھتے ہیں۔

Custom (API): آپ کا اپنا لائیو ڈیٹا

“Custom (API)” انٹیگریشن کے ساتھ کوئی بھی پروگرام جو HTTP ریکویسٹس بھیج سکے – گیم سرور پلگ اِن، بوٹ، cron اسکرپٹ – LinkHarbor کو ڈیٹا بھیج سکتا ہے۔ یہ آپ کے صفحے پر لائیو ویجٹ بن جاتا ہے، اور پش قواعد آپ کے فالوورز کو اطلاع دے سکتے ہیں۔

جوڑیں

  1. ورک اسپیس میں “انٹیگریشنز” کھولیں
  2. “Custom (API)” چنیں اور ایک نام درج کریں
  3. جڑنے کے بعد ڈائیلاگ “انجیسٹ URL” اور “سیکرٹ” (“سیکرٹ دکھائیں” کے ساتھ) دکھاتا ہے
  4. دونوں اپنے ٹول میں محفوظ کریں

انٹیگریشنز Creator Pro سے دستیاب ہیں۔ انجیسٹ URL اور سیکرٹ صرف مالکان اور ایڈمنز دیکھ سکتے ہیں، بعد میں انٹیگریشن کی تفصیلی نظر میں بھی۔ منقطع کر کے دوبارہ جوڑنے سے نیا سیکرٹ بنتا ہے۔ انٹیگریشنز عام طور پر کیسے جوڑی جاتی ہیں، یہ انٹیگریشن جوڑیں میں بیان کیا گیا ہے۔

ڈیٹا بھیجیں

ایونٹ اور ویجٹ کی حالت بھیجیں
curl -X POST "$INGEST_URL" \
  -H "Authorization: Bearer $INGEST_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "event": "player.joined",
    "event_id": "join-2026-11-01T20:01:02Z-steve",
    "data": { "player": "Steve" },
    "state": {
      "type": "game_server",
      "name": "Survival SMP",
      "online": true,
      "players_online": 3,
      "players_max": 20
    }
  }'
# → {"ok":true,"event_id":4711,"duplicate":false,"event_type":"player.joined"}
event
آزادانہ ایونٹ کا نام، مثلاً player.joined۔ یہ چھوٹے حروف میں بدل دیا جاتا ہے اور یہی وہ نام ہے جس پر پش قواعد ردعمل دیتے ہیں۔ event کے بغیر ایونٹ کا نام state.updated ہوتا ہے۔
event_id
اختیاری کلید جو دوہری پروسیسنگ روکتی ہے۔ اگر وہی event_id دوبارہ بھیجی جائے تو LinkHarbor، duplicate: true سے جواب دیتا ہے اور کچھ نہیں کرتا۔
data
پش متن میں پلیس ہولڈرز کی قدریں، مثلاً {player}۔ 40 تک کلیدیں، صرف سادہ قدریں۔
state
ویجٹ کی مکمل حالت۔ یہ پچھلی حالت کو پوری طرح بدل دیتی ہے۔ type کی قدر game_server (گیم سرور کارڈ) یا status (اسٹیٹس کارڈ) ہوتی ہے۔

Authorization: Bearer کے بجائے آپ سیکرٹ X-LinkHarbor-Secret ہیڈر میں بھی بھیج سکتے ہیں۔ ہر IP پتے سے فی منٹ 120 کالز کی اجازت ہے۔ چاہیں تو باڈی پر دستخط کریں: X-LinkHarbor-Signature ہیڈر میں sha256= اور سیکرٹ کو کلید بنا کر خام باڈی کا HMAC-SHA256 دستخط ہوتا ہے۔ اگر آپ اسے بھیجیں تو اسے درست ہونا چاہیے۔

جوابمطلب
200 {"ok":true,…}ایونٹ محفوظ ہو گیا، معلوم event_id کے لیے duplicate: true کے ساتھ
400 invalid_jsonباڈی JSON آبجیکٹ نہیں ہے
401 invalid_secretغلط سیکرٹ یا نامعلوم انجیسٹ URL
401 signature_invalidX-LinkHarbor-Signature باڈی سے میل نہیں کھاتا
413 request_too_largeباڈی 64 KB سے بڑی ہے
422 validation_failedباڈی میں نہ event ہے نہ state
429 rate_limitedآپ کے IP پتے سے فی منٹ 120 سے زیادہ کالز

کچھ نہیں ملا؟

ہمیں بتائیں کہ آپ کو کیا چاہیے، ہماری سپورٹ ٹیم ذاتی طور پر آپ کی مدد کرے گی۔

سپورٹ سے رابطہ کریں