متن پر جائیں
ڈویلپر دستاویزاتفوری آغاز

اپنے سافٹ ویئر میں لائسنس شامل کریں

برآمد محفوظ کرنے کے لیے تقریباً ۱۵ منٹ رکھیں: ترتیب، نمونہ، ایپ میں انضمام اور اجازت مسترد ہونے کی جانچ۔ زبان کے ترقیاتی اوزار پہلے نصب ہوں۔

SDK درخواست، آلے کی شناخت، دستخط، اسناد، کیش اور ہارٹ بیٹ سنبھالتا ہے۔ صارف کی کلید اور کام کا فنکشن دیں؛ دستی HTTP یا activation_id محفوظ کرنا ضروری نہیں۔

  1. انضمام کا پیکیج ڈاؤن لوڈ کریںکنسول میں مصنوعات کی ترتیب بنائیں
  2. برآمد شدہ فائل بنائیںاجازت اور کارروائی کا نتیجہ جانچیں
  3. ایپ میں شامل کریںآغاز، عملی داخلی حصہ، اختتام

1. کنسول میں پیکیج تیار کریں

کھولیں فوری آغاز، سافٹ ویئر کا نام دیں، آلے سے بندھا یا فلوٹنگ لائسنس منتخب کریں اور مصنوعات بنا کر آگے بڑھیں۔ نظام مصنوعات، پالیسی، آزمائشی لائسنس، عوامی key اور 1.0.0 ورژن تیار کرتا ہے۔ زبان منتخب کر کے پیکیج ڈاؤن لوڈ اور کھولیں۔

پیکیج میں دو ترتیبات ہیں:sdk-demo.json آپ کی آزمائش کے لیے لائسنس key ہے؛product.json میں صرف مصنوعات کی ترتیب اور عوامی key ہے، اسے سافٹ ویئر کے ساتھ تقسیم کیا جا سکتا ہے۔

پہلے انضمام میں آلے سے منسلک لائسنس لیں۔ ابتدائی مثال میں export بغیر گنتی ہے۔ موجودہ مصنوعات کی پالیسی اور لائسنس دونوں میں یہی خصوصیت ہونی چاہیے۔

۲۔ ماحول جانچیں اور فائل برآمد کریں

کھولی گئی ڈائریکٹری کی جڑ میں ٹرمینل کھولیں۔ product.json، sdk-demo.json، start.ps1، start.sh اور sdk ساتھ رکھیں۔ زبان اور نظام چن کر کمانڈ چلائیں۔ ماحول کی جانچ فعال سازی نہیں بھیجتی۔

کھولے گئے فولڈر میں چلائیں

کامیابی کی علامت:اختتامی کوڈ ۰، نیچے کا نتیجہ اور نئی licensed-report.txt۔ آزمائشی اختیار ہٹا کر چلائیں: SDK آلے کی سند بحال کرتا ہے، اضافی آلے کی جگہ نہیں لیتا۔

کامیاب نتیجہ
License OK: export is available
Export completed: licensed-report.txt

پہلے گم شدہ ترقیاتی اوزار نصب کریں۔ C/C++ کو libcurl کی ترقیاتی فائلیں بھی چاہئیں؛ MinGW میں -CurlRoot استعمال کریں۔ براؤزر کی تنبیہ قبول کرنے سے SDK سرٹیفکیٹ پر اعتماد نہیں کرتا؛ رن ٹائم کو آزمائشی سرور کا سرٹیفکیٹ معتبر لگنا چاہیے۔

3. صارف کی ایپ میں شامل کریں

پروجیکٹ میں ویب سائٹ کا انسٹالر چلائیں۔ نو زبانیں 0.10.0 استعمال کرتی ہیں۔ تنصیب یا extraction سے پہلے SHA-256 جانچا جاتا ہے۔ ایپ وسائل میں صرف product.json رکھیں۔

موجودہ منصوبے میں شامل کریں

ڈاؤن لوڈ کردہ انضمام بنڈل سے آف لائن نصب کریں

SDK_ROOT کی جگہ نکالے گئے فولڈر کا مکمل راستہ دیں۔

مقامی سورس کی dependency

اس زبان کی قابل اجرا فائل:۔ اس کی عملی کارروائی کا داخلی حصہ اپنے منصوبے میں نقل کریں؛ مکمل کوڈ دیکھیں ←

ایپ کا مرحلہکیا کرنا ہے
آغاز یا فعال سازی کی سکرینproduct.json اور صارف کی کلید دیں۔ فعال سازی کے بعد اگلے آغاز پر خالی کلید دیں۔ GUI ایپ پہلی آن لائن فعال سازی پس منظر میں کرے۔
برآمد کا بٹن، شارٹ کٹ، مینو یا کمانڈبرآمد کا فنکشن RunFeature کو دیں۔ SDK اجازت جانچنے کے بعد ہی اسے چلاتا ہے۔ اسی client کو فعال رکھیں۔
ایپ کا اختتامہارٹ بیٹ روکنے کے لیے client بند کریں۔ فلوٹنگ نشست واپس ہوتی ہے؛ منسلک آلے کا اندراج رہتا ہے۔

۴۔ تصدیق کریں کہ اجازت نہ ہونے پر برآمد رکتی ہے

یقین کریں پالیسی میں licentivo_denied_probe نہیں، پھر کمانڈ چلائیں۔ غیر صفر اختتامی کوڈ آئے اور denied-report.txt نہ بنے۔ ایسا آؤٹ پٹ راستہ لیں جو پہلے موجود نہیں۔

اجازت مسترد ہونے کا امتحان

۵۔ ضرورت ہو تو استعمال کی گنتی شامل کریں

RunMeteredFeature کو فنکشن اور مستقل کام کا ID دیں۔ SDK استعمال محفوظ کرتا، کامیابی کی تصدیق اور کارروائی کی ناکامی پر منسوخ کرتا ہے، اور زیر التوا تصدیق لکھتا ہے۔گنتی والے انضمام اور دوبارہ کوشش دیکھیں ←

آزمائشی ترتیب اور صارف کے لائسنس الگ رکھیں۔

صرف مطلوبہ SDK اور product.json تقسیم کریں۔ ہر صارف کی اپنی کلید ہے۔ sdk-demo.json، کیش، آلے کی سند یا انتظامی API Key شامل نہ کریں۔ خالی cache_path صارف کی نجی ڈائریکٹری چنتا ہے۔

یہ تین شناختیں سمجھیں

نامکون استعمال کرتا ہےمقصد
لائسنس key lv_lic_…سافٹ ویئر خریدارایپ کے اندر فعال کریں۔ آلے کی منتقلی کا عارضی کوڈ lv_tmp_… بھی اسی جگہ درج کریں۔
مصنوعات IDSDK / سافٹ ویئر ڈویلپرتصدیق ہونے والی مصنوعات بتاتا ہے؛ ایپ کے ساتھ تقسیم کر سکتے ہیں۔
انتظامی API keyفروخت کنندہ کا سرورلائسنس اجرا، تجدید اور انتظام خودکار کرتا ہے۔ کلائنٹ فعال کاری میں درکار نہیں۔

Heartbeat کا وقفہ اور آف لائن مدت الگ مقرر کریں لائسنس پالیسیاں۔ میعاد پہلی فعال کاری سے شروع ہے۔ بنیادی انضمام چلنے کے بعد خصوصیات کا کوٹا، فلوٹنگ نشستیں اور آف لائن فائل فعال کاری شامل کریں۔

رجسٹریشن کے بغیر بھی کھول سکتے ہیں ڈیمو آزمائیںدرخواست اور جواب دیکھنے کے لیے۔ خودکار لائسنس اجرا کے لیے پڑھیں انتظامی API key۔

کلائنٹ SDK

فنکشن SDK کو دیں: اجازت کے لیے RunFeature، گنتی کے لیے RunMeteredFeature۔ درخواست، دستخط، کیش اور ہارٹ بیٹ SDK سنبھالتا ہے۔

چلانے سے پہلے

کنسول میں، فوری آغازتیار پیکیج ڈاؤن لوڈ کریں۔ ڈیمو نجی فائل استعمال کرتا ہے sdk-demo.json؛ حقیقی ایپ میں استعمال کریں product.json، صارف کا key آغاز پر دیں۔ نیچے SDK ڈاؤن لوڈ میں عام source ہے، آپ کی مصنوعات کی ترتیب نہیں۔

ترتیب کے ہر فیلڈ کا مطلب کیا ہے؟
product.json · مشترک مصنوعات کی ترتیب
{
  "base_url": "https://www.licentivo.com",
  "product_id": "PRODUCT_UUID",
  "license_key": "",
  "device_name": "Customer app",
  "app_version": "1.0.0",
  "trusted_keys": {
    "SIGNING_KEY_UUID": "BASE64URL_PUBLIC_KEY"
  },
  "timeout_seconds": 10,
  "allow_http": false
}
base_url
لائسنس سرور URL: صرف ڈومین اور پورٹ، بغیر /api/v1۔ مقامی آزمائش میں استعمال کریں https://127.0.0.1:8080۔
product_id
اس ایپ کی مصنوعات ID۔ لائسنس کی مصنوعات سے ملنا ضروری ہے۔
license_key
product.json میں خالی رکھیں۔ OpenWithLicense کو صارف کا key دیں: lv_lic_… یا آلے کی منتقلی کا کوڈ: lv_tmp_…؛ اس سے مشترک ترتیب نہیں بدلتی۔
app_version
موجودہ ورژن major.minor.patch جیسے 1.0.0۔ ورژن کی حد یا دیکھ بھال فعال ہو تو لازم۔ ورژن بدلنے کے بعد دوبارہ آن لائن تصدیق کریں۔
device_name
کنسول میں ظاہر آلے کا نام۔ پہچاننے میں مدد دیتا ہے لیکن آلے کی شناخت طے نہیں کرتا۔
trusted_keys
مصنوعات کے دستخط key ID اور عوامی key۔ ایپ یا مستند اپ ڈیٹ کے ساتھ تقسیم کریں۔ نامعلوم جواب سے ملے عوامی key پر بھروسہ نہ کریں۔
cache_path
چھوڑ دیں یا خالی رکھیں؛ صارف کی نجی ڈائریکٹری خود استعمال ہوگی۔ ایپ کی اپنی نجی جگہ بھی دے سکتے ہیں۔
timeout_seconds
درخواست کی مہلت سیکنڈ میں: پیش فرض 10، حد 1–120۔ عارضی نیٹ ورک خرابی میں زیادہ سے زیادہ دو کوششیں۔
proxy_url
اختیاری پراکسی URL۔ Java میں HTTP پراکسی ہے؛ Node.js میں پراکسی کے لیے undici چاہیے۔ سرٹیفکیٹ کی جانچ جاری رہتی ہے۔
allow_http
حقیقی استعمال میں قدر رکھیں false، HTTPS استعمال کرتے ہوئے۔ مقامی آزمائش میں مقرر کر سکتے ہیں true، مگر صرف localhost یا loopback پتوں کے لیے۔

خود درج کرنا ضروری نہیں device_id؛ SDK مقامی شناخت پڑھتا ہے۔ product.json کے عوامی keys تقسیم ہو سکتے ہیں؛ صارف کے keys اور sdk-demo.json نجی رکھیں۔

اپنی زبان منتخب کریں

یہ کوڈ تقسیم شدہ فائل سے ملتا ہے اور حقیقی برآمد بناتا ہے۔ ماحول کے متغیر فعال سازی کے ان پٹ کی جگہ ہیں؛ اپنا UI لیں اور ایپ کی زندگی تک client فعال رکھیں۔

مشترک تنصیب اور ورژن کی ریلیز

زبان اور پلیٹ فارم منتخب کرکے پروجیکٹ میں چلائیں۔ SDK Licentivo ویب سائٹ سے ملتا ہے؛ GitHub اکاؤنٹ درکار نہیں۔ GitHub اور عوامی registry پر اشاعت ابھی مؤخر ہے۔

سرکاری ویب سائٹ کی تنصیب کمانڈ

ورژن: · ورژن کا پیکیج · SHA-256 چیک سم فائل · ریلیز مینی فیسٹ

Windows x64 اور Linux x64 کی تصدیق ہو چکی ہے۔ حقیقی macOS اور ARM64 جانچ باقی ہے۔ C/C++ بائنری پیکیج پلیٹ فارم اور compiler کے مطابق الگ ہیں۔

نصب شدہ SDK کیسے استعمال کریں
زبانپروجیکٹ میں انضمام
Goimport licentivo "github.com/spf86/licentivo-sdk"
Javaimplementation(files('.licentivo-sdk/java/v0.10.0/licentivo-sdk-0.10.0.jar'))
C / C++find_package(Licentivo 0.10 REQUIRED) · target_link_libraries(MyApp PRIVATE Licentivo::C) / Licentivo::CPP
C#using Licentivo;
Pythonfrom licentivo import Client
Node.jsimport {Client} from '@licentivo/sdk'
Rustuse licentivo::Client;
Rubyrequire 'licentivo'

Go، Rust اور C/C++ کا .licentivo-sdk فولڈر پروجیکٹ میں رکھیں۔ اپ ڈیٹ میں نیا ورژن منتخب کریں؛ product.json اور گاہک کا لائسنس کیش محفوظ رہتے ہیں۔

SDK سے محفوظ کارروائی چلائیں اور اختتام پر client بند کریں۔

Go · کلائنٹ لائسنس
正在加载代码…

فوری آغاز کے اسکرپٹ سے یہ فائل چلائیں ←

دوسرے صارف کی کلید استعمال کریں یا مکمل پروٹوکول کا نمونہ چلائیں

ماحول کا متغیر مقرر کرکے اسکرپٹ آزمائشی اختیار کے بغیر چلائیں۔ لائسنس کی کلید انتظامی API کلید نہیں ہے۔

اس ٹرمینل کا environment variable

کامیابی پر نتیجہ ہے License OK: export is available۔ ایپ کے فعال سازی فارم سے کلید لیں۔ صارف کو ماحول کا متغیر درکار نہیں؛ SDK مشین کی سند محفوظ کرتا ہے۔ کلید لاگ میں نہ لکھیں۔

پیکیج کا مکمل ڈیمو چلائیں

فولڈروں کی ساخت برقرار رکھتے ہوئے ZIP کھولیں۔ رکھیں sdk-demo.json کھولے گئے بنیادی فولڈر میں۔ نظام منتخب کر کے وہاں ٹرمینل کھولیں اور چلائیں:

ٹرمینل کمانڈ

ڈیمو ختم ہونے پر آلہ آزاد ہوتا ہے۔

مکمل پروٹوکول کا نمونہ تفصیلی جانچ کے لیے ہے۔ پہلے start.ps1 یا start.sh چلائیں؛ یہ مثالیں معمول کے اختتام پر آلے کا اندراج برقرار رکھتی ہیں۔

ایپ کی مثال چلائیں

مثالوں میں فعال سازی، حالت، فائل برآمد اور آلہ آزاد کرنا ہے۔ Java، Python، C# میں ونڈو؛ باقی میں ٹرمینل مینو ہے۔ کلید ایک بار دیں، پھر بحالی کے لیے خالی رکھیں۔

ایپ کی مثال · منتخب زبان اور نظام

کامیاب برآمد licensed-report.txt بناتی ہے۔ شمار شدہ برآمد سے پہلے پالیسی میں export کی حد مقرر کریں۔

ونڈو اور مینو کے نمونے بنیادی بکنگ دکھاتے ہیں۔ نیچے RunMeteredFeature استعمال کریں؛ نووں زبانیں زیر التوا تصدیق محفوظ کرتی ہیں۔ کارروائی کے دوران کریش پر اپنا نتیجہ جانچیں۔

اجازت کی حالت کیسے دکھائیں؟

Status اور FeatureStatus مقامی حالت پڑھتے ہیں؛ درخواست یا پس منظر کی تصدیق کا انتظار نہیں۔ اطلاع سے انٹرفیس تازہ کریں۔

حالتمطلب
activeآخری آن لائن تصدیق کامیاب؛ مقامی اجازت درست ہے۔
offline_validمقامی دستخط درست ہیں؛ آغاز کے بعد آن لائن تصدیق کامیاب نہیں ہوئی۔
verification_requiredقابل استعمال دستخط نہیں۔ فعال کریں یا آن لائن تازہ کریں۔
expired / revoked / releasedسرور نے اجازت واضح طور پر مسترد کی ہے۔ محفوظ کارروائیاں روکیں۔
quota_exhaustedاس شمار شدہ درخواست نے حد پار کی؛ باقی اجازت یافتہ خصوصیات دستیاب ہیں۔

allowed مقامی اجازت کی درستگی ہے؛ شمار شدہ خصوصیت کو مقدار پھر بھی مانگنی ہوگی۔ lease_valid_until دستخط شدہ کیش کی مدت ہے، لائسنس کی نہیں۔ code، request_id، retryable خرابی، لاگ شناخت اور دوبارہ کوشش کا امکان بتاتے ہیں۔

طریقوں، callbacks اور پیکیج کے استعمال کے لیے sdk/README.md دیکھیں۔ ویب سائٹ ورژن کے پیکیج اور مشترک انسٹالر دیتی ہے؛ عوامی registry پر اشاعت ابھی مؤخر ہے۔

ایپ میں یہ کہاں رکھیں؟

ایپ کا مرحلہکیا کرنا ہے
آغاز یا key دینے کے بعدOpenWithLicense بلائیں (C++ میں constructor اور Start)۔ SDK فعال کر کے پالیسی کے مطابق heartbeat شروع کرتا ہے۔
بامعاوضہ خصوصیت سے پہلےفنکشن RunFeature کو دیں؛ گنتی کے لیے RunMeteredFeature استعمال کریں
ایپ چلنے کے دورانclient برقرار رکھیں؛ SDK پالیسی کے وقفے پر heartbeat بھیجتا ہے۔
ایپ سے نکلنے پرClose / Dispose / Destroy heartbeat روکتا، فلوٹنگ نشست واپس کرتا اور بندھے آلے کا اندراج رکھتا ہے۔
صارف بندش ختم کرے توDeactivate بلا کر client بند کریں۔

جدول کے نام اعمال بتاتے ہیں؛ اپنی زبان کی مثال کے درست نام استعمال کریں۔ Heartbeat، آف لائن کیش اور آن لائن تازہ کاری کے لیے دیکھیں Heartbeat اور آف لائن رسائی۔

انتظامی API key

آرڈر سسٹم سے خودکار لائسنس جاری کرنے یا سرور سے لائسنس ڈیٹا پڑھنے کے لیے management API Key استعمال کریں۔ یہ آپ کے فروش workspace کی نمائندگی کرتی ہے۔

کلائنٹ کو کون سی key چاہیے؟

شناختی سندکس کو دیںکس کام کے لیے
lv_api_…
انتظامی API key
آپ کا اپنا سرورپروڈکٹ، پالیسی، لائسنس بنائیں؛ آلات، استعمال اور audit دیکھیں
lv_lic_…
لائسنس key
گاہک کا سافٹ ویئرactivation، تصدیق، heartbeat اور آلہ آزاد
مصنوعات کی عوامی keyکلائنٹ کے ساتھ دیںسرور لائسنس دستخط جانچیں

صارف کے سافٹ ویئر میں لائسنس جانچنے کے لیے license key کافی ہے۔ management API Key پورا workspace چلا سکتی ہے؛ اسے صارف کے سافٹ ویئر یا عوامی صفحے میں نہ رکھیں۔

ایک key بنائیں

  1. workspace Owner سے داخل ہو کر کھولیں API Key اور API Key بنائیں دبائیں۔
  2. استعمال کے مطابق نام دیں، مثلاً “آرڈر سسٹم”۔ معلومات کے لیے صرف پڑھنے اور لائسنس بنانے یا بدلنے کے لیے پڑھنے/لکھنے کا اختیار لیں۔ میعاد 1–365 دن۔
  3. محفوظ کرتے ہی مکمل Key نقل کریں؛ یہ صرف ایک بار دکھتی ہے۔ اسے سرور کی نجی ترتیب یا environment variable میں رکھیں۔

پہلی انتظامی درخواست بھیجیں

یہ مثال پروڈکٹ فہرست پڑھتی ہے۔ دیں LICENTIVO_URL لائسنس سرور URL پر اور دیں LICENTIVO_API_KEY ابھی بنائی مکمل key پر، پھر چلائیں:

curl
curl "$LICENTIVO_URL/api/v1/products?limit=25" \
  -H "Authorization: Bearer $LICENTIVO_API_KEY"

یہ Bash/macOS/Linux کی ترکیب ہے۔ Windows PowerShell میں استعمال کریں curl.exe؛ ماحول کا متغیر ہے $env:LICENTIVO_URL اور $env:LICENTIVO_API_KEY۔ نو زبانوں کے مکمل کوڈ یہاں بھی SDK صفحے کا سرور management API Key اختیار۔

کامیابی پر HTTP 200 اور data.items۔ Bearer Key درخواست میں login cookie/CSRF نہیں۔

حقوق اور غیر مؤثر ہونے کا انتظام

صرف پڑھنے کی Key وسائل دیکھتی ہے؛ پڑھنے/لکھنے کی Key مصنوعات، پالیسیاں اور لائسنس بناتی اور بدلتی ہے۔ اکاؤنٹ، ٹیم، نظام ترتیب اور ادائیگی کے لیے مجاز اکاؤنٹ کا login چاہیے، management Key نہیں۔

لیک یا غیر ضروری Key کو console میں منسوخ کریں۔ بدلنے کے لیے Rotate دبائیں؛ پرانی Key فوراً ناکارہ ہو جاتی ہے۔ پھر اپنے سرور کی ترتیب بدلیں۔

پیکیج کا API کوٹا activation، validation، heartbeat اور release گنتا ہے۔ یہاں کی management درخواستیں اس میں شمار نہیں ہوتیں۔

مصنوعات اور لائسنس API

آرڈر کے بعد اپنے سرور سے لائسنس جاری کریں: پہلے پروڈکٹ اور پالیسی، پھر ہر صارف کا لائسنس بنائیں۔ پہلے دو عموماً ایک بار ترتیب دینے ہوتے ہیں۔

پہلے console میں لکھنے کی اجازت والا انتظامی API key۔ نیچے کی مثالوں میں Authorization: Bearer 你的管理Key؛ یہ key فروش کے سرور پر رکھیں۔

بنانے کے بعد کیا رکھوں؟

پروڈکٹ کا data.id بطور product_id اور پالیسی کا بطور policy_id استعمال کریں۔ لائسنس جاری ہونے پر data.id اور data.key محفوظ کریں۔ مکمل کلید صرف ایک بار ملتی ہے؛ فہرست کا key_prefix فعال نہیں کر سکتا۔

activation سے پہلے محدود لائسنس میں،expires_at اور first_activated_at null ہیں۔ پہلی کامیاب activation سے آغاز؛ منتقلی نئی مدت نہیں دیتی۔

مزید انتظام

طریقہ اور راستہ (/api/v1 کے بغیر)مقصد اور درخواست کا متن
GET /productsمصنوعات کی فہرست لیں۔ جواب میں data.items ریکارڈ کی فہرست اور data.total کل تعداد ہے۔
GET /licenses/{id}لائسنس، پہلی activation اور میعاد دیکھیں۔
POST /licenses/{id}/renewتجدید مثلاً {"days":30}؛ اصل لائسنس برقرار۔
POST /licenses/{id}/revokeمنسوخ؛ درخواست متن {}۔
GET /products/{id}/public-keyslogin کے بغیر پروڈکٹ public keys پڑھیں۔ SDK تقسیم میں معتبر keys مقرر کریں۔
GET /activationsآلے کی بندش اور سیشن دیکھیں۔

فہرست صفحات میں limit=25&offset=0، limit زیادہ سے زیادہ 100۔ دیگر ساخت اور دلائل یہاں OpenAPI فائل؛ لائسنس ماڈل کے لیے بائیں کا متعلقہ موضوع دیکھیں۔

browser login session سے کال کیسے؟

browser cookie سے لکھنے والی درخواست میں X-CSRF-Token چاہیے۔ پہلے GET /api/v1/auth/csrf کریں، پھر data.csrf_token اس header میں دیں۔ Bearer Key کو CSRF نہیں چاہیے۔

SDK لائسنس کالز

زبان اور کارروائی منتخب کرکے SDK کال کریں۔ یہ ایکٹیویشن، ڈیوائس شناخت، دستخط کی تصدیق، کیش، ہارٹ بیٹ اور استعمال کی بکنگ، تصدیق و منسوخی سنبھالتا ہے۔

آغاز یا فعال سازی کی سکرینبامعاوضہ خصوصیت سے پہلےایپ سے نکلنے پر

SDK کال

مثالوں میں client آغاز سے آتا ہے، path برآمد کا راستہ اور exportReport / export_report آپ کا فنکشن ہے۔ گنتی کا jobID ایپ میں محفوظ مستقل ID ہے۔

مکمل کوڈ دیکھیں ← · فوری آغاز · گنتی والے انضمام اور دوبارہ کوشش دیکھیں ←

کاروباری کوڈ callback میں رکھیں۔

SDK صرف اجازت پر کام چلاتا ہے۔ RunFeature استعمال نہیں کاٹتا؛ RunMeteredFeature بک کرتا، کامیابی کی تصدیق اور ناکامی پر منسوخ کرتا ہے۔ اصل کام دہرانے سے صرف تصدیق پوری ہوتی ہے، مکمل کاروبار دوبارہ نہیں چلتا۔

HTTP درخواستیں اور جوابات کھولیں (کسٹم کلائنٹ یا خرابی کی جانچ)

نیچے دیا گیا پروٹوکول SDK میں موجود ہے۔ ان نو SDK کو استعمال کرنے والی ایپس کو اسے دوبارہ نافذ کرنے کی ضرورت نہیں۔

پہلی فعال کاریاجرا کا heartbeatاصل کام سے پہلے اجازت جانچیںآلہ بدلنے سے پہلے علیحدگی

آٹھ انٹرفیس لائسنس اور آلے کی شناخت جانچتے ہیں؛ لاگ ان کوکی، CSRF یا انتظامی کلید نہیں چاہیے۔ اختتام پر فلوٹنگ سیشن چھوڑا جاتا ہے؛ منسلک آلے کا اندراج رہتا ہے۔

activation، تصدیق یا heartbeat کے بعد اجازت کیسے جانچیں؟

  1. HTTP 200 دیکھ کر پڑھیں data.activation_id۔ آئندہ تصدیق، heartbeat، گنتی اور علیحدگی میں یہ ID دیں۔
  2. پہلے معتبر پروڈکٹ public key سے تصدیق data.lease کی تصدیق کے بعد پروڈکٹ، آلہ، میعاد اور خصوصیات ملائیں۔ صرف payload کو JSON میں پڑھنا لائسنس کی صحت ثابت نہیں کرتا۔
  3. SDK پہلے دو مرحلے خود کرتا ہے۔ RunFeature کارروائی سے پہلے اجازت جانچتا ہے؛ RunMeteredFeature گنتی کی بکنگ، تصدیق اور منسوخی سنبھالتا ہے۔

SDK دستخط شدہ cache رکھتا اور پالیسی کے مطابق heartbeat بھیجتا ہے۔ صرف timeout پر درست cache نہ مٹائیں۔ واضح منسوخی، release یا میعاد ختم ہونے پر SDK کے نتیجے کے مطابق محفوظ خصوصیات روکیں۔

decoded payload فیلڈ کا مطلب؟

نیچے مثال صرف ڈیٹا سمجھانے کے لیے ہے۔ خود دستخط جانچتے وقت موصولہ payload کے اصل bytes لیں؛ JSON کو دوبارہ ترتیب یا serialize نہ کریں۔

payload مثال

دوبارہ کوشش، heartbeat اور بلنگ

activation، علیحدگی اور گنتی میں لازم Idempotency-Key، زیادہ سے زیادہ 80 حروف، بغیر خالی جگہ۔ نئی کارروائی کے لیے نئی قدر؛ اسی کارروائی کی retry میں اصل قدر اور body رکھیں۔ validation اور heartbeat میں اختیاری؛ SDK اپنے request ID سنبھالتا ہے۔

ہر کامیاب activation، validation، heartbeat یا unbind ایک API کال ہے۔ ناکام یا idempotent replay دوبارہ نہیں گنتا؛ CheckFeature مقامی ہے۔ Consume خصوصیت استعمال کم کرتا، API کوٹا نہیں؛ quantity استعمال کی مقدار ہے۔

heartbeat، آف لائن مدت، permanent مطابق لائسنس پالیسیاں سے کنٹرول ہے۔payload.expires_at موجودہ دستخط شدہ cache کی میعاد ہے، لائسنس کی آخری میعاد نہیں۔ آخری تاریخ لائسنس تفصیل میں دیکھیں۔

Heartbeat اور آف لائن رسائی

دونوں لائسنس پالیسی میں ہیں مگر الگ باتیں ہیں: online سرور سے کتنی بار رابطہ، اور رابطہ نہ ہونے پر کتنی مدت استعمال۔

heartbeat وقفہ: تصدیق کتنی بار

heartbeat وقفہ (سیکنڈ) دیں 600, چلتے وقت SDK تقریباً ہر 10 منٹ بعد ہارٹ بیٹ بھیجتا ہے۔ ہر کامیابی پر تازہ قواعد حاصل ہوتے ہیں اور مقامی لائسنس کیش تازہ ہوتا ہے۔

600–86400 سیکنڈ دیں۔ دیں 0 مقررہ ہارٹ بیٹ بند کرتا ہے۔ ایپ دستی تصدیق یا تازہ کاری کر سکتی ہے۔ شیڈول میں 0–10% اتفاقی تاخیر شامل ہوتی ہے؛ وقفہ 600 سیکنڈ سے کم نہیں ہوتا۔

مشین سے منسلک لائسنس کا کیش درست ہو تو رسائی بحال ہوتی ہے اور پس منظر میں آن لائن تصدیق ہوتی ہے، ٹائمر بند ہو تب بھی۔ لازمی آن لائن اور مشترک نشستوں کے لیے سرور کی تصدیق ضروری ہے۔

آف لائن مدت: سرور نہ ملے تو کتنی دیر چلے

آف لائن وضع کے تین انتخاب؛ heartbeat وقفہ نہیں بدلتا۔

مقررہ مدت کی اجازت
24 گھنٹے رکھنے پر آخری کامیاب online validation سے cache زیادہ سے زیادہ 24 گھنٹے درست ہے۔ اس دوران نیٹ یا سرور عارضی بند ہو تو ایپ چلتی ہے۔ اس کے بعد کامیاب online validation چاہیے۔
آف لائن fallback ممنوع
شروع پر سرور سے کامیاب رابطہ چاہیے؛ ناکام درخواست کو disk cache اجازت نہیں دیتا۔ چلتے وقت مختصر دستخط زیادہ سے زیادہ درست ہیں max(10, 心跳间隔) سیکنڈ؛ ایپ تصدیق اور خصوصیت کی اجازت جانچتی رہے۔
مستقل آف لائن استعمال کی اجازت
مقامی دستخط طویل مدت اور نیٹ ناکامی میں بھی اجازت جانچ سکتے ہیں۔ 30 دن کا لائسنس 30 دن بعد ختم ہوگا؛ مستقل offline اسے دائمی لائسنس نہیں بناتا۔

API استعمال کرتا ہے offline_mode ان تین انتخابوں کی ترتیب ہے limited، none، permanent۔ مقرر آف لائن مدت میں،offline_seconds 1–31536000 سیکنڈ؛ دوسرے دونوں میں 0۔

یہ امتزاج کیسے چلتے ہیں؟

heartbeat / آف لائن ترتیبحقیقی رویہ
10 منٹ / 24 گھنٹےonline ہر 10 منٹ جانچیں۔ offline آخری کامیاب جانچ سے زیادہ سے زیادہ 24 گھنٹے استعمال
10 منٹ / مستقل آف لائنہر 10 منٹ heartbeat کوشش؛ کامیابی پر قواعد تازہ، رابطہ نہ ہو تو درست دستخط۔
0 / مستقل آف لائندرست cache سے آغاز ممکن، مقررہ درخواست نہیں۔ واضح validation یا refresh پھر بھی سرور جاتا ہے
0 / 24 گھنٹےمقرر heartbeat نہیں مگر cache ختم ہوتا ہے۔ ایپ خود تصدیق طے کرے؛ heartbeat بند کرنے سے آف لائن مدت نہیں بڑھتی۔

آف لائن مدت heartbeat وقفے سے زیادہ رکھیں۔ ہر گھنٹے heartbeat مگر صرف 1 منٹ offline میں دستخط اگلے heartbeat سے پہلے ختم ہوتے ہیں؛ ایپ کو الگ validation چاہیے۔

پالیسی بدلنے سے پرانے لائسنس بدلتے ہیں؟

ہاں۔ heartbeat یا offline ترتیب بدلنے پر متعلقہ پرانے اور نئے لائسنس اگلی کامیاب activation، validation یا heartbeat میں نئے قواعد لیتے ہیں۔ SDK دستخط شدہ cache بدلتا ہے۔ اسی Idempotency-Key کی retry اصل نتیجہ ہی دیتی ہے۔

آف لائن آلہ پہلے دستخط شدہ قواعد استعمال کرتا ہے۔ صرف نیٹ واپس آنے سے cache نہیں بدلتا؛ ایک درخواست کامیاب ہونی چاہیے۔ ایپ نیٹ واپسی پر خود refresh کر سکتی ہے۔

یہ اجرا قواعد بدلتا ہے۔

میعاد، آلہ حد اور خصوصیات ہر لائسنس میں محفوظ ہیں۔ پالیسی بدلنے سے خود نہیں بدلتے۔ حقوق لائسنس صفحے میں بدلیں۔

براہ راست آن لائن refresh

یہ طریقے ہمیشہ سرور کی کوشش کرتے ہیں، مستقل offline اور heartbeat بند ہونے پر بھی۔ کامیابی دستخط تازہ کرتی ہے؛ نیٹ ناکامی refresh error دیتی مگر درست cache رکھتی ہے۔ واضح منسوخی یا release پر cache مٹتا ہے۔

زبانکال کرنے کا طریقہ
Goclient.RefreshOnline(ctx)
Javaclient.refreshOnline()
Cln_refresh_online(client)
C++client.RefreshOnline()
C#await client.RefreshOnline()
Pythonclient.refresh_online()
JavaScriptawait client.refreshOnline()

کامیاب refresh ایک activation API درخواست شمار ہوتا ہے۔ پالیسی پہلے بند heartbeat کو کھولے تو اپنی زبان کا StartHeartbeat بلائیں۔ آف لائن آلہ منسوخی یا release کی تازہ خبر نہیں لیتا۔

آلات کی پابندی

ایک آلے کے لائسنس میں ایپ اور cache دوسرے عام کمپیوٹر پر نقل کرنے سے اصل اجازت منتقل نہیں ہوتی۔

SDK کمپیوٹر کیسے پہچانتا ہے؟

ہر آغاز پر SDK نظام شناخت اور product ID سے device hash بناتا ہے۔ سرور کے دستخط میں hash شامل ہے اور مقامی جانچ بھی اسے ملاتی ہے۔

Windows سے MachineGuid، Linux سے machine-id، macOS سے IOPlatformUUID پڑھتا ہے۔ اصل شناخت نہیں، صرف حساب شدہ hash بھیجتا ہے۔ پرانی config کا device_id اصل مقامی شناخت نہیں بدلتا۔

آلے A کی فائلیں B میں نقل ہوں تو کیا ہوگا؟

  1. A فعال ہو کر اپنی hash سے بندھا دستخط پاتا ہے۔
  2. B اپنی شناخت سے الگ hash، A کا cache رد کرتا ہے۔
  3. B کی online activation لازم ہے۔ حد 1 ہو اور A بندھا ہو تو سرور B کو رد کرتا ہے۔

گاہک کمپیوٹر کیسے بدلے؟

صارف پرانا کمپیوٹر کھولے پھر نیا فعال کرے۔ پرانا خراب ہو تو console کے Device activations میں بندھن چھوڑیں۔ کمپیوٹر بدلنے سے لائسنس میعاد دوبارہ شروع نہیں ہوتی۔

نظام دوبارہ نصب کرنے سے شناخت بدل سکتی ہے اور نئے آلے کی activation چاہیے۔ مکمل OS clone، جعلی شناخت یا بدلا client زیادہ مضبوط حملے ہیں؛ صرف device hash ان سے حفاظت کی ضمانت نہیں۔

طویل offline میں A کے پرانے دستخط release فوراً نہیں جانتے؛ کامیاب سرور درخواست حالت بدلتی ہے۔ offline مدت جتنی زیادہ، دور کی پابندی اتنی دیر سے لاگو۔

زبانوں میں مشترک آلہ hash
نو SDK ایک الگورتھم لیں
SHA256(UTF8(
  "LicenovaDevice/v2\n"
  + lower(product_id) + "\n"
  + lower(trim(OS_machine_identity))
))

کوٹا اور بلنگ

آلہ کوٹا استعمال شدہ آلات، API کوٹا کامیاب درخواست گنتا ہے۔ دونوں الگ؛ آلہ تعداد سے API استعمال نہیں نکلتا۔

کون سے عمل API کوٹے میں گنے جاتے ہیں؟

عملگنا جاتا ہے؟
کامیاب activation، تصدیق، heartbeat یا آزادیہر کامیابی ایک؛ ایک دن کے الگ heartbeat الگ گنے جاتے ہیں۔
ناکام درخواست، مثلاً غلط key یا ناکافی کوٹانہیں گنا جاتا
اسی Idempotency-Key سے کوشش اور اصل نتیجہدوبارہ نہیں گنا
مقامی CheckFeature یا signed cache جانچنہیں گنا؛ سرور درخواست نہیں
management API Key سے لائسنس دیکھیں یا جاری کریںاس اجرا API کوٹے میں نہیں

بار بار درخواست سے آلہ بار بار گنا جاتا ہے؟

نہیں۔ ایک دور میں اسی پروڈکٹ کا وہی آلہ ایک بار، مگر ہر کامیاب heartbeat ایک API استعمال ہے۔ release پچھلا استعمال نہیں مٹاتا۔

مثلاً 100 آلات، روز 8 گھنٹے، ماہ 22 دن، ہر 10 منٹ heartbeat۔ صرف heartbeat کی تعداد 105,600 کالز۔ 100 activation اور ہر آلے کی روز ایک زائد تصدیق سے کل 107,900 کالز۔

زائد تصدیق مثال کا مفروضہ؛ اصل تعداد ایپ کے مطابق۔ یہاں آن لائن استعمال کا اندازہ آلات، اجرا مدت اور وقفہ بدلیں۔

پیکیج سے زائد کا خرچ کیسے؟

100,000 API شامل اور اضافی 0.0001 USD ہو: 120,000 کامیاب کال میں 20,000 اضافی، API فیس 2 USD۔

اضافی استعمال admin قیمت پر balance سے کٹتا ہے۔ مجموعی رقم cents میں round، صرف نئی بڑھت کٹتی ہے؛ چھوٹی فی کال قیمت کی بار بار rounding فیس نہیں۔

اضافی آلہ فیس الگ: اضافی تعداد × فی آلہ قیمت۔ سخت حد کے بعد متعلقہ اضافی درخواست رد؛ رقم کم ہو تو اگلی قابل ادائیگی درخواست بھی رد۔ رد درخواست استعمال نہیں بڑھاتی۔

لامحدود API میں اضافی فیس نہیں۔ صفر میں مفت کال نہیں، پہلی کامیاب درخواست سے اضافی قاعدہ۔ کوٹا، قیمت اور حد دیکھیں موجودہ پیکیج، یہ اعداد صرف مثال ہیں۔

پیکیج کی مدت اور کوٹہ کب شروع ہوتے ہیں؟

1، 3، 6 یا 12 ماہ خریدیں۔ کل رقم ایک بار ادا کریں؛ کامیاب ادائیگی پر پیکیج شروع ہو گا۔

فعالیت سے ماہانہ کوٹہ تجدید ہوتا ہے۔ 31 جنوری سے آغاز ہو تو فروری کے آخری دن، پھر 31 مارچ۔ باقی کوٹہ جمع نہیں ہوتا۔

خرید نہ ہو تو administrator اصول UTC ماہ میں۔ آلہ فیس ماہانہ بل، API اضافی فوراً balance سے۔ خرید کے بعد اپنی مدت کا کوٹا، default ساتھ جمع نہیں۔

کوٹا یا رقم کم سے درخواست رد ہو تو پرانے offline دستخط اصل قاعدے پر درست رہتے ہیں۔ فروش console سے آلہ چھوڑ سکتا ہے، runtime API کوٹا نہیں لگتا۔

فلوٹنگ نشستیں

floating لائسنس بیک وقت چلنے والے پروگرام محدود کرتا ہے۔ باری باری استعمال کے لیے موزوں، ہر کمپیوٹر کا الگ لائسنس لازم نہیں۔

مثال

100 کمپیوٹر اور 10 نشست ہوں تو پہلے 10 پروگرام چلتے، 11واں “نشست بھر گئی” لیتا ہے۔ پروگرام اور SDK معمول سے بند ہوں تو دوسری ایپ نشست لے سکتی ہے۔ ایک کمپیوٹر کے دو پروگرام بھی دو نشست لیتے ہیں۔

پالیسی میں دیں

فلوٹنگ نشستیں اور حد 10 چنیں۔ ہارٹ بیٹ وقفہ کم از کم 600 سیکنڈ؛ لیز زیادہ، مثلاً 1200 سیکنڈ۔ ہارٹ بیٹ تجدید کرتا ہے؛ کریش یا رابطہ ٹوٹنے پر لیز ختم ہو تو نشست آزاد ہوتی ہے۔

floating لائسنس lease میں مختصر رابطہ بندش دیتا ہے۔ offline وقت بھی lease تک؛ مستقل offline یا فائل سے مکمل offline پہلی activation نہیں۔

ایپ کوڈ میں مزید کیا سنبھالیں؟

Open/Start اور معمول کا close لیں۔ SDK ہر client کے لیے الگ session ID بناتا ہے۔ ہر export کا نیا client نہیں؛ پروگرام بند ہونے تک ایک رکھیں۔

پرانا floating cache اگلے آغاز پر نشست خود بحال نہیں کرتا۔ lease ختم ہو تو دوبارہ activation اور نشست لینے کے بعد کام کریں۔

آف لائن فعالیت

مکمل offline کمپیوٹر کی پہلی activation کے لیے درخواست فائل اور دستخط شدہ جواب لیں۔ USB سے درخواست online کمپیوٹر تک لے جائیں۔

مراحل

  1. ہدف کمپیوٹر میں SDK ترتیب لیں، OfflineRequest("activate") بلائیں اور فائل رکھیں۔ بنانے کے لیے سرور نہیں چاہیے۔
  2. online کمپیوٹر کے console میں Offline file activation کھولیں، درخواست upload اور جواب download کریں۔ آخری صارف اپنے portal میں بھی کر سکتا ہے۔
  3. جواب واپس لا کر ImportOffline میں اصل درخواست اور جواب دیں۔ SDK دستخط، request ID، ورژن اور آلہ شناخت جانچ کر cache رکھتا ہے۔
  4. CheckFeature سے اجازت دیکھیں۔ offline کمپیوٹر کو online heartbeat نہیں؛ مدت لائسنس پالیسی طے کرتی ہے۔

فائل activation صرف offline کی اجازت والی device-bound لائسنس میں ہے۔ درخواست 30 دن درست۔ عارضی لائسنس سرور منظوری سے شروع ہوتا ہے، کیونکہ جواب import کا وقت سرور نہیں جانتا۔

آف لائن علیحدگی کیسے؟

اصل کمپیوٹر میں OfflineRequest("deactivate") بنائیں۔ SDK پہلے cache مٹاتا؛ پھر فروش یا portal کو دیں۔ مٹانا پرانی نقل نہ ہونے کا ثبوت نہیں۔ فوری روک کے لیے باقاعدہ online جانچ کی پالیسی لیں۔

ہر زبان کے نام

زباندرخواست بنائیںجواب درآمد کریں
GoOfflineRequest("activate") → []byteImportOffline(requestBytes, responseBytes)
JavaofflineRequest("activate") → JSON متنimportOffline(requestText, responseText)
JavaScriptofflineRequest("activate") → objectimportOffline(requestObject, responseObject)
Cln_offline_request(client, "activate")ln_import_offline(client, requestText, responseText)
C++ / C#OfflineRequest("activate") → JSON متنImportOffline (C++ متن، C# bytes)
Pythonoffline_request("activate") → dictimport_offline(requestDict, responseDict)

C میں واپس متن ln_free_string سے آزاد کریں۔ جواب فائل کا اپنا مواد دیں، web API کا بیرونی data wrapper نہیں۔

خصوصیات کے استعمال کی حد

برآمد کی اجازت اور ماہانہ ۵۰۰ برآمد الگ اصول ہیں۔ RunFeature اجازت جانچتا ہے؛ RunMeteredFeature کامیابی کے بعد استعمال کی تصدیق کرتا ہے۔

ماہ میں 500 export دیں

پالیسی میں export اور کوٹا دیں: export، 500، ماہانہ۔ ختم پر اصل قاعدہ رد کرتا ہے۔ اضافی اجازت کی زیادہ حد دیں؛ نظام اضافی استعمال آپ کے آرڈر سسٹم کے لیے گنتا ہے۔

روزانہ اور ماہانہ کوٹا UTC نصف شب reset؛ مجموعی نہیں۔ حد بدلنے سے پچھلا استعمال نہیں مٹتا۔

کامیاب برآمد کے بعد استعمال کی تصدیق

اپنی کارروائی SDK کو دیں۔ نئے کام کے لیے نیا ID؛ دوبارہ کوشش میں وہی ID، خصوصیت اور مقدار رکھیں۔ مختلف پراسیس ایک ID بیک وقت نہ چلائیں۔

زبانگنتی والی کارروائی کی کال
Goclient.RunMeteredFeature(ctx, "export", 1, jobID, exportReport)
Javaclient.runMeteredFeature("export", 1, jobID, this::exportReport)
Node.jsawait client.runMeteredFeature("export", 1, jobID, exportReport)
Pythonclient.run_metered_feature("export", 1, job_id, export_report)
C#await client.RunMeteredFeature("export", 1, jobID, ExportReport)
C++client.RunMeteredFeature("export", 1, jobID, exportReport)
Rustclient.run_metered_feature("export", 1, &job_id, || export_report())?
Rubyclient.run_metered_feature("export", 1, job_id) { export_report }
Cln_run_metered_feature(client, "export", 1, job_id, export_report, context)

پہلے export کوٹا مقرر کریں۔ Windows میں -Metered -OperationID export-job-001 یا Linux/macOS میں --metered --operation-id export-job-001 شامل کریں۔

SDK زیر التوا تصدیق محفوظ کرتا ہے۔

کام کامیاب اور تصدیق ناکام ہو تو دوبارہ کوشش صرف تصدیق کرتی ہے، کام نہیں دہراتی۔ دوران کارروائی کریش خودکار تکرار روکتا ہے۔ مستقل نتیجہ جانچ کر ResolveMeteredFeature سے تصدیق یا منسوخی کریں۔ دور کی گنتی اور مقامی کام ایک ٹرانزیکشن نہیں۔

جب بکنگ کے عمل کو خود کنٹرول کرنا ہو
  1. اس برآمد کے کام کی شناخت بنائیں اور محفوظ کریں۔
  2. ایک مقدار Reserve کریں، pending پر برآمد کریں۔ committed یعنی کام ہوچکا؛ دوبارہ نہ کریں۔
  3. برآمد کامیاب ہو اور نتیجہ محفوظ ہو تو Commit سے استعمال کی تصدیق کریں۔
  4. برآمد مکمل ہونے سے پہلے ناکام ہو تو Cancel سے محفوظ مقدار آزاد کریں؛ استعمال نہیں کٹے گا۔

محفوظ مقدار کی پیش فرض مدت 15 منٹ؛ UTC مدت کی تبدیلی پر پہلے ختم ہوگی۔ API میں reservation_seconds کو 30–3600 سیکنڈ رکھ سکتے ہیں۔

زبانمحفوظ کرناتصدیق / منسوخی
GoReserve(ctx, "export", 1, jobID)Commit / Cancel(ctx, hold.ID, jobID)
Java / Node.jsreserve("export", 1, jobID)commit / cancel(id, jobID)
Cln_reserve(client, "export", 1, jobID)ln_commit / ln_cancel(client, id, jobID)
C++ / C#Reserve("export", 1, jobID)Commit / Cancel(id, jobID)
Pythonreserve("export", 1, jobID)commit / cancel(id, jobID)

جواب کے فیلڈ کیسے سمجھیں؟

فیلڈمطلب
reservation_id / operation_idمحفوظ مقدار اور اصل کام کی شناخت؛ دوبارہ کوشش میں یہی اقدار دیں۔
status / expires_atحالت اور آخری وقت: pending نامکمل، committed استعمال کٹ چکا، canceled آزاد، expired مدت ختم۔
consumption.used / reservedاس مدت میں تصدیق شدہ استعمال / تمام فعال کاموں کی محفوظ مقدار۔
consumption.limit / remainingبنیادی حد / دستیاب بنیادی مقدار۔ remaining = max(0, limit - used - reserved)، اجازت یافتہ اضافی استعمال شامل نہیں۔
consumption.quantity / overageاس کام کی مقدار / بنیادی حد سے زائد تصدیق شدہ استعمال؛ صارف سے رقم وصول نہیں ہوتی۔
consumption.period / reset_atUTC استعمال کی مدت / اگلا ری سیٹ؛ عمر بھر کی حد میں reset_at = null۔

درخواست، جواب اور فیلڈ کی اقسام کے لیے رن ٹائم API میں Reserve، Commit اور Cancel دیکھیں۔

تصدیق کی مہلت ختم ہو تو صرف تصدیق دوبارہ کریں۔

کامیابی کے بعد منسوخ یا دوبارہ برآمد نہ کریں۔ شناخت اور نتیجہ رکھ کر Commit دوبارہ کریں۔ محفوظ مقدار کی مدت ختم ہو تو کام جانچ کے لیے رکھیں۔ دور کا استعمال اور مقامی کام ایک ایٹمی لین دین نہیں بنتے۔

Consume فوراً استعمال شمار کرتا ہے۔ ناکام کام نہ کٹے تو محفوظ مقدار لیں۔ خصوصیت کے تمام شمار آن لائن ہیں اور پلیٹ فارم کے چار قابل بل API عمل میں شامل نہیں۔

ورژن اور دیکھ بھال

دائمی خرید استعمال جاری رکھتی ہے، لازماً ہمیشہ مفت upgrade نہیں۔ maintenance مدت اشاعت کی تاریخ سے قابل استعمال ورژن طے کرتی ہے۔

موجودہ نسخہ خریدیں، سال بھر تازہ نسخے شامل

پالیسی دائمی اور maintenance 365 دن، پہلی activation سے آغاز۔ Software versions میں 1.0.0، 1.1.0 وغیرہ اصل اشاعت تاریخ سے دیں۔

maintenance میں شائع ورژن چلتے رہتے ہیں۔ بعد کے نئے ورژن رد، پرانے چلتے ہیں۔ تجدید پر لائسنس کے Rights and customer میں مدت بڑھائیں۔

ایپ اپنا نسخہ کیسے بھیجتی ہے؟

sdk-demo.json میں app_version مثلاً 1.1.0 دیں۔ maintenance ہو تو پہلے console میں شائع کریں۔ صرف تین نمبروں جیسے 1.2.3 کی شکل ہے۔ فروخت شدہ حقوق بچانے کو اشاعت تاریخ نہیں بدل سکتی۔

صرف 1.x کے لیے 1.0.0–1.999.999 دیں، maintenance کے بغیر۔ update کے بعد online نئے ورژن کا دستخط لیں؛ پرانا cache نئے ورژن کو اجازت نہیں دیتا۔

ڈاؤن لوڈ دیں

ورژن ریکارڈ میں HTTPS download اور SHA-256 دیں۔ portal صرف اہل ورژن دکھاتا ہے۔ یہ link دیتا ہے، installer upload یا خودکار update نصب نہیں کرتا۔

صارف پورٹل

صارف فروش console کے بغیر لائسنس اور آلات دیکھ سکتا اور بندھن کھول سکتا ہے۔

فروش پہلے گاہک کا ای میل جوڑتا ہے

اجرا پر ای میل یا حقوق اور گاہک میں دیں۔ بھیجیں صارف پورٹل صارف کو دیں۔ اس email پر ایک بار کا login link ملتا ہے، 15 منٹ درست۔ login session 24 گھنٹے رہتا ہے۔

صارف صرف اسی email کے لائسنس دیکھتا ہے، پروڈکٹ انتظام، بل یا دوسرے صارف کا ڈیٹا نہیں۔ پہلے administrator ترتیب میں email خدمت لگائیں۔

کمپیوٹر بدلتے وقت اصل key گم ہو تو؟

  1. صارف لائسنس سے متعلق email دیتا اور login link کھولتا ہے۔ یہ صرف login ہے، آلے کا بندھن نہیں کھولتا۔
  2. میرے آلات/سیشن میں پرانا چن کر علیحدگی/منتقلی تصدیق۔
  3. صفحے پر عارضی کوڈ ہے، زیادہ سے زیادہ 15 منٹ اور ایک کامیاب activation کے لیے۔ صارف نقل یا اپنے email پر ارسال منتخب کر سکتا ہے۔
  4. نئے کمپیوٹر میں ایپ کھول کر activation پر عارضی کوڈ دیں۔ SDK کمپیوٹر پہچان کر اصل لائسنس باندھتا اور سند رکھتا ہے۔ restart اور heartbeat سند لیتے ہیں؛ کوڈ ختم ہونے سے فعال کمپیوٹر متاثر نہیں۔

صرف آلہ بندھن بدلتا ہے۔ لائسنس ID، اصل میعاد، خصوصیات، صارف اور استعمال برقرار؛ نیا لائسنس نہیں۔ نئے آلے کو اصل پالیسی اور خالی آلہ جگہ چاہیے۔

سافٹ ویئر فروش کیا بدلے؟

موجودہ SDK لیں۔ license key والا فیلڈ یہ بھی لیتا ہے lv_tmp_ عارضی کوڈ؛ config میں دیں license_key کافی ہے؛ Start، تصدیق اور ہارٹ بیٹ معمول کے مطابق کام کرتے ہیں۔ SDK نجی کیش میں آلے کی سند رکھتا ہے؛cache_path خالی ہو سکتا ہے۔ فائل موجودہ صارف کے ایپ ڈیٹا میں رکھیں؛ انسٹالر کے ساتھ نہ دیں۔

کامیاب تبادلے کے بعد ایپ صاف کر سکتی ہے license_key خالی؛ وہی پروڈکٹ، public keys اور cache_path، restart پر SDK آلے کی سند بحال کرتا ہے۔ صارف کو عارضی کوڈ رکھنا یا دوبارہ لکھنا نہیں۔ تبادلے کی کامیابی تک input رکھیں تاکہ رابطہ ٹوٹنے پر retry ہو سکے۔

کوڈ ختم یا صفحہ بند ہو

portal میں دوبارہ غیر استعمال شدہ کوڈ دیکھیں۔ ختم ہو تو چھوڑے آلے کے پاس View/get activation code سے پھر لیں؛ نئی منتقلی شمار نہیں۔ استعمال شدہ کوڈ دوبارہ یا پرانے ریکارڈ سے بار بار لے کر حد نہیں ٹلتی۔ اگلی منتقلی کے لیے موجودہ فعال آلہ کھولیں۔

نیا کمپیوٹر مکمل آف لائن ہو تو

نئے کمپیوٹر میں عارضی کوڈ دے کر SDK درخواست نکالیں۔ کوڈ ختم ہونے سے پہلے online کمپیوٹر کے portal سے جواب لیں اور نئے میں import کریں۔ پالیسی offline device-bound activation دے۔ اصل مدت برقرار؛ جواب میں آلے کی اجازت اور سند ہے، محفوظ رکھیں۔

علیحدگی کی حد اور پرانا کمپیوٹر

پالیسی میں ہر لائسنس فی UTC ماہ self-release حد دیں۔ صفر نیا portal unbind بند کرتا ہے۔ بار بار click، کوڈ دیکھنا یا ختم غیر استعمال کوڈ دوبارہ لینا اضافی شمار نہیں۔ حد portal اور صارف offline release پر ہے، فروش manual یا اصل license key کی software release پر نہیں۔

دور سے بندھن کھولنا اگلی online جانچ روکتا ہے۔ پرانا offline cache رابطے یا میعاد تک رہتا ہے۔ مستقل cache فوراً دور سے بند نہیں ہو سکتا؛ جلد منسوخی کے لیے online وقفے رکھیں۔ دوسرے کمپیوٹر پر عام config، سند اور cache نقل مختلف شناخت سے رد ہوتی ہے۔

customer portal لائسنس استعمال سنبھالتا ہے۔ سافٹ ویئر آرڈر اور فروخت کی وصولی فروش کے اپنے نظام میں رہتی ہے۔

واقعات کی اطلاعات

activation، تجدید یا منسوخی پر Licentivo آپ کے سرور کو خبر دے کر آرڈر، صارف اور support نظام ملا سکتا ہے۔

اطلاع کا پتہ شامل کریں

لائسنس event notifications میں HTTPS پتہ اور event دیں۔ دستخط secret محفوظ کرنے پر ایک بار دکھتا ہے، وصول سرور میں رکھیں۔ production میں مقامی یا نجی نیٹ پتہ نہیں۔

وصولی کے بعد دستخط جانچیں

X-Licentivo-Timestamp، X-Licentivo-Event اور اصل body پڑھیں۔ timestamp + '.' + event ID + '.' + body پر secret سے HMAC-SHA256 بنائیں۔ sha256= لگا کر X-Licentivo-Signature سے مستقل وقت میں ملائیں۔ موجودہ وقت سے 5 منٹ زیادہ فرق رد کریں۔

event ID سے نقل الگ کریں۔ دستخط جانچ کر transaction یا queue میں مستقل رکھیں پھر 2xx دیں۔ دوبارہ event پر 2xx دیں، آرڈر کارروائی پھر نہیں۔

ناکامی پر کیا ہوتا ہے؟

خودکار 8 کوشش تک، وقفہ بڑھتا ہے۔ console میں HTTP حالت، وقت، خرابی اور دستی re-delivery۔ event اور لائسنس ایک transaction میں؛ restart کے بعد ارسال جاری۔

بنانا، update، تجدید، منسوخی، activation، release، خصوصیت استعمال، جلد میعاد، میعاد اور maintenance بدلنے کے event۔ اطلاع صرف لائسنس prefix، مکمل کلید نہیں۔

اجتماعی کارروائیاں اور پالیسی کی تبدیلی

ایک گروہ کے لائسنس اکٹھے جاری، تجدید یا منسوخ کریں۔ پرانے حقوق بدلنے سے پہلے اثر دیکھیں۔

اجتماعی اجرا یا درآمد

Licenses میں Batch issue/import، پروڈکٹ اور پالیسی لیں۔ ہر سطر نام اور email یا customer,customer_email والا CSV دیں۔ زیادہ سے زیادہ 100 سطر۔ نتیجہ download اور مکمل کوڈ رکھیں۔

ایک شے ناکام تو پوری batch نافذ نہیں۔ timeout پر اسی مواد سے retry؛ request ID اصل نتیجہ دیتا ہے، دوبارہ جاری نہیں۔

اجتماعی تجدید یا منسوخی

بائیں لائسنس منتخب پھر Batch renew یا revoke۔ header کا خانہ موجودہ صفحہ، صفحے بدلنے پر انتخاب رہتا، حد 100۔ filter بدلنا، صفحہ چھوڑنا یا refresh انتخاب مٹاتا ہے۔

تجدید کے اضافی دن دیں۔ غیر فعال کی مدت، فعال کی اصل آخری تاریخ، ختم کی اب سے بڑھتی ہے۔ منسوخی سے پہلے انتخاب کھول کر صارف دیکھیں؛ واپس نہیں ہو سکتی۔ read-only رکن نہیں کر سکتا۔

پرانے لائسنس پر نئی پالیسی لگائیں

  1. لائسنس پالیسی میں نئے قواعد محفوظ کریں۔
  2. ایک پروڈکٹ کے پرانے لائسنس چنیں، پالیسی لگائیں اور نئی پالیسی دیں۔
  3. مدت، آلہ/نشست، خصوصیات، استعمال اور maintenance تبدیلی دیکھیں۔ نشست نئی حد سے زیادہ یا mode بدلنے پر فعال آلہ ہو تو پہلے آلات حل کریں۔
  4. تصدیق پر نافذ کریں۔ اگلی online جانچ نیا دستخط دیتی ہے؛ مکمل offline cache دور سے نہیں بدلتا۔

preview 10 منٹ درست۔ لائسنس یا پالیسی بدلے تو پھر دیکھیں۔ نئے دن اصل پہلی activation سے میعاد گنتے ہیں؛ پہلے تاریخ جانچیں۔

عام سوالات

پہلے خرابی کوڈ، پھر متعلقہ ترتیب دیکھیں۔ جواب کا request_id logs میں عمل تلاش؛ مکمل key logs یا تصویر میں نہیں۔

activation ناکام ہو تو کیا جانچیں؟

سرور تک رسائی، درست product ID، مکمل کوڈ اور اسی پروڈکٹ کا لائسنس دیکھیں۔ سرور نصب ہونے سے پہلے صارف کا کمپیوٹر آپ کا 127.0.0.1 پتہ؛ یہ صارف کا اپنا کمپیوٹر ظاہر کرتا ہے۔

خرابی کوڈپہلا قدم
LICENSE_INVALIDپروڈکٹ ID، مکمل key، لائسنس پروڈکٹ دیکھیں
LICENSE_EXPIREDمیعاد دیکھیں؛ ضرورت پر فروش تجدید کرے
LICENSE_REVOKED
DEVICE_RELEASED
لائسنس منسوخ/آلہ آزاد؛ SDK cache صاف
DEVICE_LIMIT_REACHEDلائسنس جگہ بھری؛ پرانا آزاد یا حد بڑھائیں
API_QUOTA_EXCEEDEDAPI سخت کوٹا ختم؛ دورانیہ/پیکیج دیکھیں
API_BALANCE_INSUFFICIENTAPI زائد بیلنس کم؛ کرنسی/ماحول دیکھیں
MONTHLY_QUOTA_EXCEEDEDپلیٹ فارم آلہ حد؛ لائسنس کی حد الگ
IDEMPOTENCY_CONFLICTایک Key مختلف متن؛ نئے عمل کی نئی Key، retry اصل متن
IDEMPOTENCY_EXPIREDپرانا جواب/بندش غیر مؤثر؛ حالت دیکھیں، نئے عمل کی نئی Key

آف لائن بھی کیوں چلتا ہے؟

offline بھی SDK مقامی دستخط، پروڈکٹ، آلہ، خصوصیات اور میعاد جانچتا ہے؛ صرف سرور درخواست نہیں کرتا۔ cache ختم یا online منسوخی/release کی واضح تردید مزید استعمال روکتی ہے۔

دستخط یا آلے کی تصدیق کیوں ناکام ہے؟

public key کا نہ ملنا، دوسرے پروڈکٹ کا cache یا دوسرے کمپیوٹر پر نقل کردہ cache ناکامی کا سبب بن سکتے ہیں۔ دیکھیں trusted_keys کا key ID اور public key موجودہ پروڈکٹ کے ہیں؛ پھر دیکھیں نظام بدلا یا دوبارہ نصب ہوا ہے۔

SDK بتاتا ہے clock rollback : گھڑی پیچھے تو نہیں؛ درست کر کے آن لائن refresh۔

مکمل خرابی جواب

HTTP 403 · لائسنس منسوخ
{
  "error": {
    "code": "LICENSE_REVOKED",
    "message": "License was revoked"
  },
  "request_id": "99999999-9999-4999-8999-999999999999"
}
فیلڈمطلب اور کارروائی
error.code · stringمستقل error ID سے فیصلہ، message عبارت سے نہیں۔
error.message · stringپڑھنے لائق وجہ، تشخیص یا گاہک پیغام کے لیے۔
request_id · UUIDسرور HTTP ID logs کے لیے؛ لائسنس یا Idempotency-Key نہیں۔

400/415: فیلڈ یا Content-Type درست کریں؛ 401: management Key دیکھیں؛ 403: متعلقہ لائسنس خرابی حل کریں؛ 409: کوٹا، session یا idempotency تضاد دیکھیں؛ 429: Retry-After کے مطابق رکیں۔ timeout یا 5xx کو وقفے سے دہرائیں۔ لکھنے میں اصل ID اور body رکھیں تاکہ دو بار شمار نہ ہو۔

JSON جواب کیسے پڑھیں؟

کامیاب جواب data اور request_id؛ ناکامی پر error.code، error.message اور request_id۔ خرابی کوڈ اور request_id سے اکثر مسئلے ملتے ہیں۔

ای میل، ادائیگی، deployment کے لیے دیکھیں مدد اور مسئلے کی تشخیص۔