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
}

クレデンシャルが失効されている場合、アサーションには "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