Français
Français
Appearance
Français
Français
Appearance
Créez et gérez des attestations (assertions) — des badges émis à des bénéficiaires précis.
Tous les points de terminaison exigent une authentification via l'en-tête X-Api-Key. Voir Authentification.
Émettre un badge à un bénéficiaire.
Besoin d'émettre à des centaines ou des milliers de bénéficiaires d'un coup plutôt qu'un appel d'API par personne ? Utilisez la fonctionnalité d'interface Attestations en masse, qui accepte l'import d'un fichier CSV.
POST /awards| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
badgeId | string | Oui | L'ID du badge à émettre |
recipient | object | Oui | Détails du bénéficiaire (voir ci-dessous) |
recipient.name | string | Oui | Nom complet du bénéficiaire (5 caractères minimum) |
recipient.email | string | Oui | Adresse e-mail du bénéficiaire |
issuedOn | string | Oui | Date d'émission au format ISO 8601 (p. ex. 2025-01-15) |
expires | string | Non | Date d'expiration au format ISO 8601 |
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"
}
}'{
"awardId": "https://api.badges.ninja/certify-badge/award/c1d2e3f4-a5b6-7890-cdef-123456789012"
}Récupérez les attestations avec filtrage et pagination facultatifs.
GET /awards| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
filter | JSON string | Non | Objet de filtre (voir ci-dessous) |
lastEvaluatedKey | string | Non | Jeton de pagination d'une réponse précédente |
Le paramètre filter accepte une chaîne JSON avec ces champs :
| Champ | Type | Description |
|---|---|---|
badgeId | string | Filtrer par ID de badge. |
search | string | Sous-chaîne à rechercher dans les noms ou les e-mails des bénéficiaires (voir searchField). |
searchField | string | Soit name (par défaut), soit email — la colonne à rechercher. |
La pagination via lastEvaluatedKey fonctionne avec ou sans filtres. La taille de page est de 50.
curl -X GET https://api.badges.ninja/awards \
-H "X-Api-Key: bws_your_api_key_here"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"{
"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..."
}Si lastEvaluatedKey est présent dans la réponse, il reste des résultats. Transmettez-le comme paramètre de requête dans la requête suivante pour obtenir la page suivante.
Envoyez au bénéficiaire une notification par e-mail concernant son attestation.
POST /awards/{awardId}/send| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
awardId | string | Oui | L'ID de l'attestation (paramètre de chemin et corps) |
email | string | Oui | Adresse e-mail du bénéficiaire |
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"
}
}'Renvoie une simple chaîne de confirmation :
"email sent"Partagez une attestation par e-mail avec plusieurs destinataires.
POST /awards/{awardId}/share| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
awardId | string | Oui | L'ID de l'attestation (paramètre de chemin et corps) |
recipients | string | Oui | Liste d'adresses e-mail séparées par des virgules |
subject | string | Oui | Objet de l'e-mail |
message | string | Oui | Corps du message de l'e-mail |
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."
}
}'Renvoie une simple chaîne de confirmation :
"email sent"Révoquez une attestation que vous avez émise. L'assertion Open Badges v2.0 hébergée est marquée revoked: true (avec un motif facultatif) afin que tout vérificateur voie que le badge n'est plus valide. L'enregistrement de l'attestation est conservé à des fins d'audit, et aucun crédit n'est remboursé.
La révocation se propage aussi au Verifiable Credential Open Badges 3.0 de l'attestation : le bit de l'attestation est basculé dans la W3C Bitstring Status List référencée par le credentialStatus du VC, de sorte que les portefeuilles VC la détectent également. Voir Révocation (Bitstring Status List).
POST /awards/{awardId}/revoke| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
awardId | string | Oui | L'ID de l'attestation (paramètre de chemin) |
reason | string | Non | Motif de la révocation. Tronqué à 500 caractères. |
notify | boolean | Non | Si true, informe par e-mail le bénéficiaire que son attestation a été révoquée. false par défaut. |
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
}
}'{
"revoked": true,
"awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012"
}Révoquer une attestation déjà révoquée est idempotent — la même réponse est renvoyée, sans renvoyer de notification.
Pour révoquer de nombreuses attestations à la fois, utilisez le point de terminaison de masse durable avec action: "revoke" plutôt que d'appeler ce point de terminaison pour chaque attestation :
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 } }'Il renvoie { "jobId", "total" } ; la tâche révoque chaque ID côté serveur (en ignorant ceux déjà révoqués) et peut être reprise. Les ID déjà révoqués et inexistants sont signalés comme ignorés.
Supprimez définitivement une attestation que vous avez émise. Contrairement à la révocation, cela supprime entièrement l'enregistrement et la page publique de l'attestation renverra 404. À utiliser pour de véritables erreurs (p. ex. émise à la mauvaise personne) ; privilégiez la révocation pour les attestations réelles afin que l'assertion reste vérifiable comme révoquée. Aucun crédit n'est remboursé.
DELETE /awards/{awardId}| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
awardId | string | Oui | L'ID de l'attestation (paramètre de chemin) |
curl -X DELETE https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012 \
-H "X-Api-Key: bws_your_api_key_here"{
"deleted": true,
"awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012"
}Générez un certificat PDF A4 prêt à imprimer pour une attestation.
GET /certify-badge/award/{awardGuid}/pdfAucune authentification requise — ce point de terminaison est public afin que les bénéficiaires puissent télécharger leur propre certificat.
curl -OJ https://api.badges.ninja/certify-badge/award/c1d2e3f4-a5b6-7890-cdef-123456789012/pdfLa réponse est le PDF binaire avec un en-tête Content-Type: application/pdf.
Enregistrez un événement d'engagement. Utilisé par la page publique de l'attestation pour alimenter les statistiques d'engagement. Aucune authentification requise.
POST /certify-badge/award/{awardGuid}/eventCe point de terminaison lit directement son corps (sans enveloppe parameters).
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
event | string | Oui | L'une des valeurs view, share, download, click_linkedin_addtoprofile, click_pdf, click_verify. |
network | string | Non | Lorsque event=share, le réseau social : linkedin, twitter, facebook, whatsapp, telegram, email, copy. |
Suppression des doublons par IP : le même événement provenant de la même IP n'est compté qu'une fois par période de 24 heures.
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"}'{
"ok": true
}Récupérez les compteurs d'engagement cumulés d'une attestation.
GET /certify-badge/award/{awardGuid}/statsAucune authentification requise.
Les compteurs sont renvoyés par type d'événement brut. totals contient le total par événement ; networks détaille la répartition par réseau pour les événements qui portent un network (actuellement share). Les événements sans activité enregistrée sont simplement absents.
{
"totals": {
"view": 142,
"share": 16,
"download": 3,
"click_linkedin_addtoprofile": 4
},
"networks": {
"share": { "linkedin": 8, "twitter": 2, "email": 1, "copy": 5 }
}
}