موڈ پیک مصنف API: ایکٹیویشن کوڈز اور اپڈیٹس
ایک پیڈ موڈ پیک مصنف Millida Hosting API کے ذریعے ایکٹیویشن کوڈز کیسے جاری کر سکتا ہے اور اپڈیٹس کیسے شائع کر سکتا ہے: موڈ پیک ورژنز، آرکائیو اپلوڈ، پبلیکیشن، رول بیک، کوڈ اسٹیٹس، اور ویب ہک۔
اپ ڈیٹ 6 ستمبر، 2026
آپ کو کوڈ لکھنے کی ضرورت نہیں۔ نیچے بیان کردہ سب کچھ اب بٹنوں کی صورت میں بھی دستیاب ہے: اگر آپ کا موڈ پیک آپ کے Millida اکاؤنٹ سے منسلک ہے تو آپ کے پروفائل میں ”میرے موڈ پیک“ کا ٹیب ظاہر ہوتا ہے — وہاں آپ ورژن اپ لوڈ کرتے ہیں، کارڈ میں ترمیم کرتے ہیں اور لینڈنگ پیجز بناتے ہیں۔ منسلک نہیں ہے تو ہمیں لکھیں، ہم اسے منسلک کر دیں گے۔ API ان کے لیے ہے جو اپنے CI سے ڈیپلائے کرتے ہیں۔
یہ مضمون ان مصنفین کے لیے ہے جو معاوضے والے موڈ پیک خود بیچتے ہیں اور سرور کی تنصیب ہمارے حوالے کرتے ہیں۔ خریدار کو کچھ ڈاؤن لوڈ کرنے کی ضرورت نہیں: وہ کوڈ درج کرتا ہے اور اسے ڈیپلائے شدہ موڈ پیک مل جاتا ہے۔ یہ ان کی طرف سے کیسا دکھتا ہے، یہ جاننے کے لیے ایکٹیویشن کوڈ کے ذریعے معاوضے والا موڈ پیک پڑھیں۔
شروع کرنے کے لیے آپ کو کیا چاہیے
- ہمیں اپنے موڈ پیک کا سرور آرکائیو بھیجیں — ایک
.zipجس کے روٹ میںmods/ہو (بغیرServer Files/جیسے ریپر کے) یا ایک.mrpack۔ آرکائیو ہمارے نجی اسٹوریج میں محفوظ رہتا ہے، اور اس کا لنک کبھی باہر شیئر نہیں کیا جاتا۔ - ہمیں کور، گیم ورژن اور کم از کم میموری بتائیں — وزرڈ انہی کی بنیاد پر وہ پلانز فلٹر کرتا ہے جن پر موڈ پیک نہیں چلے گا۔
- ہم سے ایک موڈ پیک کی (
key، مثلاًarcania) اور ایک اجراء ٹوکن حاصل کریں — آپ کی سائٹ اسی سے کوڈز بناتی ہے۔
ٹوکن صرف ایک بار دکھایا جاتا ہے: ہم صرف اس کا فنگر پرنٹ محفوظ رکھتے ہیں۔ اگر یہ گم ہو جائے تو ہمیں دوبارہ جاری کرنے کو کہیں — پرانا کام کرنا بند کر دے گا۔
یہ اسکیم کیسے کام کرتی ہے
- ادائیگی آپ خود وصول کرتے ہیں، اپنی طرف سے۔
- ادائیگی کے بعد آپ کی سائٹ ہماری API کو کال کرتی ہے اور ایک ایکٹیویشن کوڈ حاصل کرتی ہے۔
- آپ کوڈ خریدار کو دیتے ہیں — ای میل، بوٹ، یا ”شکریہ“ والے صفحے پر۔
- خریدار ہماری طرف کوڈ درج کرتا ہے اور اسے معاوضے والے پلان پر موڈ پیک کے ساتھ سرور مل جاتا ہے۔
- سرور پر موڈ پیک کی فائلیں مقفل ہوتی ہیں:
modsنہ پینل سے ڈاؤن لوڈ کیے جا سکتے ہیں اور نہ SFTP کے ذریعے۔
حقیقت میں خریدار کے ہاتھ سرور کا موڈ پیک کبھی نہیں آتا — صرف ایک چلنے والا سرور۔
اینڈ پوائنٹ اور اجازت
بنیادی URL — https://millida.net/v2/hosting۔
ٹوکن X-Pack-Token ہیڈر میں بھیجا جاتا ہے۔ یہ JWT یا Bearer ٹوکن نہیں ہے — یہ آپ کے موڈ پیک کے لیے ایک الگ سیکرٹ ہے۔
X-Pack-Token: mpk_pack_XXXXXXXXXXXXXXXX
Content-Type: application/json
ٹوکن آپ کے سرور پر رہتا ہے — اسے ماحولیاتی ویری ایبلز میں رکھیں، فرنٹ اینڈ کوڈ میں نہیں۔
کوڈز جاری کریں
POST /v2/hosting/packs/{key}/keys
| فیلڈ | قسم | ڈیفالٹ | یہ کیا کرتا ہے |
|---|---|---|---|
count | عدد 1–200 | 1 | فی کال کتنے کوڈز بنانے ہیں |
note | اسٹرنگ زیادہ سے زیادہ 120 | — | آپ کا نوٹ: آرڈر نمبر، خریدار کا نک نیم |
maxServers | عدد 1–20 | 1 | ایک کوڈ کتنے سرورز پر ایکٹیویٹ ہو سکتا ہے |
expiresAt | ISO تاریخ | — | کوڈ کی میعاد ختم ہونے کی تاریخ |
curl -X POST https://millida.net/v2/hosting/packs/arcania/keys \
-H "X-Pack-Token: $PACK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"count": 1, "note": "order 4821"}'
{
"code": "A7K2-9MHD-4RTP-QW38",
"codes": ["A7K2-9MHD-4RTP-QW38"]
}
code فیلڈ بیچ کا پہلا کوڈ ہے، جو مطابقت کے لیے رکھا گیا ہے؛ جب count > 1 ہو تو codes استعمال کریں۔
کوڈز صرف یہیں واپس کیے جاتے ہیں، کہیں اور نہیں۔ ہم ان کا ہیش محفوظ رکھتے ہیں — پاس ورڈ کی طرح۔ اگر کوڈ گم ہو جائے تو ہم اسے بحال نہیں کر سکتے: نیا جاری کریں اور پرانا منسوخ کر دیں۔
حد فی موڈ پیک 30 درخواستیں فی منٹ ہے۔ فی کال 200 کوڈز تک کے بیچ خاص طور پر فروخت کے لیے ہیں: انہیں بیچ میں بنائیں، فی درخواست ایک کوڈ نہیں۔
کوڈز کا کیا ہوا
GET /v2/hosting/packs/{key}/keys?limit=100
[
{
"codeHint": "A7K29MHD",
"note": "order 4821",
"maxServers": 1,
"usedCount": 1,
"state": "spent",
"expiresAt": null,
"revokedAt": null,
"createdAt": "2026-08-03T12:20:11.000Z"
}
]
کوڈز خود جواب میں نہیں ہوتے اور ہو بھی نہیں سکتے۔ codeHint کوڈ کا آغاز ہے — اسی سے آپ قطار کو اپنے آرڈر سے ملا سکتے ہیں۔
حالتیں: free — غیر استعمال شدہ، spent — استعمال شدہ، expired — میعاد ختم، revoked — آپ کی طرف سے منسوخ۔
ایک کوڈ چیک کریں
POST /v2/hosting/packs/{key}/keys/status، باڈی {"code": "A7K2-9MHD-4RTP-QW38"}۔
جواب وہی قطار ہوتی ہے جو فہرست میں ہے۔ کوڈ باڈی میں جاتا ہے، URL میں نہیں: URLs پراکسی لاگز اور براؤزر ہسٹری میں رہ جاتے ہیں، اور ایکٹیویشن سے پہلے کوڈ ایک چلنے والی کی ہوتی ہے۔
ہائفن اور کیس سے فرق نہیں پڑتا: a7k29mhd4rtpqw38 بھی A7K2-9MHD-4RTP-QW38 کی طرح مل جائے گا۔
کوڈ منسوخ کریں
POST /v2/hosting/packs/{key}/keys/revoke، باڈی {"code": "..."}۔
اسے ریفنڈز، غلطی سے جاری کیے گئے کوڈز یا تنازعات کے لیے استعمال کریں۔ منسوخی آئندہ ایکٹیویشنز روک دیتی ہے لیکن پہلے سے ڈیپلائے شدہ موڈ پیک کو نہیں ہٹاتی — جس خریدار نے اسے ایکٹیویٹ کر لیا، اس کا سرور چلتا رہے گا۔
ایکٹیویشن ویب ہک
اگر آپ ہمیں ویب ہک URL دیں تو جس لمحے کوڈ ریڈیم ہو، ہم اسے کال کریں گے:
POST <your-address>
X-Millida-Pack: arcania
Content-Type: application/json
{
"event": "pack.activated",
"packKey": "arcania",
"codeHint": "A7K29MHD",
"serverId": "cm4x...",
"activatedAt": "2026-08-04T09:14:02.000Z"
}
کال پر دستخط نہیں ہوتے: آپ اسی ٹوکن کے ذریعے keys/status سے اس کی تصدیق کر سکتے ہیں — codeHint سے آپ اپنی قطار ڈھونڈ کر state: "spent" دیکھ لیں گے۔ اس طرح آپ کو دوسرا سیکرٹ محفوظ رکھنے کی ضرورت نہیں۔
ویب ہک جواب کا انتظار کیے بغیر بھیجا جاتا ہے اور دوبارہ نہیں بھیجا جاتا: اگر آپ کا سرور بند تھا تو بھی ایکٹیویشن ہو گئی، اور آپ اسے کوڈ فہرست میں دیکھ سکتے ہیں۔ URL عوامی ہونا چاہیے — ہم اندرونی یا لوکل ایڈریسز کو کال نہیں کرتے۔ ری ڈائریکٹس کی پیروی نہیں کی جاتی۔
موڈ پیک کارڈ
GET /v2/hosting/packs/{key} عوامی ہے، ٹوکن کی ضرورت نہیں۔ یہ وہی واپس کرتا ہے جو خریدار دیکھتا ہے: نام، کور، ورژن، کم از کم میموری، پلان فہرست اور تحفظ کے فلیگز۔ جواب میں آرکائیو کا لنک نہیں ہوتا۔
آپ کی سائٹ کے ”خریدیں“ صفحے کے لیے کارآمد: پلان کی شرائط ایک ہی ذریعے سے آتی ہیں اور ہمارے وزرڈ سے مختلف نہیں ہوں گی۔
آپ اپنے کارڈ کے اسٹور فرنٹ فیلڈز خود ایڈٹ کرتے ہیں: ٹوکن کے ساتھ PATCH /v2/hosting/packs/{key} یہ قبول کرتا ہے: name، authorName، authorUrl، iconUrl، webhookUrl۔ فروخت کی شرائط (paidOnly، requireKey، lockFiles، planCodes)، اسٹور فرنٹ میں موڈ پیک کو فعال کرنا اور JVM لانچ فلیگز ٹوکن سے تبدیل نہیں کیے جا سکتے — یہ آپ کے ساتھ ہمارا معاہدہ اور ہمارے نوڈز ہیں، اس لیے ان کے بارے میں ہمیں لکھیں۔
موڈ پیک اپ ڈیٹس
پہلے اپ ڈیٹ کا مطلب تھا ہمیں ای میل کرنا اور انتظار کرنا۔ اب آپ خود ایک ورژن شائع کرتے ہیں، اور سرور مالکان اسے اپنے پینل میں منتخب کرتے ہیں۔
اہم نکتہ: ہم کبھی کسی کا موڈ پیک خاموشی سے اپ ڈیٹ نہیں کرتے۔ موڈ پیک ورژنز کے درمیان منتقلی دنیا کے ساتھ غیر مطابق ہو سکتی ہے، اور فیصلہ سرور مالک کرتا ہے۔ شائع شدہ ورژن وہی ہے جو نئے سرورز کو ملتا ہے اور جو ہم پہلے سے ڈیپلائے شدہ سرورز کو پیش کرتے ہیں؛ پچھلے ورژنز فہرست میں رہتے ہیں، اور آپ ان پر رہ سکتے ہیں یا واپس جا سکتے ہیں۔
یہ سائیکل کیسا دکھتا ہے
# 1. Create a version
curl -X POST https://millida.net/v2/hosting/packs/arcania/versions \
-H "X-Pack-Token: $PACK_TOKEN" -H "Content-Type: application/json" \
-d '{"label":"1.5.0","changelog":"Updated Create to 0.5.1, fixes crash on portals","minRamMb":10240}'
# 2. Upload the archive in chunks (32 MB each), addressing by offset
curl -X POST "https://millida.net/v2/hosting/packs/arcania/versions/1.5.0/archive?offset=0" \
-H "X-Pack-Token: $PACK_TOKEN" -H "Content-Type: application/octet-stream" \
--data-binary @part0.bin
# 3. Say the archive is finished, and publish after parsing
curl -X POST https://millida.net/v2/hosting/packs/arcania/versions/1.5.0/finish \
-H "X-Pack-Token: $PACK_TOKEN" -H "Content-Type: application/json" \
-d '{"archiveSha256":"<sha256 of archive>","publish":true}'
# 4. Wait for parsing
curl https://millida.net/v2/hosting/packs/arcania/versions/1.5.0 -H "X-Pack-Token: $PACK_TOKEN"
ورژن
| فیلڈ | قسم | یہ کیا کرتا ہے |
|---|---|---|
label | 40 تک اسٹرنگ | ورژن نمبر: لاطینی حروف، ہندسے، ڈاٹ، ہائفن، انڈر اسکور۔ ناقابلِ تبدیل: ایک ہی لیبل کے ساتھ مختلف فائلیں شکایت کی چھان بین کو اندازے بازی بنا دیتی ہیں |
changelog | 4000 تک اسٹرنگ | کیا تبدیل ہوا — سرور کا مالک اپ ڈیٹ سے پہلے یہی پڑھتا ہے |
core, gameVersion | اسٹرنگز | اگر سرور سیٹ اپ کسی دوسرے کور یا گیم ورژن پر منتقل ہوا ہو |
loaderBuild, javaVersion | اسٹرنگز | لوڈر بلڈ اور Java کی پن، اگر ورژن کو اس کی ضرورت ہو |
minRamMb | نمبر | اسی مخصوص ورژن کے لیے میموری کی کم از کم حد۔ جس کے پاس کافی نہ ہو، وہ وجہ دیکھ لے گا اور اس کی دنیا ضائع نہیں ہوگی |
archiveSha256 | ہیکس 64 | ہم پارس کرنے سے پہلے تصدیق کرتے ہیں: ادھورا پہنچنے والا آرکائیو کھولنے سے بہتر ہے کہ مسترد کر دیا جائے |
اپ لوڈ
POST /v2/hosting/packs/{key}/versions/{label}/archive?offset=N، باڈی — .zip کا ایک چنک، Content-Type: application/octet-stream۔ چنک زیادہ سے زیادہ 32 MB، پورا آرکائیو زیادہ سے زیادہ 4 GB۔
چنک کی نشان دہی آفسیٹ سے ہوتی ہے، ”آخر میں شامل کریں“ سے نہیں: درمیان میں رکا ہوا چنک فائل میں جزوی طور پر پہلے ہی پہنچ چکا ہوتا ہے، اور دوبارہ کوشش وہی بائٹس ایک بار پھر شامل کر دیتی — آرکائیو خاموشی سے خراب ہو کر پہنچتا۔ جواب میں uploadedBytes واپس آتا ہے، جس سے رکاوٹ کے بعد اپ لوڈ دوبارہ شروع کیا جاتا ہے۔
پارسنگ
POST .../finish فوراً جواب دیتا ہے (status: "processing")، جبکہ پارسنگ پس منظر میں چلتی رہتی ہے: ایک گیگا بائٹ کے سرور سیٹ اپ کو کھولنے میں کئی منٹ لگتے ہیں۔ حالت GET .../versions/{label} سے پڑھیں: processing → ready یا failed، ناکامی کی وجہ error میں لکھی ہوتی ہے۔
آرکائیو کو کیا پورا کرنا ہوگا:
- یہ سرور پیک ہو: واحد ریپر (
Server Files/اور اس جیسے) ہٹانے کے بعدmods/یاplugins/روٹ پر ہو۔ سرور پر کلائنٹ پیک خالی دنیا بناتا ہے، اس لیے ہم اسے انسٹال کرنے کے بجائے مسترد کر دیتے ہیں؛ - آرکائیو کے اندر ناموں میں
..، مطلق پاتھ یا Windows کے جداکار نہ ہوں؛ - کوئی پاس ورڈ نہ ہو، کوئی غیر معمولی کمپریشن طریقہ نہ ہو (صرف store اور deflate)؛
- حدود: 60,000 فائلیں، کھلنے پر 12 GB، کمپریشن تناسب زیادہ سے زیادہ 200×۔
ناکامی شائع شدہ ورژن پر اثر نہیں ڈالتی: آپ کے کلائنٹس پچھلا ورژن چلاتے رہتے ہیں، اور آپ دوبارہ اپ لوڈ کرتے ہیں۔ نامکمل ڈرافٹس: فی سرور سیٹ اپ تین سے زیادہ نہیں، ترک شدہ ایک دن بعد خودکار طور پر صاف ہو جاتے ہیں۔
شائع کرنا، رول بیک اور ہٹانا
| درخواست | یہ کیا کرتی ہے |
|---|---|
POST .../versions/{label}/publish | ورژن کو شائع کر دیں۔ رول بیک بھی اسی طرح ہوتا ہے: پچھلا ورژن شائع کریں — نئے سرورز کو وہی ملے گا |
POST .../versions/{label}/archive-version | ورژن کو انتخاب سے ہٹا دیں۔ جن کے پاس پہلے سے ہے، ان کے پاس رہے گا |
PATCH .../versions/{label} | پہلے سے بنے ورژن کی تفصیل میں ترمیم کریں: changelog اور minRamMb۔ ورژن کی فائلیں ناقابلِ تبدیل ہیں، اس لیے کور، لوڈر اور Java نہیں بدلتے |
DELETE .../versions/{label} | ورژن کو اس کی فائلوں سمیت حذف کریں۔ شائع شدہ ورژن یا وہ ورژن حذف نہیں کر سکتے جو کم از کم ایک سرور پر ہو |
GET .../versions | انتخاب کے لیے دستیاب ورژن (عوامی، بغیر ٹوکن) |
GET .../versions/all | آپ کا سب کچھ، بشمول ڈرافٹس اور ناکامیاں |
GET .../versions/rollout | کتنے سرورز کس ورژن پر ہیں — آپ دیکھ سکتے ہیں کہ اپ ڈیٹ کیسے پھیل رہی ہے |
شائع کرنے سے کور، گیم ورژن، لوڈر پن، Java اور ورژن کی میموری کی حد سرور سیٹ اپ کارڈ میں منتقل ہو جاتی ہے: نئے سرورز کو یہ آپ کی طرف سے کسی اضافی کارروائی کے بغیر مل جاتا ہے۔
سرور کا مالک کیا دیکھتا ہے
پینل میں، پریمیم سرور سیٹ اپ بلاک میں: کون سا ورژن انسٹال ہے، کون سا جاری ہو چکا ہے، آپ کا changelog، اور ورژنز کی فہرست جس میں ”Switch“ بٹن ہوتا ہے۔ اپ ڈیٹ دنیا پر اثر نہیں ڈالتی — صرف سرور سیٹ اپ کی فائلیں بدلی جاتی ہیں، اور بدلنے سے پہلے ہم ایک کاپی لے لیتے ہیں۔ کسٹم موڈز، اگر آپ نے اجازت دی ہو، تو سوئچ کرنے کے بعد دوبارہ شامل کرنے پڑیں گے: سرور سیٹ اپ ایک مکمل اکائی کے طور پر منتقل ہوتا ہے، اور mods/ میں پرانے ورژن کا آدھا حصہ اسٹارٹ اپ پر کریش کا مطلب ہے۔
اگر مالک کا پلان کوئی ورژن نہ سنبھال سکے، تو ہم اسے چھپانے کے بجائے وجہ کے ساتھ دکھاتے ہیں: انسان کو دکھائی دینا چاہیے کہ اسے کیا چاہیے، اندازہ نہیں لگانا چاہیے کہ سرور سیٹ اپ اپ ڈیٹ کیوں نہیں ہو رہا۔
اپنے سرور سیٹ اپ کا صفحہ
اپنے سرور سیٹ اپ کا لینڈنگ صفحہ آپ خود اپنے اکاؤنٹ میں بناتے ہیں (پروفائل → ”My server setups“ → ”Server setup pages“): پہلی اسکرین، خصوصیات، اسکرین شاٹس، سوال و جواب، آپ کے رنگ۔ پلانز اور ورژن کی فہرست ہمارے ڈیٹا سے بھری جاتی ہے تاکہ وہ پرانی نہ ہوں۔
تیار صفحہ millida.net/sborka/<your-address> پر رہتا ہے — یہ ایک عام ویب سائٹ صفحہ ہے، سرچ انجن اسے انڈیکس کرتے ہیں اور یہ ہمارے سائٹ میپ میں شامل ہوتا ہے۔ ڈرافٹ آپ کے سوا کسی کو نظر نہیں آتا۔
تصاویر اسی جگہ، آپ کے اکاؤنٹ میں اپ لوڈ ہوتی ہیں: صفحہ ہمارے ڈومین سے پیش ہوتا ہے، اور اس کی فائلیں ہمارے پاس محفوظ رہتی ہیں — اگر آپ کی ہوسٹنگ بند ہو جائے، تو صفحہ سلامت رہتا ہے۔
صفحات API کے ذریعے ایڈٹ نہیں ہو سکتے: یہ ایک اسکرین ہے، رول آؤٹ نہیں۔
رسپانس کوڈز
| کوڈ | کب | کیا کریں |
|---|---|---|
403 | غلط اجرا ٹوکن | X-Pack-Token چیک کریں۔ ٹوکن ایک سرور سیٹ اپ سے بندھا ہوتا ہے: یہ کسی اور کی key کے ساتھ کام نہیں کرتا |
404 | سرور سیٹ اپ غیر فعال ہے، اجرا سے منسلک نہیں، یا ایسا کوئی ورژن موجود نہیں | ہمیں لکھیں |
400 | expiresAt تاریخ پارس نہیں ہو سکتی، غلط ورژن لیبل، خالی یا بہت بڑا چنک | ایرر ٹیکسٹ دیکھیں |
409 | ورژن پہلے ہی بن چکا، پارس ہو چکا، شائع ہو چکا، یا سرورز پر انسٹال ہے | لیبل ناقابلِ تبدیل ہیں: اگلا جاری کریں |
429 | فی منٹ 30 سے زیادہ درخواستیں (اپ لوڈ — 600) | بیچز میں بھیجیں، اور بڑے چنک بھیجیں |
بیچنے سے پہلے سب کچھ کیسے ٹیسٹ کریں
ہم سے دو ایک ٹیسٹ کوڈز مانگیں: API کے ذریعے کوڈ جاری کریں، اسے اپنے سرور پر ہماری ہوسٹنگ میں ایکٹیویٹ کریں، دیکھیں کہ ویب ہک میں کیا پہنچا اور keys/status کیا دکھاتا ہے۔ اس طرح آپ پہلے ادائیگی کرنے والے گاہک سے پہلے خریدار کا پورا راستہ دیکھ لیں گے۔
