La suppression d'une pièce jointe dans Zoho Desk s'effectue via un appel API DELETE ciblant la pièce jointe spécifique par son identifiant, dans le contexte du ticket parent — et, dans certains cas, d'un thread ou d'un brouillon de transition spécifique au sein de ce ticket.
Pourquoi c'est important
Lorsqu'un fichier est joint à un ticket par erreur — mauvaise version, données sensibles ou simple encombrement — vous avez besoin d'un moyen fiable de le supprimer de manière programmatique. Zoho Desk expose plusieurs endpoints DELETE selon *l'emplacement* de la pièce jointe : directement sur le ticket, dans une réponse de thread, ou sur un brouillon de transition. Choisir le mauvais endpoint entraînera l'échec de la requête, il est donc important de comprendre la hiérarchie.
> Beam Help est un service d'assistance expert indépendant pour Zoho — et non le support officiel de Zoho.
---
Étape par étape
Étape 1. Vérifiez vos scopes OAuth.
Avant d'effectuer tout appel de suppression, vérifiez que votre application connectée a bien reçu le scope Desk.tickets.ALL ou Desk.tickets.DELETE. Sans le scope approprié, l'API rejettera la requête avec une erreur d'autorisation. [6]
Étape 2. Récupérez l'identifiant de la pièce jointe.
Si vous ne disposez pas encore de l'attachmentId, appelez d'abord l'endpoint de liste. Envoyez une requête GET vers /api/v1/tickets/{ticketId}/attachments, en passant le ticketId concerné comme paramètre de chemin. La réponse inclura l'identifiant de chaque pièce jointe, dont vous aurez besoin pour l'appel de suppression. [7]
Étape 3. Supprimez une pièce jointe de niveau ticket.
Pour les pièces jointes appartenant directement au ticket (et non à un thread), envoyez une requête DELETE vers :
DELETE /api/v1/tickets/{ticketId}/attachments/{attachmentId}
Fournissez ticketId et attachmentId comme paramètres de chemin. Un appel réussi supprime le fichier de l'enregistrement du ticket. [1][2]
En Python, l'appel se présente ainsi :
client.delete_ticket_attachment(ticketId="123456", attachmentId="987654")
Étape 4. Supprimez une pièce jointe dans un thread de ticket.
Si le fichier a été joint à une réponse ou à un thread spécifique au sein du ticket, vous devez inclure le thread_id dans le chemin. Utilisez :
DELETE /api/v1/tickets/{ticket_id}/threads/{thread_id}/attachments/{attachment_id}
Les trois paramètres de chemin — ticketid, threadid et attachment_id — sont obligatoires. Omettre le segment thread entraînera l'échec de la requête ou ciblera la mauvaise ressource. [3]
En Python :
client.delete_attachment(ticket_id="123456", thread_id="111", attachment_id="987654")
Étape 5. Supprimez une pièce jointe d'un brouillon de transition.
Si la pièce jointe est associée à un blueprint ou à un brouillon de transition de workflow plutôt qu'au corps du ticket ou à un thread, un endpoint distinct s'applique :
DELETE /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments/{attachmentId}
Vous avez besoin ici du ticketId, du transitionId du brouillon et de l'attachmentId. [4]
En Python :
client.op_16_delete_attachment_of_transition(
ticketId="123456",
transitionId="555",
attachmentId="987654"
)
---
Erreurs courantes
- Utiliser l'endpoint de niveau ticket pour les pièces jointes de thread. L'endpoint
DELETE /api/v1/tickets/{ticketId}/attachments/{attachmentId}de niveau supérieur ne localisera pas les fichiers dont la portée est limitée à un thread. Faites toujours correspondre l'endpoint à l'emplacement réel de la pièce jointe. [1][3]
- Scope manquant ou incorrect. Le scope
Desk.tickets.DELETEdoit être explicitement inclus dans votre configuration OAuth. Si vous n'avez demandé queREADouWRITE, les appels de suppression seront rejetés. [6]
- Confondre les pièces jointes de ticket avec les pièces jointes de compte. Il existe un endpoint distinct —
DELETE /api/v1/accounts/{accountId}/attachments/{attachmentId}— pour les fichiers joints aux enregistrements de compte. N'utilisez pas cet endpoint pour les fichiers de niveau ticket. [8]
- Ne pas récupérer l'identifiant de la pièce jointe au préalable. Coder en dur ou deviner les identifiants de pièces jointes n'est pas fiable. Utilisez toujours l'endpoint de liste (
GET /api/v1/tickets/{ticketId}/attachments) pour récupérer l'identifiant correct avant de tenter la suppression. [7]
---
Points à vérifier
- Paramètres de chemin corrects : Confirmez que
ticketId,attachmentIdet, le cas échéant,thread_idoutransitionIdcorrespondent tous à des enregistrements réels et existants avant d'envoyer la requête. [1][3][4] - Couverture du scope OAuth : Vérifiez que
Desk.tickets.DELETEouDesk.tickets.ALLest présent dans la liste des scopes de votre token actif. [6] - Emplacement de la pièce jointe : Après la suppression, relancez
GET /api/v1/tickets/{ticketId}/attachmentspour confirmer que la pièce jointe n'apparaît plus dans la réponse. [7]