13.19
Căutarea transcrierilor
/<guild_id>/api/transcripts/searchCaută în fiecare tichet închis de pe server, nu doar în datele despre el: ce s-a spus înăuntru, cine a spus, cine a participat, când a fost deschis sau închis, din ce panou vine, ce evaluare a primit sau ce ID de canal Discord a avut. Este același motor ca la căutarea în adâncime din panou. Cere permisiunea `search_transcripts` (oprită din start).
/<guild_id>/api/transcripts/searchLa fel, doar că filtrele se trimit într-un corp JSON în loc de parametri de interogare. E mai comod la căutările lungi și la listele de participanți. Dacă le trimiți pe amândouă, câștigă corpul cererii.
Fiecare rezultat aduce datele tichetului, până la 8 participanți și, dacă ai căutat după conținut, până la 3 fragmente potrivite, ca să vezi *de ce* a apărut tichetul. Ia TicketId din orice rezultat și du-l direct la Aducerea unei transcrieri pentru lista completă de mesaje sau la Aducerea transcrierii în HTML pentru arhiva gata făcută.
Filtre (toate opționale; combină câte vrei)
| Nume | Tip | Obligatoriu | Descriere |
|---|---|---|---|
| q | string | opțional | Căutare liberă în conținutul mesajelor, cel mult 200 de caractere. Cuvintele mai scurte de 3 caractere sunt ignorate de index. |
| said_by | string | opțional | Ia în calcul doar conținutul scris de acest ID de utilizator Discord. Folosește-l împreună cu q. |
| participants | string[] | opțional | Până la 5 utilizatori care au scris în tichet, fiecare ca ID de utilizator Discord sau ca parte dintr-un nume. Separați prin virgulă la GET, ca listă la POST. |
| participants_mode | string | opțional | all (implicit) cere ca toți participanții trecuți să fi scris în același tichet; any găsește tichetele în care a scris măcar unul dintre ei. |
| include_bots | boolean | opțional | Include în căutare mesajele și participanții care sunt boți. Implicit este false. |
| opened_by | string | opțional | Cel care a deschis tichetul, ca ID de utilizator Discord sau ca parte dintr-un nume. |
| closed_by | string | opțional | ID-ul de Discord al celui care a închis tichetul. |
| channel_id | string | opțional | ID-ul canalului sau al firului de Discord folosit de tichet. |
| panel_id | number | opțional | Doar tichetele deschise din acest panou. |
| opened_from | number | opțional | Marcaj de timp Unix: doar tichetele deschise în acel moment sau după. |
| opened_to | number | opțional | Marcaj de timp Unix: doar tichetele deschise în acel moment sau înainte. |
| closed_from | number | opțional | Marcaj de timp Unix: doar tichetele închise în acel moment sau după. |
| closed_to | number | opțional | Marcaj de timp Unix: doar tichetele închise în acel moment sau înainte. |
| rating_min | number | opțional | Evaluarea minimă, 1-5. |
| rating_max | number | opțional | Evaluarea maximă, 1-5. |
| limit | number | opțional | Rezultate pe pagină, 1-50 (implicit 25). |
| offset | number | opțional | Rezultate sărite pentru paginare, cel mult 10000 (implicit 0). |
Căutarea este limitată la 10 cereri pe minut pentru fiecare jeton, separat de celelalte citiri, și rulează cu un timp strâns măsurat. O căutare care nu apucă să se termine răspunde cu 504. Restrânge filtrele (adaugă un interval de timp sau un panou) și încearcă din nou, în loc să repeți aceeași căutare. Valorile care nu trec de verificare sunt lăsate deoparte, nu duc la respingerea cererii, așa că uită-te în obiectul filters din răspuns ca să vezi ce s-a aplicat de fapt.
Căutarea citește indexul de transcrieri, care se construiește cât timp serverul are Premium și se completează peste arhiva ta veche la prima trecere la Premium. Obiectul coverage din fiecare răspuns îți spune câte transcrieri sunt indexate (indexed) din totalul păstrat (total). Dacă indexarea arhivei vechi încă rulează, cele două numere nu se potrivesc deocamdată.
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 }
}