اپنے سافٹ ویئر میں لائسنس شامل کریں
برآمد محفوظ کرنے کے لیے تقریباً ۱۵ منٹ رکھیں: ترتیب، نمونہ، ایپ میں انضمام اور اجازت مسترد ہونے کی جانچ۔ زبان کے ترقیاتی اوزار پہلے نصب ہوں۔
SDK درخواست، آلے کی شناخت، دستخط، اسناد، کیش اور ہارٹ بیٹ سنبھالتا ہے۔ صارف کی کلید اور کام کا فنکشن دیں؛ دستی HTTP یا activation_id محفوظ کرنا ضروری نہیں۔
- انضمام کا پیکیج ڈاؤن لوڈ کریںکنسول میں مصنوعات کی ترتیب بنائیں
- برآمد شدہ فائل بنائیںاجازت اور کارروائی کا نتیجہ جانچیں
- ایپ میں شامل کریںآغاز، عملی داخلی حصہ، اختتام
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 کی جگہ نکالے گئے فولڈر کا مکمل راستہ دیں۔
اس زبان کی قابل اجرا فائل:۔ اس کی عملی کارروائی کا داخلی حصہ اپنے منصوبے میں نقل کریں؛ مکمل کوڈ دیکھیں ←
| ایپ کا مرحلہ | کیا کرنا ہے |
|---|---|
| آغاز یا فعال سازی کی سکرین | 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_… بھی اسی جگہ درج کریں۔ |
| مصنوعات ID | SDK / سافٹ ویئر ڈویلپر | تصدیق ہونے والی مصنوعات بتاتا ہے؛ ایپ کے ساتھ تقسیم کر سکتے ہیں۔ |
| انتظامی API key | فروخت کنندہ کا سرور | لائسنس اجرا، تجدید اور انتظام خودکار کرتا ہے۔ کلائنٹ فعال کاری میں درکار نہیں۔ |
Heartbeat کا وقفہ اور آف لائن مدت الگ مقرر کریں لائسنس پالیسیاں۔ میعاد پہلی فعال کاری سے شروع ہے۔ بنیادی انضمام چلنے کے بعد خصوصیات کا کوٹا، فلوٹنگ نشستیں اور آف لائن فائل فعال کاری شامل کریں۔
رجسٹریشن کے بغیر بھی کھول سکتے ہیں ڈیمو آزمائیںدرخواست اور جواب دیکھنے کے لیے۔ خودکار لائسنس اجرا کے لیے پڑھیں انتظامی API key۔
کلائنٹ SDK
فنکشن SDK کو دیں: اجازت کے لیے RunFeature، گنتی کے لیے RunMeteredFeature۔ درخواست، دستخط، کیش اور ہارٹ بیٹ SDK سنبھالتا ہے۔
چلانے سے پہلے
کنسول میں، فوری آغازتیار پیکیج ڈاؤن لوڈ کریں۔ ڈیمو نجی فائل استعمال کرتا ہے sdk-demo.json؛ حقیقی ایپ میں استعمال کریں product.json، صارف کا key آغاز پر دیں۔ نیچے SDK ڈاؤن لوڈ میں عام source ہے، آپ کی مصنوعات کی ترتیب نہیں۔
ترتیب کے ہر فیلڈ کا مطلب کیا ہے؟
{
"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 کیسے استعمال کریں
| زبان | پروجیکٹ میں انضمام |
|---|---|
| Go | import licentivo "github.com/spf86/licentivo-sdk" |
| Java | implementation(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; |
| Python | from licentivo import Client |
| Node.js | import {Client} from '@licentivo/sdk' |
| Rust | use licentivo::Client; |
| Ruby | require 'licentivo' |
Go، Rust اور C/C++ کا .licentivo-sdk فولڈر پروجیکٹ میں رکھیں۔ اپ ڈیٹ میں نیا ورژن منتخب کریں؛ product.json اور گاہک کا لائسنس کیش محفوظ رہتے ہیں۔
SDK سے محفوظ کارروائی چلائیں اور اختتام پر client بند کریں۔
正在加载代码…فوری آغاز کے اسکرپٹ سے یہ فائل چلائیں ←
دوسرے صارف کی کلید استعمال کریں یا مکمل پروٹوکول کا نمونہ چلائیں
ماحول کا متغیر مقرر کرکے اسکرپٹ آزمائشی اختیار کے بغیر چلائیں۔ لائسنس کی کلید انتظامی API کلید نہیں ہے۔
کامیابی پر نتیجہ ہے License OK: export is available۔ ایپ کے فعال سازی فارم سے کلید لیں۔ صارف کو ماحول کا متغیر درکار نہیں؛ SDK مشین کی سند محفوظ کرتا ہے۔ کلید لاگ میں نہ لکھیں۔
پیکیج کا مکمل ڈیمو چلائیں
فولڈروں کی ساخت برقرار رکھتے ہوئے ZIP کھولیں۔ رکھیں sdk-demo.json کھولے گئے بنیادی فولڈر میں۔ نظام منتخب کر کے وہاں ٹرمینل کھولیں اور چلائیں:
مکمل پروٹوکول کا نمونہ تفصیلی جانچ کے لیے ہے۔ پہلے start.ps1 یا start.sh چلائیں؛ یہ مثالیں معمول کے اختتام پر آلے کا اندراج برقرار رکھتی ہیں۔
انتظامی مثال کیسے چلاؤں؟
پہلے سرور کے ماحول میں دیں LICENTIVO_URL اور LICENTIVO_API_KEY، لائسنس سرور کا پتہ اور مکمل management Key دیں۔ مثال مصنوعات کی فہرست پڑھ کر HTTP حالت اور جواب دکھاتی ہے۔
HTTP 200 لوٹاتا ہے جس میں data.items، درخواست کامیاب ہوئی۔ 401 پر دیکھیں Key مکمل ہے، اس کی میعاد ختم یا اسے منسوخ تو نہیں کیا گیا۔ Key بنانے اور اجازتوں کے لیے دیکھیں انتظامی API key۔
ایپ کی مثال چلائیں
مثالوں میں فعال سازی، حالت، فائل برآمد اور آلہ آزاد کرنا ہے۔ 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 بنائیں
- workspace Owner سے داخل ہو کر کھولیں API Key اور API Key بنائیں دبائیں۔
- استعمال کے مطابق نام دیں، مثلاً “آرڈر سسٹم”۔ معلومات کے لیے صرف پڑھنے اور لائسنس بنانے یا بدلنے کے لیے پڑھنے/لکھنے کا اختیار لیں۔ میعاد 1–365 دن۔
- محفوظ کرتے ہی مکمل Key نقل کریں؛ یہ صرف ایک بار دکھتی ہے۔ اسے سرور کی نجی ترتیب یا environment variable میں رکھیں۔
پہلی انتظامی درخواست بھیجیں
یہ مثال پروڈکٹ فہرست پڑھتی ہے۔ دیں LICENTIVO_URL لائسنس سرور URL پر اور دیں LICENTIVO_API_KEY ابھی بنائی مکمل key پر، پھر چلائیں:
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-keys | login کے بغیر پروڈکٹ 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 کال کریں۔ یہ ایکٹیویشن، ڈیوائس شناخت، دستخط کی تصدیق، کیش، ہارٹ بیٹ اور استعمال کی بکنگ، تصدیق و منسوخی سنبھالتا ہے۔
مثالوں میں client آغاز سے آتا ہے، path برآمد کا راستہ اور exportReport / export_report آپ کا فنکشن ہے۔ گنتی کا jobID ایپ میں محفوظ مستقل ID ہے۔
مکمل کوڈ دیکھیں ← · فوری آغاز · گنتی والے انضمام اور دوبارہ کوشش دیکھیں ←
SDK صرف اجازت پر کام چلاتا ہے۔ RunFeature استعمال نہیں کاٹتا؛ RunMeteredFeature بک کرتا، کامیابی کی تصدیق اور ناکامی پر منسوخ کرتا ہے۔ اصل کام دہرانے سے صرف تصدیق پوری ہوتی ہے، مکمل کاروبار دوبارہ نہیں چلتا۔
HTTP درخواستیں اور جوابات کھولیں (کسٹم کلائنٹ یا خرابی کی جانچ)
نیچے دیا گیا پروٹوکول SDK میں موجود ہے۔ ان نو SDK کو استعمال کرنے والی ایپس کو اسے دوبارہ نافذ کرنے کی ضرورت نہیں۔
آٹھ انٹرفیس لائسنس اور آلے کی شناخت جانچتے ہیں؛ لاگ ان کوکی، CSRF یا انتظامی کلید نہیں چاہیے۔ اختتام پر فلوٹنگ سیشن چھوڑا جاتا ہے؛ منسلک آلے کا اندراج رہتا ہے۔
activation، تصدیق یا heartbeat کے بعد اجازت کیسے جانچیں؟
- HTTP 200 دیکھ کر پڑھیں
data.activation_id۔ آئندہ تصدیق، heartbeat، گنتی اور علیحدگی میں یہ ID دیں۔ - پہلے معتبر پروڈکٹ public key سے تصدیق
data.leaseکی تصدیق کے بعد پروڈکٹ، آلہ، میعاد اور خصوصیات ملائیں۔ صرف payload کو JSON میں پڑھنا لائسنس کی صحت ثابت نہیں کرتا۔ - SDK پہلے دو مرحلے خود کرتا ہے۔ RunFeature کارروائی سے پہلے اجازت جانچتا ہے؛ RunMeteredFeature گنتی کی بکنگ، تصدیق اور منسوخی سنبھالتا ہے۔
SDK دستخط شدہ cache رکھتا اور پالیسی کے مطابق heartbeat بھیجتا ہے۔ صرف timeout پر درست cache نہ مٹائیں۔ واضح منسوخی، release یا میعاد ختم ہونے پر SDK کے نتیجے کے مطابق محفوظ خصوصیات روکیں۔
decoded payload فیلڈ کا مطلب؟
نیچے مثال صرف ڈیٹا سمجھانے کے لیے ہے۔ خود دستخط جانچتے وقت موصولہ payload کے اصل bytes لیں؛ JSON کو دوبارہ ترتیب یا serialize نہ کریں۔
دوبارہ کوشش، 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 مٹتا ہے۔
| زبان | کال کرنے کا طریقہ |
|---|---|
| Go | client.RefreshOnline(ctx) |
| Java | client.refreshOnline() |
| C | ln_refresh_online(client) |
| C++ | client.RefreshOnline() |
| C# | await client.RefreshOnline() |
| Python | client.refresh_online() |
| JavaScript | await 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 میں نقل ہوں تو کیا ہوگا؟
- A فعال ہو کر اپنی hash سے بندھا دستخط پاتا ہے۔
- B اپنی شناخت سے الگ hash، A کا cache رد کرتا ہے۔
- B کی online activation لازم ہے۔ حد 1 ہو اور A بندھا ہو تو سرور B کو رد کرتا ہے۔
گاہک کمپیوٹر کیسے بدلے؟
صارف پرانا کمپیوٹر کھولے پھر نیا فعال کرے۔ پرانا خراب ہو تو console کے Device activations میں بندھن چھوڑیں۔ کمپیوٹر بدلنے سے لائسنس میعاد دوبارہ شروع نہیں ہوتی۔
نظام دوبارہ نصب کرنے سے شناخت بدل سکتی ہے اور نئے آلے کی activation چاہیے۔ مکمل OS clone، جعلی شناخت یا بدلا client زیادہ مضبوط حملے ہیں؛ صرف device hash ان سے حفاظت کی ضمانت نہیں۔
طویل offline میں A کے پرانے دستخط release فوراً نہیں جانتے؛ کامیاب سرور درخواست حالت بدلتی ہے۔ offline مدت جتنی زیادہ، دور کی پابندی اتنی دیر سے لاگو۔
زبانوں میں مشترک آلہ hash
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 کمپیوٹر تک لے جائیں۔
مراحل
- ہدف کمپیوٹر میں SDK ترتیب لیں، OfflineRequest("activate") بلائیں اور فائل رکھیں۔ بنانے کے لیے سرور نہیں چاہیے۔
- online کمپیوٹر کے console میں Offline file activation کھولیں، درخواست upload اور جواب download کریں۔ آخری صارف اپنے portal میں بھی کر سکتا ہے۔
- جواب واپس لا کر ImportOffline میں اصل درخواست اور جواب دیں۔ SDK دستخط، request ID، ورژن اور آلہ شناخت جانچ کر cache رکھتا ہے۔
- CheckFeature سے اجازت دیکھیں۔ offline کمپیوٹر کو online heartbeat نہیں؛ مدت لائسنس پالیسی طے کرتی ہے۔
فائل activation صرف offline کی اجازت والی device-bound لائسنس میں ہے۔ درخواست 30 دن درست۔ عارضی لائسنس سرور منظوری سے شروع ہوتا ہے، کیونکہ جواب import کا وقت سرور نہیں جانتا۔
آف لائن علیحدگی کیسے؟
اصل کمپیوٹر میں OfflineRequest("deactivate") بنائیں۔ SDK پہلے cache مٹاتا؛ پھر فروش یا portal کو دیں۔ مٹانا پرانی نقل نہ ہونے کا ثبوت نہیں۔ فوری روک کے لیے باقاعدہ online جانچ کی پالیسی لیں۔
ہر زبان کے نام
| زبان | درخواست بنائیں | جواب درآمد کریں |
|---|---|---|
| Go | OfflineRequest("activate") → []byte | ImportOffline(requestBytes, responseBytes) |
| Java | offlineRequest("activate") → JSON متن | importOffline(requestText, responseText) |
| JavaScript | offlineRequest("activate") → object | importOffline(requestObject, responseObject) |
| C | ln_offline_request(client, "activate") | ln_import_offline(client, requestText, responseText) |
| C++ / C# | OfflineRequest("activate") → JSON متن | ImportOffline (C++ متن، C# bytes) |
| Python | offline_request("activate") → dict | import_offline(requestDict, responseDict) |
C میں واپس متن ln_free_string سے آزاد کریں۔ جواب فائل کا اپنا مواد دیں، web API کا بیرونی data wrapper نہیں۔
خصوصیات کے استعمال کی حد
برآمد کی اجازت اور ماہانہ ۵۰۰ برآمد الگ اصول ہیں۔ RunFeature اجازت جانچتا ہے؛ RunMeteredFeature کامیابی کے بعد استعمال کی تصدیق کرتا ہے۔
ماہ میں 500 export دیں
پالیسی میں export اور کوٹا دیں: export، 500، ماہانہ۔ ختم پر اصل قاعدہ رد کرتا ہے۔ اضافی اجازت کی زیادہ حد دیں؛ نظام اضافی استعمال آپ کے آرڈر سسٹم کے لیے گنتا ہے۔
روزانہ اور ماہانہ کوٹا UTC نصف شب reset؛ مجموعی نہیں۔ حد بدلنے سے پچھلا استعمال نہیں مٹتا۔
کامیاب برآمد کے بعد استعمال کی تصدیق
اپنی کارروائی SDK کو دیں۔ نئے کام کے لیے نیا ID؛ دوبارہ کوشش میں وہی ID، خصوصیت اور مقدار رکھیں۔ مختلف پراسیس ایک ID بیک وقت نہ چلائیں۔
| زبان | گنتی والی کارروائی کی کال |
|---|---|
| Go | client.RunMeteredFeature(ctx, "export", 1, jobID, exportReport) |
| Java | client.runMeteredFeature("export", 1, jobID, this::exportReport) |
| Node.js | await client.runMeteredFeature("export", 1, jobID, exportReport) |
| Python | client.run_metered_feature("export", 1, job_id, export_report) |
| C# | await client.RunMeteredFeature("export", 1, jobID, ExportReport) |
| C++ | client.RunMeteredFeature("export", 1, jobID, exportReport) |
| Rust | client.run_metered_feature("export", 1, &job_id, || export_report())? |
| Ruby | client.run_metered_feature("export", 1, job_id) { export_report } |
| C | ln_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 شامل کریں۔
کام کامیاب اور تصدیق ناکام ہو تو دوبارہ کوشش صرف تصدیق کرتی ہے، کام نہیں دہراتی۔ دوران کارروائی کریش خودکار تکرار روکتا ہے۔ مستقل نتیجہ جانچ کر ResolveMeteredFeature سے تصدیق یا منسوخی کریں۔ دور کی گنتی اور مقامی کام ایک ٹرانزیکشن نہیں۔
جب بکنگ کے عمل کو خود کنٹرول کرنا ہو
- اس برآمد کے کام کی شناخت بنائیں اور محفوظ کریں۔
- ایک مقدار Reserve کریں، pending پر برآمد کریں۔ committed یعنی کام ہوچکا؛ دوبارہ نہ کریں۔
- برآمد کامیاب ہو اور نتیجہ محفوظ ہو تو Commit سے استعمال کی تصدیق کریں۔
- برآمد مکمل ہونے سے پہلے ناکام ہو تو Cancel سے محفوظ مقدار آزاد کریں؛ استعمال نہیں کٹے گا۔
محفوظ مقدار کی پیش فرض مدت 15 منٹ؛ UTC مدت کی تبدیلی پر پہلے ختم ہوگی۔ API میں reservation_seconds کو 30–3600 سیکنڈ رکھ سکتے ہیں۔
| زبان | محفوظ کرنا | تصدیق / منسوخی |
|---|---|---|
| Go | Reserve(ctx, "export", 1, jobID) | Commit / Cancel(ctx, hold.ID, jobID) |
| Java / Node.js | reserve("export", 1, jobID) | commit / cancel(id, jobID) |
| C | ln_reserve(client, "export", 1, jobID) | ln_commit / ln_cancel(client, id, jobID) |
| C++ / C# | Reserve("export", 1, jobID) | Commit / Cancel(id, jobID) |
| Python | reserve("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_at | UTC استعمال کی مدت / اگلا ری سیٹ؛ عمر بھر کی حد میں 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 گم ہو تو؟
- صارف لائسنس سے متعلق email دیتا اور login link کھولتا ہے۔ یہ صرف login ہے، آلے کا بندھن نہیں کھولتا۔
- میرے آلات/سیشن میں پرانا چن کر علیحدگی/منتقلی تصدیق۔
- صفحے پر عارضی کوڈ ہے، زیادہ سے زیادہ 15 منٹ اور ایک کامیاب activation کے لیے۔ صارف نقل یا اپنے email پر ارسال منتخب کر سکتا ہے۔
- نئے کمپیوٹر میں ایپ کھول کر 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 رکن نہیں کر سکتا۔
پرانے لائسنس پر نئی پالیسی لگائیں
- لائسنس پالیسی میں نئے قواعد محفوظ کریں۔
- ایک پروڈکٹ کے پرانے لائسنس چنیں، پالیسی لگائیں اور نئی پالیسی دیں۔
- مدت، آلہ/نشست، خصوصیات، استعمال اور maintenance تبدیلی دیکھیں۔ نشست نئی حد سے زیادہ یا mode بدلنے پر فعال آلہ ہو تو پہلے آلات حل کریں۔
- تصدیق پر نافذ کریں۔ اگلی 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_REVOKEDDEVICE_RELEASED | لائسنس منسوخ/آلہ آزاد؛ SDK cache صاف |
DEVICE_LIMIT_REACHED | لائسنس جگہ بھری؛ پرانا آزاد یا حد بڑھائیں |
API_QUOTA_EXCEEDED | API سخت کوٹا ختم؛ دورانیہ/پیکیج دیکھیں |
API_BALANCE_INSUFFICIENT | API زائد بیلنس کم؛ کرنسی/ماحول دیکھیں |
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۔
مکمل خرابی جواب
{
"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 کے لیے دیکھیں مدد اور مسئلے کی تشخیص۔
API کے تمام فیلڈز دیکھیں OpenAPI فائل۔