Gérer les dossiers de gabarits
Vous pouvez utiliser Notification GC pour créer, lire, renommer, déplacer et supprimer des dossiers de gabarits à l'aide de l'API.
Les dossiers vous aident à organiser vos gabarits. Pour placer un gabarit dans un dossier, utilisez parent_folder_id lorsque vous créez ou mettez à jour un gabarit.
Ce dont vous aurez besoin
Les points de terminaison d'API pour gérer les dossiers de gabarits exigent une clé API avec la permission manage_templates. Il s'agit de la même permission que celle utilisée pour Gérer les gabarits.
Pour les types de clés et leur gestion, consultez Clés API.
Objet dossier
Tous les points de terminaison retournent les dossiers dans ce format :
{
"id": "f025b1a9-63af-43e8-b969-627bfe544bba",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"name": "Courriels d'authentification",
"parent_folder_id": null,
"users_with_permission": [
"5d3a5ab0-2ed8-4cc3-a8f6-9b8d1b5b6a52"
]
}
| Champ | Description |
|---|---|
id | L'ID du dossier. |
service_id | L'ID du service propriétaire du dossier. |
name | Le nom du dossier. |
parent_folder_id | L'ID du dossier parent, ou null pour un dossier de premier niveau. |
users_with_permission | Les ID des membres de l'équipe qui peuvent voir le dossier dans Notification GC. |
Accès aux dossiers
- Un dossier de premier niveau est partagé avec tous les membres de l'équipe de votre service.
- Un sous-dossier hérite de l'accès de son dossier parent.
- Lorsque vous déplacez un dossier dans un autre dossier, les membres de l'équipe qui n'ont pas accès au nouveau dossier parent perdent l'accès au dossier déplacé et à ses sous-dossiers.
Obtenir tous les dossiers
GET /v2/manage-template-folder
Réponse
Si la requête réussit, le corps de la réponse est en json avec un code d'état 200 :
{
"template_folders": [
{
"id": "f025b1a9-63af-43e8-b969-627bfe544bba",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"name": "Courriels d'authentification",
"parent_folder_id": null,
"users_with_permission": [
"5d3a5ab0-2ed8-4cc3-a8f6-9b8d1b5b6a52"
]
},
{
"id": "0c7a3bd5-3d3b-4a7f-9d0b-0f5a6f1f6e11",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"name": "Réinitialisations de mot de passe",
"parent_folder_id": "f025b1a9-63af-43e8-b969-627bfe544bba",
"users_with_permission": [
"5d3a5ab0-2ed8-4cc3-a8f6-9b8d1b5b6a52"
]
}
]
}
La réponse inclut tous les dossiers de votre service, y compris les sous-dossiers.
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage templates."}] | Créez ou utilisez une clé API avec la permission manage_templates |
500 | [{"error": "Exception","message": "Internal server error"}] | Notification GC n'a pas pu traiter la requête, renvoyez votre requête |
Obtenir un dossier par ID
GET /v2/manage-template-folder/{template_folder_id}
Paramètres
template_folder_id (obligatoire)
L'ID du dossier à récupérer.
Réponse
Si la requête réussit, le corps de la réponse est en json avec un code d'état 200 :
{
"id": "f025b1a9-63af-43e8-b969-627bfe544bba",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"name": "Courriels d'authentification",
"parent_folder_id": null,
"users_with_permission": [
"5d3a5ab0-2ed8-4cc3-a8f6-9b8d1b5b6a52"
]
}
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
400 | [{"error": "ValidationError","message": "id is not a valid UUID"}] | Utilisez un UUID valide pour template_folder_id |
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage templates."}] | Créez ou utilisez une clé API avec la permission manage_templates |
404 | [{"error": "NoResultFound","message": "No result found"}] | Confirmez que l'ID du dossier 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 |
Créer un dossier
POST /v2/manage-template-folder
Corps de la requête
{
"name": "Réinitialisations de mot de passe",
"parent_folder_id": "f025b1a9-63af-43e8-b969-627bfe544bba"
}
Paramètres
name (obligatoire)
Le nom du dossier. Il ne peut pas être vide. Les espaces au début et à la fin sont supprimés.
parent_folder_id (facultatif)
L'ID du dossier dans lequel créer ce dossier. Omettez ce paramètre, ou définissez-le à null, pour créer un dossier de premier niveau.
Réponse
Si la requête réussit, le corps de la réponse est en json avec un code d'état 201 :
{
"id": "0c7a3bd5-3d3b-4a7f-9d0b-0f5a6f1f6e11",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"name": "Réinitialisations de mot de passe",
"parent_folder_id": "f025b1a9-63af-43e8-b969-627bfe544bba",
"users_with_permission": [
"5d3a5ab0-2ed8-4cc3-a8f6-9b8d1b5b6a52"
]
}
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
400 | [{"error": "ValidationError","message": "name is a required property"}] | Ajoutez name au corps de la requête |
400 | [{"error": "ValidationError","message": "parent_folder_id is not a valid UUID"}] | Utilisez un UUID valide ou null pour parent_folder_id |
400 | [{"error": "ValidationError","message": "Additional properties are not allowed"}] | Utilisez uniquement les champs pris en charge : name, parent_folder_id |
400 | [{"error": "BadRequestError","message": "name cannot be empty"}] | Fournissez un nom qui n'est pas vide ni composé uniquement d'espaces |
400 | [{"error": "BadRequestError","message": "parent_folder_id not found"}] | Utilisez un ID de dossier valide de votre service |
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage templates."}] | Créez ou utilisez une clé API avec la permission manage_templates |
500 | [{"error": "Exception","message": "Internal server error"}] | Notification GC n'a pas pu traiter la requête, renvoyez votre requête |
Mettre à jour un dossier
PATCH /v2/manage-template-folder/{template_folder_id}
Utilisez ce point de terminaison pour renommer un dossier et/ou le déplacer.
Corps de la requête
Fournissez un ou plusieurs champs à mettre à jour.
{
"name": "Courriels de réinitialisation de mot de passe",
"parent_folder_id": "f025b1a9-63af-43e8-b969-627bfe544bba"
}
Paramètres
template_folder_id (obligatoire)
L'ID du dossier à mettre à jour.
name (facultatif)
Le nouveau nom du dossier. Il ne peut pas être vide. Les espaces au début et à la fin sont supprimés.
parent_folder_id (facultatif)
L'ID du dossier dans lequel déplacer ce dossier. Pour déplacer le dossier au premier niveau, attribuez la valeur null à parent_folder_id.
Vous ne pouvez pas déplacer un dossier dans celui-ci, ni dans l'un de ses sous-dossiers.
Réponse
Si la requête réussit, le corps de la réponse est en json avec un code d'état 200 :
{
"id": "0c7a3bd5-3d3b-4a7f-9d0b-0f5a6f1f6e11",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"name": "Courriels de réinitialisation de mot de passe",
"parent_folder_id": "f025b1a9-63af-43e8-b969-627bfe544bba",
"users_with_permission": [
"5d3a5ab0-2ed8-4cc3-a8f6-9b8d1b5b6a52"
]
}
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
400 | [{"error": "ValidationError","message": "id is not a valid UUID"}] | Utilisez un UUID valide pour template_folder_id |
400 | [{"error": "ValidationError","message": "parent_folder_id is not a valid UUID"}] | Utilisez un UUID valide ou null pour parent_folder_id |
400 | [{"error": "ValidationError","message": "Additional properties are not allowed"}] | Utilisez uniquement les champs pris en charge : name, parent_folder_id |
400 | [{"error": "BadRequestError","message": "name cannot be empty"}] | Fournissez un nom qui n'est pas vide ni composé uniquement d'espaces |
400 | [{"error": "BadRequestError","message": "parent_folder_id not found"}] | Utilisez un ID de dossier valide de votre service |
400 | [{"error": "BadRequestError","message": "You cannot move a folder to itself"}] | Utilisez un autre dossier pour parent_folder_id |
400 | [{"error": "BadRequestError","message": "You cannot move a folder to one of its subfolders"}] | Utilisez un dossier qui ne se trouve pas dans le dossier que vous déplacez |
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage templates."}] | Créez ou utilisez une clé API avec la permission manage_templates |
404 | [{"error": "NoResultFound","message": "No result found"}] | Confirmez que l'ID du dossier 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 |
Supprimer un dossier
DELETE /v2/manage-template-folder/{template_folder_id}
Ce point de terminaison supprime définitivement un dossier. Vous ne pouvez supprimer que les dossiers qui ne contiennent aucun gabarit ni sous-dossier. Déplacez les gabarits vers un autre dossier (ou retirez-les du dossier) et supprimez d'abord les sous-dossiers. Les gabarits archivés sont toujours considérés comme faisant partie du dossier.
Paramètres
template_folder_id (obligatoire)
L'ID du dossier à supprimer.
Réponse
Si la requête réussit, le corps de la réponse est en json avec un code d'état 200. La réponse contient le dossier qui a été supprimé :
{
"id": "0c7a3bd5-3d3b-4a7f-9d0b-0f5a6f1f6e11",
"service_id": "afa2be3b-1250-430f-a70f-28a1a9d49dfa",
"name": "Courriels de réinitialisation de mot de passe",
"parent_folder_id": "f025b1a9-63af-43e8-b969-627bfe544bba",
"users_with_permission": [
"5d3a5ab0-2ed8-4cc3-a8f6-9b8d1b5b6a52"
]
}
Codes d'erreur
| status_code | message | Comment corriger |
|---|---|---|
400 | [{"error": "ValidationError","message": "id is not a valid UUID"}] | Utilisez un UUID valide pour template_folder_id |
400 | [{"error": "BadRequestError","message": "Folder is not empty"}] | Déplacez les gabarits hors du dossier et supprimez ses sous-dossiers, puis réessayez |
403 | [{"error": "ForbiddenError","message": "This API key does not have permission to manage templates."}] | Créez ou utilisez une clé API avec la permission manage_templates |
404 | [{"error": "NoResultFound","message": "No result found"}] | Confirmez que l'ID du dossier 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 |
Exemples CURL
Exemple pour obtenir tous les dossiers
curl --request GET \
--url https://api.notification.canada.ca/v2/manage-template-folder \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--header 'Content-Type: application/json'
Exemple pour obtenir un dossier
curl --request GET \
--url https://api.notification.canada.ca/v2/manage-template-folder/TEMPLATE_FOLDER_ID \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--header 'Content-Type: application/json'
Exemple pour créer un dossier
curl --request POST \
--url https://api.notification.canada.ca/v2/manage-template-folder \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"name": "Réinitialisations de mot de passe",
"parent_folder_id": "f025b1a9-63af-43e8-b969-627bfe544bba"
}'
Exemple pour renommer ou déplacer un dossier
curl --request PATCH \
--url https://api.notification.canada.ca/v2/manage-template-folder/TEMPLATE_FOLDER_ID \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"name": "Courriels de réinitialisation de mot de passe",
"parent_folder_id": null
}'
Exemple pour supprimer un dossier
curl --request DELETE \
--url https://api.notification.canada.ca/v2/manage-template-folder/TEMPLATE_FOLDER_ID \
--header 'Authorization: ApiKey-v1 YOUR_API_KEY' \
--header 'Content-Type: application/json'