Beam Help
Demander de l'aide

How-to · Zoho DESK

Comment supprimer une pièce jointe d'un ticket dans Zoho Desk

Supprimez un fichier ou une pièce jointe d'un ticket de support.

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 au sein d'un ticket donné. Selon l'emplacement de la pièce jointe — sur le ticket lui-même, sur un fil de discussion ou sur un brouillon de transition — vous utiliserez un endpoint légèrement différent.


Pourquoi c'est important


Les pièces jointes des tickets de support peuvent contenir des données client sensibles, des fichiers obsolètes ou simplement du contenu superflu qui complique le triage. La capacité à les supprimer par programmation est essentielle pour les workflows de nettoyage automatisé, les politiques de conservation des données imposées par la conformité, ou toute intégration gérant le contenu des tickets à grande échelle. En tant qu'expert indépendant pour Zoho (et non le support officiel de Zoho), Beam Help vous guide à travers chaque variante de cette opération.


Étape par étape


Étape 1. Vérifiez que vos scopes OAuth sont en place.

Avant d'effectuer tout appel API destructif, vérifiez que votre application connectée dispose du scope Desk.tickets.DELETE (et de Desk.tickets.ALL si vous souhaitez des permissions complètes sur les tickets). Sans ces scopes, la requête sera rejetée au niveau de la couche d'autorisation. [6]


Étape 2. Identifiez la pièce jointe à supprimer.

Vous avez besoin de deux identifiants : le ticketId du ticket parent et l'attachmentId du fichier à supprimer. Si vous n'êtes pas certain de l'attachmentId, récupérez-le d'abord avec une requête GET vers /api/v1/tickets/{ticketId}/attachments/{attachmentId} afin de confirmer que vous ciblez le bon enregistrement avant de le supprimer. [8]


Étape 3. Supprimez une pièce jointe de niveau ticket.

Envoyez une requête DELETE vers l'endpoint suivant, en remplaçant les identifiants par les vôtres :


DELETE /api/v1/tickets/{ticketId}/attachments/{attachmentId}

En Python, cela ressemble à :


response = client.delete_ticket_attachment(
    ticketId="your_ticket_id",
    attachmentId="your_attachment_id"
)

Un appel réussi supprime définitivement la pièce jointe de l'enregistrement du ticket. [1]


Étape 4. (Alternative) Supprimez une pièce jointe sur un fil de discussion du ticket.

Si le fichier a été téléversé dans le cadre d'un fil de réponse ou de note plutôt que directement sur le ticket, vous devez inclure le thread_id dans le chemin. Utilisez plutôt cet endpoint :


DELETE /api/v1/tickets/{ticket_id}/threads/{thread_id}/attachments/{attachment_id}

En Python :


response = client.delete_attachment(
    ticket_id="your_ticket_id",
    thread_id="your_thread_id",
    attachment_id="your_attachment_id"
)

Cette variante nécessite trois paramètres de chemin au lieu de deux ; assurez-vous donc de disposer du bon thread_id avant de l'appeler. [3]


Étape 5. (Alternative) Supprimez une pièce jointe d'un brouillon de transition.

Si votre workflow utilise des transitions de ticket et qu'une pièce jointe a été ajoutée à un brouillon de transition, un endpoint distinct gère ce cas :


DELETE /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments/{attachmentId}

En Python :


response = client.op_16_delete_attachment_of_transition(
    ticketId="your_ticket_id",
    transitionId="your_transition_id",
    attachmentId="your_attachment_id"
)

Cet endpoint est spécifiquement limité aux pièces jointes des brouillons de transition et n'affectera pas les pièces jointes stockées directement sur le ticket ou ses fils de discussion. [4]


---


Erreurs courantes


  • Mauvais endpoint pour le type de pièce jointe. L'API Zoho Desk expose des routes distinctes pour les pièces jointes de niveau ticket, de niveau fil de discussion et de niveau brouillon de transition. Utiliser l'endpoint de niveau ticket (/tickets/{ticketId}/attachments/{attachmentId}) lorsque le fichier appartient en réalité à un fil de discussion renverra une erreur ou une réponse « introuvable ». Confirmez toujours l'emplacement d'origine de la pièce jointe. [1][3]

  • Scope manquant ou incorrect. Le scope Desk.tickets.DELETE doit être explicitement inclus dans votre requête de token OAuth. Disposer uniquement de Desk.tickets.READ ou Desk.tickets.WRITE n'est pas suffisant pour la suppression. Vérifiez votre configuration de scopes et réautorisez si nécessaire. [6]

  • Confusion entre pièces jointes de ticket et pièces jointes de compte. Si vous travaillez dans un contexte qui gère également des enregistrements de compte, notez que les pièces jointes de niveau compte utilisent un chemin entièrement différent (/api/v1/accounts/{accountId}/attachments/{attachmentId}) et ne doivent pas être confondues avec les endpoints de pièces jointes de ticket. [7]

  • Opération irréversible. Un appel DELETE sur une pièce jointe est permanent. Il n'existe pas de corbeille ni d'annulation. Utilisez toujours l'endpoint GET pour vérifier le bon attachmentId avant d'effectuer la suppression. [8]

---


Ce qu'il faut vérifier


  • Confirmez que la pièce jointe a bien été supprimée en appelant GET /api/v1/tickets/{ticketId}/attachments/{attachmentId} après la suppression — cela devrait renvoyer un 404 ou une réponse vide, indiquant que le fichier a été retiré. [8]
  • Vérifiez la couverture des scopes dans les paramètres de votre client OAuth pour vous assurer que Desk.tickets.DELETE (ou Desk.tickets.ALL) est présent et que le token a été actualisé depuis l'ajout du scope. [6]
  • Vérifiez que la bonne variante de chemin a été utilisée — niveau ticket, niveau fil de discussion ou niveau transition — afin de vous assurer que la bonne pièce jointe a été ciblée et qu'aucun fichier non souhaité n'a été affecté. [1][3][4]

Sources cited

  1. [1] DELETE /api/v1/tickets/{ticketId}/attachments/{attachmentId}
  2. [2] DELETE /api/v1/tickets/{ticket_id}/attachments/{attachment_id}
  3. [3] DELETE /api/v1/tickets/{ticket_id}/threads/{thread_id}/attachments/{attachment_id}
  4. [4] DELETE /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments/{attachmentId}
  5. [5] server.py: build_zoho_links
  6. [6] config.py
  7. [7] DELETE /api/v1/accounts/{accountId}/attachments/{attachmentId}
  8. [8] GET /api/v1/tickets/{ticketId}/attachments/{attachmentId}
Supprimer une pièce jointe de ticket | Beam Help — Beam Help