Documentación

Aprende TicketsX más rápido

Guías de instalación, la referencia completa de comandos, las funciones Premium y la API REST en un solo sitio.

13.19

Buscar transcripciones

GET/<guild_id>/api/transcripts/search

Busca en cada ticket cerrado del servidor, no solo en sus metadatos: qué se dijo dentro, quién lo dijo, quién participó, cuándo se abrió o se cerró, su panel, su valoración o su ID de canal de Discord. Es el mismo motor que la búsqueda avanzada del panel. Requiere el permiso `search_transcripts` (desactivado por defecto).

POST/<guild_id>/api/transcripts/search

Idéntico, pero con los filtros enviados en un cuerpo JSON en lugar de como parámetros de consulta. Más cómodo para consultas largas y listas de participantes. Si envías ambos, manda el cuerpo.

Cada resultado trae los metadatos del ticket, hasta 8 participantes y, si buscaste por contenido, hasta 3 fragmentos de mensajes coincidentes para que veas *por qué* encaja. Lleva el TicketId de cualquier resultado directamente a Obtener una transcripción para la lista completa de mensajes, o a Obtener el HTML de una transcripción para el archivo renderizado.

Filtros (todos opcionales, combina los que quieras)

NombreTipoObligatorioDescripción
qstring
opcional
Búsqueda de texto libre en el contenido de los mensajes, 200 caracteres máx. El índice ignora las palabras de menos de 3 caracteres.
said_bystring
opcional
Solo coincide con el contenido escrito por este ID de usuario de Discord. Combínalo con q.
participantsstring[]
opcional
Hasta 5 usuarios que escribieron en el ticket, cada uno como ID de Discord o como parte de un nombre de usuario. Separados por comas en GET, como array en POST.
participants_modestring
opcional
all (por defecto) exige que todos los participantes indicados hayan escrito en el mismo ticket; any encuentra los tickets donde escribió al menos uno.
include_botsboolean
opcional
Incluye en la búsqueda los mensajes de bots y a los bots como participantes. Falso por defecto.
opened_bystring
opcional
Quien creó el ticket, como ID de Discord o parte de un nombre de usuario.
closed_bystring
opcional
ID de Discord de quien cerró el ticket.
channel_idstring
opcional
ID del canal o hilo de Discord que usó el ticket.
panel_idnumber
opcional
Solo los tickets abiertos desde este panel.
opened_fromnumber
opcional
Marca de tiempo Unix: solo los tickets abiertos en ese momento o después.
opened_tonumber
opcional
Marca de tiempo Unix: solo los tickets abiertos en ese momento o antes.
closed_fromnumber
opcional
Marca de tiempo Unix: solo los tickets cerrados en ese momento o después.
closed_tonumber
opcional
Marca de tiempo Unix: solo los tickets cerrados en ese momento o antes.
rating_minnumber
opcional
Valoración mínima, 1-5.
rating_maxnumber
opcional
Valoración máxima, 1-5.
limitnumber
opcional
Resultados por página, 1-50 (25 por defecto).
offsetnumber
opcional
Resultados que se omiten para la paginación, 10000 máx. (0 por defecto).

La búsqueda está limitada a 10 peticiones por minuto y token, aparte del resto de lecturas, y se ejecuta con un tiempo máximo estricto. Una búsqueda que no termina a tiempo devuelve 504. Acota los filtros (añade un rango de fechas o un panel) y reintenta, en vez de repetir la misma consulta. Los valores que no pasan la validación se descartan en lugar de rechazarse, así que mira el objeto filters que devuelve la respuesta para ver qué se aplicó de verdad.

La búsqueda lee el índice de transcripciones, que se construye mientras el servidor tiene Premium y se completa con tu archivo existente al pasar a Premium por primera vez. El objeto coverage de cada respuesta te dice cuántas de tus transcripciones están indexadas (indexed) sobre el total guardado (total). Si la incorporación sigue en marcha, todavía no coincidirán.

Ejemplo de petición: qué dijo un usuario, en tickets en los que también trabajó alguien del equipo
curl -X GET \
  -H "Authorization: Bearer <API_TOKEN>" \
  "https://api.ticketsx.xyz/<guild_id>/api/transcripts/search?q=refund&participants=123456789,987654321&participants_mode=all&closed_from=1730000000&limit=25"
Ejemplo de petición: la misma búsqueda como cuerpo JSON
curl -X POST \
  -H "Authorization: Bearer <API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"q":"refund","participants":["123456789","987654321"],"participants_mode":"all","closed_from":1730000000,"limit":25}' \
  https://api.ticketsx.xyz/<guild_id>/api/transcripts/search
Ejemplo de respuesta
{
  "transcripts": [
    {
      "TicketId": 42,
      "AuthorId": "123456789",
      "AuthorUsername": "jane",
      "PanelId": 1,
      "PanelName": "Support",
      "Rating": 5,
      "RatingCount": 1,
      "CloseReason": "Resolved",
      "CreatedAt": 1732200000,
      "ClosedAt": 1732210000,
      "ChannelId": "1122334455",
      "ClosedBy": "987654321",
      "Participants": [
        { "UserId": "123456789", "Username": "jane", "MessageCount": 12, "IsBot": false }
      ],
      "Snippets": [
        { "AuthorId": "123456789", "AuthorUsername": "jane", "Content": "my refund never arrived", "CreatedAt": 1732200050 }
      ]
    }
  ],
  "pagination": { "total": 1, "limit": 25, "offset": 0, "returned": 1 },
  "coverage": { "indexed": 480, "total": 480 },
  "filters": { "q": "refund", "participants_mode": "all", "limit": 25 }
}