Beam Help
Solicitar ayuda

How-to · Zoho DESK

Cómo eliminar archivos adjuntos de tickets en Zoho Desk

Elimina archivos no deseados de tickets de soporte de forma programática mediante la API.

Eliminar un archivo adjunto de un ticket en Zoho Desk se realiza mediante una llamada a la API de tipo DELETE que apunta al archivo adjunto específico por su ID, dentro del contexto del ticket principal — y en algunos casos, de un hilo o borrador de transición específico dentro de ese ticket.


Por qué esto es importante


Cuando se adjunta un archivo a un ticket por error — versión incorrecta, datos sensibles o simplemente desorden — necesitas una forma fiable de eliminarlo de forma programática. Zoho Desk expone varios endpoints DELETE según *dónde* se encuentre el archivo adjunto: directamente en el ticket, dentro de una respuesta de hilo o en un borrador de transición. Elegir el endpoint incorrecto resultará en una solicitud fallida, por lo que entender la jerarquía es fundamental.


> Beam Help es soporte experto independiente para Zoho — no es el soporte oficial de Zoho.


---


Paso a paso


Paso 1. Confirma tus permisos OAuth.

Antes de realizar cualquier llamada de eliminación, verifica que tu aplicación conectada tenga concedido el permiso Desk.tickets.ALL o Desk.tickets.DELETE. Sin el permiso correcto, la API rechazará la solicitud con un error de autorización. [6]


Paso 2. Obtén el ID del archivo adjunto.

Si aún no tienes el attachmentId, llama primero al endpoint de listado. Realiza una solicitud GET a /api/v1/tickets/{ticketId}/attachments, pasando el ticketId correspondiente como parámetro de ruta. La respuesta incluirá el ID de cada archivo adjunto, que necesitarás para la llamada de eliminación. [7]


Paso 3. Elimina un archivo adjunto de nivel superior del ticket.

Para los archivos adjuntos que pertenecen directamente al ticket (no dentro de un hilo), envía una solicitud DELETE a:


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

Proporciona tanto ticketId como attachmentId como parámetros de ruta. Una llamada exitosa elimina el archivo del registro del ticket. [1][2]


En Python, la llamada tiene este aspecto:


client.delete_ticket_attachment(ticketId="123456", attachmentId="987654")

Paso 4. Elimina un archivo adjunto dentro de un hilo del ticket.

Si el archivo se adjuntó a una respuesta o hilo específico dentro del ticket, debes incluir el thread_id en la ruta. Usa:


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

Los tres parámetros de ruta — ticketid, threadid y attachment_id — son obligatorios. Omitir el segmento del hilo hará que la solicitud falle o apunte al recurso incorrecto. [3]


En Python:


client.delete_attachment(ticket_id="123456", thread_id="111", attachment_id="987654")

Paso 5. Elimina un archivo adjunto de un borrador de transición.

Si el archivo adjunto está asociado a un blueprint o borrador de transición de flujo de trabajo, en lugar del cuerpo del ticket o del hilo, se aplica un endpoint diferente:


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

Aquí necesitas el ticketId, el transitionId del borrador y el attachmentId. [4]


En Python:


client.op_16_delete_attachment_of_transition(
    ticketId="123456",
    transitionId="555",
    attachmentId="987654"
)

---


Errores comunes


  • Usar el endpoint de nivel de ticket para archivos adjuntos de hilos. El endpoint de nivel superior DELETE /api/v1/tickets/{ticketId}/attachments/{attachmentId} no localizará archivos que estén dentro del contexto de un hilo. Asegúrate siempre de que el endpoint coincida con la ubicación real del archivo adjunto. [1][3]

  • Permiso faltante o incorrecto. El permiso Desk.tickets.DELETE debe incluirse explícitamente en tu configuración OAuth. Si solo solicitaste READ o WRITE, las llamadas de eliminación serán rechazadas. [6]

  • Confundir archivos adjuntos de tickets con archivos adjuntos de cuentas. Existe un endpoint separado — DELETE /api/v1/accounts/{accountId}/attachments/{attachmentId} — para archivos adjuntos a registros de cuentas. No lo uses para archivos de nivel de ticket. [8]

  • No obtener el ID del archivo adjunto primero. Codificar de forma fija o adivinar los IDs de archivos adjuntos no es fiable. Usa siempre el endpoint de listado (GET /api/v1/tickets/{ticketId}/attachments) para obtener el ID correcto antes de intentar la eliminación. [7]

---


Qué verificar


  • Parámetros de ruta correctos: Confirma que ticketId, attachmentId y (cuando corresponda) thread_id o transitionId correspondan a registros reales y existentes antes de enviar la solicitud. [1][3][4]
  • Cobertura del permiso OAuth: Verifica que Desk.tickets.DELETE o Desk.tickets.ALL esté presente en la lista de permisos de tu token activo. [6]
  • Ubicación del archivo adjunto: Tras la eliminación, vuelve a ejecutar GET /api/v1/tickets/{ticketId}/attachments para confirmar que el archivo adjunto ya no aparece en la respuesta. [7]

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] GET /api/v1/tickets/{ticketId}/attachments
  8. [8] DELETE /api/v1/accounts/{accountId}/attachments/{attachmentId}
Eliminar Archivos Adjuntos de Tickets | Beam Help — Beam Help