Skip to content

Verifikasi Publik ​

Endpoint ini bersifat publik dan tidak memerlukan autentikasi. Endpoint ini memungkinkan siapa pun memverifikasi kredensial lencana dan mengambil data JSON Open Badge v2.0.

Semua endpoint relatif terhadap https://api.badges.ninja.

Ambil Penerbit ​

Ambil JSON Profil Penerbit (Issuer Profile) Open Badge v2.0 untuk penerbit tertentu.

GET /certify-badge/issuer/{guid}

Contoh ​

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

Respons ​

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"
  }
}

Ambil Lencana ​

Ambil JSON BadgeClass Open Badge v2.0 untuk lencana tertentu.

GET /certify-badge/badge/{guid}

Contoh ​

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

Respons ​

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-..."
}

Ambil Kredensial ​

Ambil JSON Assertion Open Badge v2.0 untuk kredensial tertentu.

GET /certify-badge/award/{guid}

Contoh ​

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

Respons ​

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
}

Jika kredensial telah dicabut, assertion memuat "revoked": true dan, bila alasan diberikan, string "revocationReason":

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

Ini adalah tampilan Open Badges 2.0 untuk pencabutan. Pencabutan yang sama juga dinyatakan dalam Verifiable Credential Open Badges 3.0 milik kredensial tersebut — lihat Pencabutan (Bitstring Status List).

Catatan ​

  • Email penerima di-hash (SHA-256) demi privasi, sesuai spesifikasi Open Badge.
  • Respons di-cache selama 5 menit (Cache-Control: public, max-age=300). Kredensial yang dicabut menggunakan cache yang lebih singkat, yaitu 30 detik (max-age=30), agar pencabutan menyebar dengan cepat.

Ambil Teks Berbagi Kredensial ​

Ambil teks berbagi kustom untuk lencana dari sebuah kredensial.

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

Contoh ​

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

Respons ​

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

Jika tidak ada teks berbagi kustom yang ditetapkan, pesan default akan dikembalikan.


Kirim Email Kredensial (Publik) ​

Kirim email pemberitahuan kredensial dari endpoint publik. Endpoint ini digunakan oleh halaman berbagi publik.

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

Parameter ​

ParameterTipeWajibDeskripsi
recipientsstringYaDaftar alamat email yang dipisahkan koma
messagestringTidakPesan kustom yang disertakan dalam email

Contoh ​

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!"
    }
  }'

Respons ​

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

Ini adalah satu-satunya endpoint yang membungkus hasilnya dalam amplop { "statusCode", "info" }. Setiap endpoint lain mengembalikan payload-nya secara langsung.


Verifikasi Penerbit ​

Verifikasi penerbit dengan mengklik tautan verifikasi yang dikirim ke email penerbit. Biasanya endpoint ini diakses melalui tautan dalam email verifikasi, bukan dipanggil secara langsung.

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

Parameter ​

ParameterTipeDeskripsi
guidstringGUID penerbit
codestringKode verifikasi

Respons ​

Mengembalikan halaman HTML yang menyatakan verifikasi berhasil atau gagal. Endpoint ini dirancang untuk dibuka di peramban.

badges.ninja Documentation