Rapports
Vous pouvez utiliser Notification GC pour demander, obtenir la liste et télécharger des rapports de vos notifications à l'aide de l'API.
Les rapports sont générés de façon asynchrone. Après avoir demandé un rapport, interrogez-le via son ID jusqu'à ce que son statut soit ready, puis téléchargez son contenu.
Ce dont vous aurez besoin
Les points de terminaison d'API pour les rapports exigent une clé API avec la permission manage_reports.
Pour les types de clés et leur gestion, consultez Clés API.
Limite d'appels
Vous pouvez demander un maximum de 10 rapports par heure, par service. Cette limite s'applique uniquement au point de terminaison POST /v2/reports.
Si vous dépassez la limite, vous obtiendrez une erreur 429 RateLimitExceeded avec le message Maximum 10 report requests per hour.
Demander un rapport
POST /v2/reports
Corps de la requête
{
"report_type": "email",
"language": "fr"
}
Pour demander un rapport pour un envoi de masse (bulk job), incluez job_id :
{
"report_type": "job",
"language": "fr",
"job_id": "b7a2f0c4-8e1d-4d3b-9c2a-2f5e6d7a8b9c"
}
Paramètres
report_type (obligatoire)
Le type de rapport à générer. Valeurs permises :
sms(message texte)email(courriel)job(envoi de masse)
language (obligatoire)
La langue du rapport. Valeurs permises :
en(anglais)fr(français)
job_id (obligatoire lorsque report_type est job)
L'ID de l'envoi de masse pour lequel générer un rapport. Vous trouverez le job_id dans la réponse que vous recevez lorsque vous appelez le point de terminaison d'envoi de masse (bulk).
Réponse
Si la requête réussit, le corps de la réponse est en json avec un code de statut 202 :
{
"report_id": "740e5834-3a29-46b4-9a6f-16142fde533a",
"status": "requested"
}
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
400 | [{"error": "ValidationError","message": "report_type invalid is not one of [sms, email, job]"}] | Utilisez un report_type pris en charge : sms, email ou job |
400 | [{"error": "ValidationError","message": "job_id is a required property"}] | Incluez job_id lorsque report_type est job |
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage reports."}] | Créez ou utilisez une clé API avec la permission manage_reports |
429 | [{"error": "RateLimitExceeded","message": "Maximum 10 report requests per hour"}] | Attendez avant de demander un autre rapport. Vous pouvez demander jusqu'à 10 rapports par heure |
500 | [{"error": "Exception","message": "Internal server error"}] | Notification GC n'a pas pu traiter la requête, renvoyez votre requête |
Obtenir la liste des rapports
GET /v2/reports
Paramètres de requête
older_than (facultatif)
Retourne la page suivante de rapports, plus anciens que le rapport ayant cet ID.
Réponse
Si la requête réussit, le corps de la réponse est en json avec un code de statut 200 :
{
"reports": [
{
"id": "740e5834-3a29-46b4-9a6f-16142fde533a",
"report_type": "email",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"status": "ready",
"requested_at": "2026-06-15 12:30:00.000000",
"completed_at": "2026-06-15 12:31:00.000000",
"expires_at": "2026-06-18 12:31:00.000000"
}
],
"links": {
"current": "https://api.notification.canada.ca/v2/reports",
"next": "https://api.notification.canada.ca/v2/reports?older_than=740e5834-3a29-46b4-9a6f-16142fde533a"
}
}
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage reports."}] | Créez ou utilisez une clé API avec la permission manage_reports |
500 | [{"error": "Exception","message": "Internal server error"}] | Notification GC n'a pas pu traiter la requête, renvoyez votre requête |
Obtenir un rapport par ID
GET /v2/reports/{report_id}
Paramètres
report_id (obligatoire)
L'ID du rapport à récupérer.
Réponse
Si la requête réussit, le corps de la réponse est en json avec un code de statut 200 :
{
"id": "740e5834-3a29-46b4-9a6f-16142fde533a",
"report_type": "email",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"status": "ready",
"requested_at": "2026-06-15 12:30:00.000000",
"completed_at": "2026-06-15 12:31:00.000000",
"expires_at": "2026-06-18 12:31:00.000000"
}
Le champ status peut prendre l'une des valeurs suivantes :
requested- le rapport a été demandé et attend d'être générégenerating- le rapport est en cours de générationready- le rapport est prêt à être téléchargéerror- le rapport n'a pas pu être généré
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage reports."}] | Créez ou utilisez une clé API avec la permission manage_reports |
404 | [{"error": "NoResultFound","message": "No result found"}] | Confirmez que l'ID du rapport existe dans votre service |
500 | [{"error": "Exception","message": "Internal server error"}] | Notification GC n'a pas pu traiter la requête, renvoyez votre requête |
Télécharger le contenu d'un rapport
GET /v2/reports/{report_id}/content
Le rapport doit avoir le statut ready avant de pouvoir être téléchargé. Le contenu est retourné sous forme de fichier CSV.
Paramètres
report_id (obligatoire)
L'ID du rapport à télécharger.
Réponse
Si la requête réussit, la réponse est un fichier CSV avec un code de statut 200. Le Content-Type est text/csv et le fichier est retourné en pièce jointe.
Colonnes du CSV
Les colonnes dépendent du type de rapport. Les heures sont exprimées dans le fuseau horaire America/Toronto.
Les en-têtes de colonnes sont affichés dans la langue demandée avec le paramètre language. Les colonnes ci-dessous utilisent les en-têtes en français.
Pour les rapports email et sms, les colonnes sont :
| Colonne | Description |
|---|---|
| Destinataire | L'adresse courriel ou le numéro de téléphone auquel le message a été envoyé |
| Gabarit | Le nom du gabarit utilisé |
| Type | Le type de notification : courriel ou sms |
| Envoyé par | Le nom de l'utilisateur qui a envoyé le message, s'il a été envoyé par une personne |
| Envoyé par courriel | L'adresse courriel de l'utilisateur qui a envoyé le message, s'il a été envoyé par une personne |
| Tâche | Le nom du fichier d'envoi de masse dont provient le message, le cas échéant |
| État | Le statut de livraison du message |
| Heure d’envoi | La date et l'heure d'envoi du message |
Pour les rapports job, les colonnes sont :
| Colonne | Description |
|---|---|
| Numéro de ligne | Le numéro de ligne du destinataire dans le fichier d'envoi de masse original |
| Destinataire | L'adresse courriel ou le numéro de téléphone auquel le message a été envoyé |
| Gabarit | Le nom du gabarit utilisé |
| Type | Le type de notification : courriel ou sms |
| Tâche | Le nom du fichier d'envoi de masse dont provient le message |
| État | Le statut de livraison du message |
| Heure d’envoi | La date et l'heure d'envoi du message |
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage reports."}] | Créez ou utilisez une clé API avec la permission manage_reports |
404 | [{"error": "NoResultFound","message": "No result found"}] | Confirmez que l'ID du rapport existe dans votre service |
409 | [{"error": "BadRequestError","message": "Report is not ready for download (status: generating)"}] | Attendez que le statut du rapport soit ready avant de le télécharger |
502 | [{"error": "S3ReportDownloadError","message": "Failed to retrieve report content"}] | Notification GC n'a pas pu récupérer le contenu du rapport, réessayez plus tard |
Exemples CURL
Exemple pour demander un rapport
curl --request POST \
--url https://api.notification.canada.ca/v2/reports \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"report_type": "email",
"language": "fr"
}'
Exemple pour obtenir la liste des rapports
curl --request GET \
--url https://api.notification.canada.ca/v2/reports \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--header 'Content-Type: application/json'
Exemple pour obtenir un rapport par ID
curl --request GET \
--url https://api.notification.canada.ca/v2/reports/REPORT_ID \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--header 'Content-Type: application/json'
Exemple pour télécharger le contenu d'un rapport
curl --request GET \
--url https://api.notification.canada.ca/v2/reports/REPORT_ID/content \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--output report.csv