13.19
Buscar transcripciones
/<guild_id>/api/transcripts/searchBusca 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).
/<guild_id>/api/transcripts/searchIdé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)
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| q | string | 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_by | string | opcional | Solo coincide con el contenido escrito por este ID de usuario de Discord. Combínalo con q. |
| participants | string[] | 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_mode | string | 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_bots | boolean | opcional | Incluye en la búsqueda los mensajes de bots y a los bots como participantes. Falso por defecto. |
| opened_by | string | opcional | Quien creó el ticket, como ID de Discord o parte de un nombre de usuario. |
| closed_by | string | opcional | ID de Discord de quien cerró el ticket. |
| channel_id | string | opcional | ID del canal o hilo de Discord que usó el ticket. |
| panel_id | number | opcional | Solo los tickets abiertos desde este panel. |
| opened_from | number | opcional | Marca de tiempo Unix: solo los tickets abiertos en ese momento o después. |
| opened_to | number | opcional | Marca de tiempo Unix: solo los tickets abiertos en ese momento o antes. |
| closed_from | number | opcional | Marca de tiempo Unix: solo los tickets cerrados en ese momento o después. |
| closed_to | number | opcional | Marca de tiempo Unix: solo los tickets cerrados en ese momento o antes. |
| rating_min | number | opcional | Valoración mínima, 1-5. |
| rating_max | number | opcional | Valoración máxima, 1-5. |
| limit | number | opcional | Resultados por página, 1-50 (25 por defecto). |
| offset | number | 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.
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"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{
"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 }
}