Un utilisateur tente de supprimer un fichier joint d'un enregistrement CRM, mais le fichier reste sur l'enregistrement ou l'appel API échoue ; cela provient généralement des autorisations, du fait que la pièce jointe se trouve dans un endroit différent (pièces jointes d'e-mail ou d'enregistrement), ou qu'une synchronisation/intégration recrée le fichier.
Ce que cela signifie — explication concrète liée à la surface de l'API Zoho
Lorsque vous supprimez une pièce jointe dans Zoho CRM, vous supprimez un fichier lié à l'objet Pièces jointes/Notes d'un enregistrement ; les pièces jointes d'e-mails et les fichiers stockés par les intégrations (par exemple, Campaigns, Mail ou synchronisations tierces) peuvent ne pas se trouver dans le même stockage et ne seront pas supprimés par le même appel API[2][8]. La suppression peut également être bloquée par des paramètres utilisateur ou administrateur qui empêchent la modification des enregistrements ou par des intégrations qui recréent ou resynchronisent les fichiers lorsqu'une synchronisation périodique s'exécute[5][6].
Causes courantes
- Le fichier est une pièce jointe d'e-mail dans Zoho Mail ou lié via le module complémentaire Mail ; la suppression depuis l'interface utilisateur/API CRM ne supprimera pas la pièce jointe d'origine de l'e-mail[2].
- L'intégration ou la synchronisation recrée la pièce jointe lors de la prochaine exécution (comportement de Campaigns/synchronisation périodique)[5][8].
- Le compte ou le jeton API n'a pas les autorisations de suppression pour le module ou le point de terminaison des pièces jointes (rôle utilisateur, profil ou portée OAuth)[6].
- La pièce jointe est stockée en tant qu'enregistrement associé (Notes, Pièces jointes, ou dans un champ de fichier personnalisé) et votre requête cible le mauvais point de terminaison ou le mauvais ID d'enregistrement[8].
- Le fichier est plus grand que les limites ou est utilisé par un autre processus ; l'API renvoie une erreur ou expire.
Comment le résoudre
- Confirmez où se trouve le fichier. Ouvrez l'enregistrement CRM et vérifiez les Listes associées : Pièces jointes, Notes, E-mails. S'il apparaît sous E-mails, supprimez-le de Zoho Mail/Gadget ou dissociez l'e-mail plutôt que d'utiliser le point de terminaison Pièces jointes[2][8].
- Vérifiez les paramètres d'intégration/synchronisation. Si une synchronisation Campaigns/périodique ou un connecteur tiers est configuré, désactivez temporairement cette synchronisation ou suspendez le mappage, puis supprimez le fichier afin qu'il ne soit pas recréé par le prochain cycle de synchronisation[5][8].
- Vérifiez les autorisations utilisateur et API. Dans Paramètres CRM > Utilisateurs et contrôle > Profils, assurez-vous que l'utilisateur/profil a l'autorisation de supprimer des pièces jointes sur ce module. Pour les appels API, confirmez que les portées OAuth incluent ZohoCRM.modules.ALL et les portées qui autorisent les suppressions, ou utilisez un jeton administrateur[6].
- Utilisez le bon point de terminaison API et les bons ID. Pour les pièces jointes d'enregistrements CRM, appelez l'API Pièces jointes avec l'ID d'enregistrement et l'ID de pièce jointe ; pour les notes ou les champs de fichier, utilisez respectivement les points de terminaison Notes ou Fichiers. Confirmez les ID depuis la Liste associée de l'interface utilisateur CRM ou l'API Enregistrements avant de supprimer.
- Réessayez et vérifiez les journaux. Effectuez l'appel de suppression, puis confirmez via GET sur la liste des pièces jointes de l'enregistrement. Si le fichier réapparaît, revérifiez l'étape 2 pour une synchronisation active ou un webhook qui le recrée.
Quand escalader
Si vous avez confirmé le type de fichier et utilisé la bonne API/les bons points de terminaison avec les autorisations adéquates, mais que la pièce jointe réapparaît toujours ou que l'API de suppression renvoie une erreur non descriptive, ouvrez un ticket auprès du support Zoho en incluant : l'ID d'enregistrement, l'ID de pièce jointe, le module concerné, la requête/réponse API exacte (sans secrets) et l'heure à laquelle le problème s'est produit afin que le support puisse retracer la synchronisation/le webhook ou la réplication backend.