Eliminar una etiqueta de un ticket de Zoho Desk mediante la API es una operación DELETE sencilla que requiere tanto el ID del ticket como el ID de la etiqueta específica. Este artículo explica el endpoint exacto, los parámetros necesarios y los scopes de OAuth requeridos para hacerlo correctamente.
Por qué esto es importante
Las etiquetas en Zoho Desk ayudan a los equipos a categorizar y filtrar tickets, pero las etiquetas obsoletas o incorrectas pueden distorsionar los informes y la lógica de enrutamiento. Si estás creando una automatización, un script de migración o un flujo de trabajo de limpieza, necesitarás una forma fiable de desvincular etiquetas individuales de los tickets de manera programática. Esto también es útil cuando se sincroniza el metadata de tickets entre Zoho Desk y un sistema externo. Ten en cuenta que Beam Help es soporte experto independiente — no somos el soporte oficial de Zoho.
Paso a paso
Paso 1. Confirma que tus scopes de OAuth están configurados.
Antes de realizar cualquier llamada a la API, asegúrate de que tu aplicación conectada tenga los scopes de OAuth de Zoho Desk correctos autorizados. Como mínimo necesitas Desk.tickets.ALL o la combinación de Desk.tickets.READ y Desk.tickets.DELETE en tu configuración de scopes. [2]
Paso 2. Reúne los identificadores necesarios.
Necesitas dos datos antes de llamar al endpoint:
ticketId— el identificador único del ticket del que deseas eliminar la etiqueta.tagId— el identificador único de la etiqueta específica que deseas desvincular.
Ambos valores son cadenas de texto. Puedes obtener el ticketId desde cualquier llamada de lista o detalle de tickets, y el tagId desde los metadatos de etiquetas asociados a ese ticket. [1]
Paso 3. Llama al endpoint de eliminación de etiqueta.
Envía una solicitud DELETE a la siguiente ruta, sustituyendo tus valores reales:
DELETE /api/v1/tickets/{ticketId}/tags/{tagId}
Se puede pasar un parámetro opcional p (un diccionario) para cualquier parámetro de consulta adicional que requiera tu integración. [1]
Paso 4. Implementa la llamada en Python.
Si estás usando un cliente de Zoho Desk basado en Python, la firma del método tiene este aspecto:
def remove_tags_from_ticket(self, ticketId: str, tagId: str, p: dict = None):
return self.c.request("DELETE", f"/api/v1/tickets/{ticketId}/tags/{tagId}", p, None)
Pasa el ticketId y el tagId como argumentos de cadena posicionales. El cuerpo de la solicitud es None para una operación DELETE — solo la ruta de la URL contiene la información identificadora. [1]
Paso 5. Verifica la respuesta.
Una eliminación exitosa devolverá un estado HTTP 200 o 204. Si recibes un 404, verifica que tanto el ticketId como el tagId sean correctos y que la etiqueta esté realmente asociada a ese ticket. Si recibes un 401 o 403, revisa la configuración de tu scope de OAuth del Paso 1. [2]
Paso 6. (Opcional) Confirma añadiendo etiquetas cuando sea necesario.
Si tu flujo de trabajo también necesita volver a añadir etiquetas a un ticket, la operación complementaria es un POST a la misma ruta base sin el segmento tagId:
POST /api/v1/tickets/{ticketId}/tags
Este endpoint acepta un diccionario data en el cuerpo de la solicitud que contiene los detalles de la etiqueta. [6]
Errores comunes
- Nivel de scope incorrecto. Usar solo
Desk.tickets.READbloqueará las operaciones DELETE. Asegúrate de queDesk.tickets.DELETEoDesk.tickets.ALLesté incluido en tu cadena de scope de OAuth. [2] - Confundir la eliminación de etiquetas con la de plantillas o adjuntos. La API de Zoho Desk tiene endpoints DELETE separados para plantillas de tickets (
/api/v1/ticketTemplates/{templateId}) y adjuntos de tickets (/api/v1/tickets/{ticketId}/attachments/{attachmentId}). Estos son recursos completamente diferentes — no confundas las rutas de los endpoints. [4][5] tagIdausente en la ruta. El identificador de la etiqueta debe aparecer en la propia ruta de la URL, no en el cuerpo de la solicitud ni como parámetro de consulta. Enviar un DELETE a/api/v1/tickets/{ticketId}/tagssin el segmentotagIdno apuntará a una etiqueta específica. [1]
Qué verificar
- Confirma que el scope
Desk.tickets.DELETEoDesk.tickets.ALLesté presente y autorizado en tu configuración de OAuth antes de ejecutar la solicitud. [2] - Verifica que el
tagIdque estás pasando pertenezca realmente al ticket de destino — intentar eliminar una etiqueta que no está asociada a ese ticket devolverá un error. [1] - Después de que la llamada DELETE devuelva un estado de éxito, opcionalmente vuelve a obtener la lista de etiquetas del ticket para confirmar que la etiqueta ya no aparece, asegurando que tu lógica posterior refleje el estado actualizado. [6]