Skip to content

公開驗證 ​

這些端點為公開端點,無需驗證。任何人都能藉此驗證徽章憑證,並取得 Open Badge v2.0 JSON 資料。

所有端點皆相對於 https://api.badges.ninja。

取得簽發者 ​

取得指定簽發者的 Open Badge v2.0 Issuer Profile JSON。

GET /certify-badge/issuer/{guid}

範例 ​

bash
curl https://api.badges.ninja/certify-badge/issuer/a1b2c3d4-e5f6-7890-abcd-ef1234567890

回應 ​

json
{
  "@context": "https://w3id.org/openbadges/v2",
  "type": "Issuer",
  "id": "https://api.badges.ninja/certify-badge/issuer/a1b2c3d4-...",
  "name": "Acme Academy",
  "url": "https://acme.example.com",
  "email": "badges@acme.example.com",
  "verification": {
    "type": "hosted",
    "allowedOrigins": "api.badges.ninja"
  }
}

取得徽章 ​

取得指定徽章的 Open Badge v2.0 BadgeClass JSON。

GET /certify-badge/badge/{guid}

範例 ​

bash
curl https://api.badges.ninja/certify-badge/badge/b1c2d3e4-f5a6-7890-bcde-f12345678901

回應 ​

json
{
  "@context": "https://w3id.org/openbadges/v2",
  "type": "BadgeClass",
  "id": "https://api.badges.ninja/certify-badge/badge/b1c2d3e4-...",
  "name": "JavaScript Fundamentals",
  "description": "Demonstrates proficiency in core JavaScript concepts",
  "criteria": {
    "narrative": "Completed the JavaScript Fundamentals course with a score of 80% or higher"
  },
  "image": "https://badges.ninja/images/{sha256}.png",
  "issuer": "https://api.badges.ninja/certify-badge/issuer/a1b2c3d4-..."
}

取得憑證 ​

取得指定憑證的 Open Badge v2.0 Assertion JSON。

GET /certify-badge/award/{guid}

範例 ​

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

回應 ​

json
{
  "@context": "https://w3id.org/openbadges/v2",
  "type": "Assertion",
  "id": "https://api.badges.ninja/certify-badge/award/c1d2e3f4-...",
  "recipient": {
    "type": "email",
    "hashed": true,
    "identity": "sha256$..."
  },
  "badge": "https://api.badges.ninja/certify-badge/badge/b1c2d3e4-...",
  "issuedOn": "2025-01-15T00:00:00.000Z",
  "verification": {
    "type": "hosted"
  },
  "revoked": false
}

若該憑證已被撤銷,assertion 會帶有 "revoked": true,並在有提供原因時附上 "revocationReason" 字串:

json
{
  "revoked": true,
  "revocationReason": "Issued in error"
}

這是 Open Badges 2.0 對撤銷的呈現方式。同一筆撤銷也會在該憑證的 Open Badges 3.0 Verifiable Credential 中表達——請參閱撤銷(Bitstring Status List)。

備註 ​

  • 依據 Open Badge 規範,接收者的電子郵件會以 SHA-256 雜湊處理以保護隱私。
  • 回應會快取 5 分鐘(Cache-Control: public, max-age=300)。已撤銷的憑證則使用較短的 30 秒快取(max-age=30),讓撤銷能迅速生效。

取得憑證分享文案 ​

取得某筆憑證所屬徽章的自訂分享文案。

GET /certify-badge/award/{guid}/share-text

範例 ​

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

回應 ​

json
{
  "text": "I just earned the JavaScript Fundamentals badge! Check it out:"
}

若未設定自訂分享文案,則會回傳預設訊息。


寄送憑證電子郵件(公開) ​

從公開端點寄送憑證通知電子郵件。此端點供公開分享頁面使用。

POST /certify-badge/award/{guid}/send-email

參數 ​

參數型別必填說明
recipientsstring是以逗號分隔的電子郵件地址清單
messagestring否要附加在電子郵件中的自訂訊息

範例 ​

bash
curl -X POST https://api.badges.ninja/certify-badge/award/c1d2e3f4-a5b6-7890-cdef-123456789012/send-email \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "recipients": "colleague@example.com",
      "message": "Check out this badge!"
    }
  }'

回應 ​

json
{
  "statusCode": 200,
  "info": "award sent"
}

這是唯一會將結果包在 { "statusCode", "info" } 外層結構中的端點。其他所有端點皆直接回傳其內容。


驗證簽發者 ​

點選寄至簽發者電子郵件的驗證連結,即可驗證該簽發者。通常是透過驗證郵件中的連結存取,而非直接呼叫。

GET /certify-badge/verify-issuer/{guid}/{code}

參數 ​

參數型別說明
guidstring簽發者 GUID
codestring驗證碼

回應 ​

回傳一個 HTML 頁面,顯示驗證成功或失敗。此端點設計為在瀏覽器中開啟。

badges.ninja Documentation