Skip to content

Credentials API ​

সনদ (assertion) তৈরি ও পরিচালনা করুন — নির্দিষ্ট প্রাপকদের ইস্যু করা ব্যাজ।

সব এন্ডপয়েন্টে X-Api-Key হেডারের মাধ্যমে প্রমাণীকরণ প্রয়োজন। প্রমাণীকরণ দেখুন।

সনদ তৈরি করা ​

একজন প্রাপককে ব্যাজ ইস্যু করুন।

প্রতিজনের জন্য আলাদা API কল না করে একসাথে শত বা হাজার প্রাপককে ইস্যু করতে চান? CSV আপলোড গ্রহণ করে এমন বাল্ক সনদ UI ফিচারটি ব্যবহার করুন।

POST /awards

প্যারামিটার ​

প্যারামিটারধরনআবশ্যকবিবরণ
badgeIdstringহ্যাঁযে ব্যাজ ইস্যু করা হবে তার ID
recipientobjectহ্যাঁপ্রাপকের তথ্য (নিচে দেখুন)
recipient.namestringহ্যাঁপ্রাপকের পূর্ণ নাম (সর্বনিম্ন ৫ অক্ষর)
recipient.emailstringহ্যাঁপ্রাপকের ইমেইল ঠিকানা
issuedOnstringহ্যাঁISO 8601 ফরম্যাটে ইস্যুর তারিখ (যেমন 2025-01-15)
expiresstringনাISO 8601 ফরম্যাটে মেয়াদোত্তীর্ণের তারিখ

উদাহরণ ​

bash
curl -X POST https://api.badges.ninja/awards \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "badgeId": "b1c2d3e4-f5a6-7890-bcde-f12345678901",
      "recipient": {
        "name": "Jane Smith",
        "email": "jane@example.com"
      },
      "issuedOn": "2025-01-15"
    }
  }'

রেসপন্স ​

json
{
  "awardId": "https://api.badges.ninja/certify-badge/award/c1d2e3f4-a5b6-7890-cdef-123456789012"
}

নোট ​

  • আপনার বার্ষিক সনদ পুলের বিপরীতে একটি সনদ হিসেবে গণ্য হয় (Free: বছরে ১,২০০, Starter: বছরে ১২,০০০, Pro: বছরে ১,২০,০০০)। পুলটি একটি নমনীয় বার্ষিক বরাদ্দ — বছরজুড়ে যখন খুশি খরচ করুন, এমনকি একসাথে অনেকগুলো — এবং আপনার অ্যাকাউন্ট নিবন্ধনের বার্ষিকীতে রিসেট হয়। বিলিং মাসিকই থাকে; শুধু সনদের কোটা বার্ষিক। বিস্তারিত জানতে প্ল্যান ও বিলিং দেখুন।

সনদের তালিকা ​

ঐচ্ছিক ফিল্টারিং ও পেজিনেশনসহ সনদ আনুন।

GET /awards

কোয়েরি প্যারামিটার ​

প্যারামিটারধরনআবশ্যকবিবরণ
filterJSON stringনাফিল্টার অবজেক্ট (নিচে দেখুন)
lastEvaluatedKeystringনাআগের রেসপন্স থেকে পাওয়া পেজিনেশন টোকেন

ফিল্টার অবজেক্ট ​

filter প্যারামিটার এই ফিল্ডগুলোসহ একটি JSON স্ট্রিং গ্রহণ করে:

ফিল্ডধরনবিবরণ
badgeIdstringব্যাজ ID দিয়ে ফিল্টার করে।
searchstringপ্রাপকের নাম বা ইমেইলে খোঁজার সাবস্ট্রিং (দেখুন searchField)।
searchFieldstringname (ডিফল্ট) অথবা email — কোন কলামে খোঁজা হবে।

lastEvaluatedKey-র মাধ্যমে পেজিনেশন ফিল্টারসহ বা ছাড়া কাজ করে। পেজের আকার ৫০।

উদাহরণ — সব সনদের তালিকা ​

bash
curl -X GET https://api.badges.ninja/awards \
  -H "X-Api-Key: bws_your_api_key_here"

উদাহরণ — ব্যাজ অনুযায়ী ফিল্টার ​

bash
curl -X GET "https://api.badges.ninja/awards?filter=%7B%22badgeId%22%3A%22b1c2d3e4%22%7D" \
  -H "X-Api-Key: bws_your_api_key_here"

রেসপন্স ​

json
{
  "count": 1,
  "items": [
    {
      "id": "https://api.badges.ninja/certify-badge/award/c1d2e3f4-...",
      "badge": {
        "id": "https://api.badges.ninja/certify-badge/badge/b1c2d3e4-...",
        "name": "JavaScript Fundamentals",
        "image": "https://badges.ninja/images/{sha256}.png"
      },
      "recipient": {
        "name": "Jane Smith",
        "email": "jane@example.com"
      },
      "issuedOn": "2025-01-15T00:00:00.000Z",
      "timestamp": "2025-01-15T10:30:00.000Z"
    }
  ],
  "lastEvaluatedKey": "eyJ..."
}

রেসপন্সে lastEvaluatedKey থাকলে আরও ফলাফল আছে। পরের পেজ পেতে পরের অনুরোধে এটি কোয়েরি প্যারামিটার হিসেবে দিন।


সনদের ইমেইল পাঠানো ​

প্রাপককে তাঁর সনদ সম্পর্কে ইমেইল বিজ্ঞপ্তি পাঠান।

POST /awards/{awardId}/send

প্যারামিটার ​

প্যারামিটারধরনআবশ্যকবিবরণ
awardIdstringহ্যাঁসনদের ID (পাথ প্যারামিটার ও বডি)
emailstringহ্যাঁপ্রাপকের ইমেইল ঠিকানা

উদাহরণ ​

bash
curl -X POST https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012/send \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012",
      "email": "jane@example.com"
    }
  }'

রেসপন্স ​

একটি সাধারণ নিশ্চিতকরণ স্ট্রিং ফেরত দেয়:

json
"email sent"

সনদ শেয়ার করা ​

একটি সনদ ইমেইলের মাধ্যমে একাধিক প্রাপকের সঙ্গে শেয়ার করুন।

POST /awards/{awardId}/share

প্যারামিটার ​

প্যারামিটারধরনআবশ্যকবিবরণ
awardIdstringহ্যাঁসনদের ID (পাথ প্যারামিটার ও বডি)
recipientsstringহ্যাঁকমা দিয়ে আলাদা করা ইমেইল ঠিকানার তালিকা
subjectstringহ্যাঁইমেইলের বিষয়
messagestringহ্যাঁইমেইলের বার্তার মূল অংশ

উদাহরণ ​

bash
curl -X POST https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012/share \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012",
      "recipients": "manager@example.com,hr@example.com",
      "subject": "Check out my new badge!",
      "message": "I just earned the JavaScript Fundamentals badge."
    }
  }'

রেসপন্স ​

একটি সাধারণ নিশ্চিতকরণ স্ট্রিং ফেরত দেয়:

json
"email sent"

সনদ বাতিল করা ​

আপনার ইস্যু করা একটি সনদ বাতিল করুন। হোস্ট করা Open Badges v2.0 assertion-এ revoked: true (ঐচ্ছিক কারণসহ) চিহ্নিত হয়, ফলে যেকোনো ভেরিফায়ার দেখতে পায় যে ব্যাজটি আর বৈধ নয়। অডিটের উদ্দেশ্যে সনদের রেকর্ড রাখা হয় এবং কোনো ক্রেডিট ফেরত দেওয়া হয় না।

বাতিলকরণ সনদের Open Badges 3.0 Verifiable Credential-এও ছড়িয়ে পড়ে: VC-র credentialStatus-এ উল্লিখিত W3C Bitstring Status List-এ সনদের বিট উল্টে দেওয়া হয়, ফলে VC ওয়ালেটগুলোও তা শনাক্ত করে। দেখুন বাতিলকরণ (Bitstring Status List)।

POST /awards/{awardId}/revoke

প্যারামিটার ​

প্যারামিটারধরনআবশ্যকবিবরণ
awardIdstringহ্যাঁসনদের ID (পাথ প্যারামিটার)
reasonstringনাবাতিলের কারণ। ৫০০ অক্ষরে ছেঁটে দেওয়া হয়।
notifybooleanনাtrue হলে প্রাপককে ইমেইলে জানানো হয় যে তাঁর সনদ বাতিল হয়েছে। ডিফল্ট false।

উদাহরণ ​

bash
curl -X POST https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012/revoke \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012",
      "reason": "Issued to the wrong recipient",
      "notify": true
    }
  }'

রেসপন্স ​

json
{
  "revoked": true,
  "awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012"
}

ইতিমধ্যে বাতিল করা সনদ আবার বাতিল করা আইডেমপোটেন্ট — নতুন করে বিজ্ঞপ্তি না পাঠিয়ে একই রেসপন্স ফেরত দেয়।

বাল্কে বাতিল করা ​

একসাথে অনেক সনদ বাতিল করতে প্রতিটি সনদের জন্য এই এন্ডপয়েন্ট কল করার বদলে action: "revoke" সহ টেকসই বাল্ক এন্ডপয়েন্ট ব্যবহার করুন:

bash
curl -X POST https://api.badges.ninja/awards/bulk-send \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{ "parameters": { "action": "revoke", "awardIds": ["<id1>", "<id2>"], "reason": "Program cancelled", "notify": false } }'

এটি { "jobId", "total" } ফেরত দেয়; জবটি সার্ভার-সাইডে প্রতিটি id বাতিল করে (ইতিমধ্যে বাতিল হওয়াগুলো বাদ দিয়ে) এবং পুনরায় চালু করা যায়। ইতিমধ্যে বাতিল ও অস্তিত্বহীন id-গুলো বাদ দেওয়া (skipped) হিসেবে জানানো হয়।


সনদ মুছে ফেলা ​

আপনার ইস্যু করা একটি সনদ স্থায়ীভাবে মুছে ফেলুন। বাতিলের বিপরীতে, এটি রেকর্ডটি সম্পূর্ণ সরিয়ে দেয় এবং পাবলিক সনদ পৃষ্ঠা 404 ফেরত দেবে। প্রকৃত ভুলের ক্ষেত্রে (যেমন ভুল ব্যক্তিকে ইস্যু করা) এটি ব্যবহার করুন; আসল সনদের জন্য বাতিল করাই শ্রেয়, যাতে assertion বাতিল হিসেবে যাচাইযোগ্য থাকে। কোনো ক্রেডিট ফেরত দেওয়া হয় না।

DELETE /awards/{awardId}

প্যারামিটার ​

প্যারামিটারধরনআবশ্যকবিবরণ
awardIdstringহ্যাঁসনদের ID (পাথ প্যারামিটার)

উদাহরণ ​

bash
curl -X DELETE https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012 \
  -H "X-Api-Key: bws_your_api_key_here"

রেসপন্স ​

json
{
  "deleted": true,
  "awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012"
}

PDF সার্টিফিকেট ডাউনলোড ​

একটি সনদের জন্য প্রিন্টের উপযোগী A4 PDF সার্টিফিকেট তৈরি করুন।

GET /certify-badge/award/{awardGuid}/pdf

প্রমাণীকরণ প্রয়োজন নেই — এই এন্ডপয়েন্ট পাবলিক, যাতে প্রাপকেরা নিজেদের সার্টিফিকেট ডাউনলোড করতে পারেন।

উদাহরণ ​

bash
curl -OJ https://api.badges.ninja/certify-badge/award/c1d2e3f4-a5b6-7890-cdef-123456789012/pdf

রেসপন্স হলো Content-Type: application/pdf হেডারসহ বাইনারি PDF।


সনদের ইভেন্ট ট্র্যাক করা ​

একটি এনগেজমেন্ট ইভেন্ট রেকর্ড করুন। পাবলিক সনদ পৃষ্ঠা এনগেজমেন্ট পরিসংখ্যান গড়তে এটি ব্যবহার করে। প্রমাণীকরণ প্রয়োজন নেই।

POST /certify-badge/award/{awardGuid}/event

প্যারামিটার ​

এই এন্ডপয়েন্ট সরাসরি বডি পড়ে (কোনো parameters র‍্যাপার নেই)।

প্যারামিটারধরনআবশ্যকবিবরণ
eventstringহ্যাঁview, share, download, click_linkedin_addtoprofile, click_pdf, click_verify-এর একটি।
networkstringনাevent=share হলে সোশ্যাল নেটওয়ার্ক: linkedin, twitter, facebook, whatsapp, telegram, email, copy।

প্রতি-IP ডুপ্লিকেট দমন: একই IP থেকে একই ইভেন্ট ২৪ ঘণ্টায় একবার গণনা হয়।

উদাহরণ ​

bash
curl -X POST https://api.badges.ninja/certify-badge/award/c1d2e3f4-a5b6-7890-cdef-123456789012/event \
  -H "Content-Type: application/json" \
  -d '{"event": "share", "network": "linkedin"}'

রেসপন্স ​

json
{
  "ok": true
}

সনদের পরিসংখ্যান পাওয়া ​

একটি সনদের ক্রমপুঞ্জিত এনগেজমেন্ট কাউন্টার আনুন।

GET /certify-badge/award/{awardGuid}/stats

প্রমাণীকরণ প্রয়োজন নেই।

রেসপন্স ​

কাউন্টারগুলো কাঁচা ইভেন্ট টাইপ অনুযায়ী কী সহ ফেরত আসে। totals-এ প্রতিটি ইভেন্টের মোট সংখ্যা থাকে; networks সেই ইভেন্টগুলোর নেটওয়ার্ক-ভিত্তিক বিভাজন দেখায় যেগুলোর network আছে (বর্তমানে share)। যে ইভেন্টে কোনো কার্যকলাপ নথিভুক্ত হয়নি তা বাদ থাকে।

json
{
  "totals": {
    "view": 142,
    "share": 16,
    "download": 3,
    "click_linkedin_addtoprofile": 4
  },
  "networks": {
    "share": { "linkedin": 8, "twitter": 2, "email": 1, "copy": 5 }
  }
}

badges.ninja Documentation