La suppression d'une entrée de temps d'un ticket dans Zoho Desk s'effectue via une unique requête DELETE authentifiée vers le point de terminaison des entrées de temps, en transmettant l'identifiant du ticket et celui de l'entrée de temps en tant que paramètres de chemin.
Pourquoi c'est important
Les entrées de temps enregistrées sur les tickets de support alimentent la facturation, les rapports SLA et les indicateurs de productivité des agents. Si une entrée a été saisie par erreur — mauvais ticket, soumission en double ou durée incorrecte — vous avez besoin d'un moyen propre de la supprimer sans affecter les autres enregistrements. Cela est également pertinent lors de l'automatisation du nettoyage du suivi du temps via des scripts ou des intégrations.
> Remarque : Beam Help est un support expert indépendant pour Zoho — et non le support officiel de Zoho.
---
Étape par étape
Étape 1. Vérifiez vos portées OAuth.
Avant d'effectuer tout appel API, vérifiez que le jeton de votre application connectée inclut la portée Desk.tickets.ALL ou Desk.tickets.DELETE. Sans la portée correcte, la requête sera rejetée avec une erreur d'autorisation. [2]
Étape 2. Identifiez les deux identifiants requis.
Vous avez besoin de deux valeurs exactement :
ticketId— l'identifiant unique du ticket auquel appartient l'entrée de temps.timeEntryId— l'identifiant unique de l'entrée de temps spécifique que vous souhaitez supprimer.
Ces deux valeurs sont des chaînes de caractères. Vous pouvez les récupérer via un appel GET préalable à la liste des entrées de temps du ticket, ou depuis l'URL de l'interface Zoho Desk. [1]
Étape 3. Construisez la requête DELETE.
Envoyez une requête HTTP DELETE vers le point de terminaison suivant, en remplaçant les identifiants par les vôtres :
DELETE /api/v1/tickets/{ticketId}/timeEntries/{timeEntryId}
Inclure l'en-tête Authorization: Bearer <access_token> ainsi que l'en-tête orgId requis par l'API de Zoho Desk. [1]
Étape 4. Exécutez l'appel en Python (facultatif).
Si vous travaillez avec une intégration Python, l'appel suit ce modèle :
def delete_ticket_time_entry(self, ticketId: str, timeEntryId: str, p: dict = None):
return self.c.request(
"DELETE",
f"/api/v1/tickets/{ticketId}/timeEntries/{timeEntryId}",
p,
None
)
Passez ticketId et timeEntryId en tant qu'arguments positionnels ; le paramètre optionnel p peut transporter tout paramètre de requête supplémentaire requis par votre environnement. [1]
Étape 5. Gérez la réponse.
Une suppression réussie renvoie un HTTP 204 No Content ou un statut de succès similaire avec un corps vide. Si vous recevez une réponse 4xx, vérifiez vos identifiants et vos portées OAuth avant de réessayer. [1]
---
Erreurs courantes
- Mauvais type d'entité. Les entrées de temps peuvent également être associées à des contacts (
/api/v1/contacts/{contactId}/timeEntries/{timeEntryId}) ou à des comptes (/api/v1/accounts/{accountId}/timeEntries/{timeEntryId}). Assurez-vous de cibler le point de terminaison des tickets et non l'un de ces points de terminaison similaires, sinon vous obtiendrez une erreur « introuvable » même si l'entrée existe. [4][8] - Portée OAuth insuffisante. La portée
Desk.tickets.READseule ne suffit pas — vous devez disposer d'une portée autorisant la suppression, telle queDesk.tickets.DELETEouDesk.tickets.ALL. [2] - Identifiants inversés. Placer le
timeEntryIdà la position duticketId(ou vice versa) entraînera une erreur de ressource introuvable. Vérifiez bien l'ordre : l'identifiant du ticket vient en premier dans le chemin, celui de l'entrée de temps en second. [1]
---
Points à vérifier
- Couverture des portées : Confirmez que votre jeton OAuth a été émis avec
Desk.tickets.DELETEouDesk.tickets.ALLavant d'effectuer l'appel. [2] - Chemin du point de terminaison correct : Vérifiez que l'URL est bien
/api/v1/tickets/{ticketId}/timeEntries/{timeEntryId}— et non la variante contacts ou comptes. [1][4][8] - Code de réponse de succès : Un
204(ou statut de succès équivalent) confirme la suppression ; tout code dans la plage4xxsignifie que l'entrée n'a pas été supprimée et nécessite une investigation. [1]