13.19
Mencari transkrip
/<guild_id>/api/transcripts/searchMenelusuri setiap tiket yang sudah ditutup di server, bukan cuma metadatanya: apa yang dibicarakan di dalamnya, siapa yang mengucapkan, siapa saja yang ikut, kapan tiketnya dibuka atau ditutup, panelnya, penilaiannya, atau ID kanal Discord-nya. Mesinnya sama dengan pencarian mendalam di dasbor. Butuh izin `search_transcripts` (bawaannya mati).
/<guild_id>/api/transcripts/searchSama saja, hanya penyaringnya dikirim sebagai isi JSON alih-alih parameter kueri. Lebih nyaman untuk kueri panjang dan daftar peserta. Kalau Anda mengirim keduanya, isi permintaan yang dipakai.
Setiap hasil membawa metadata tiket, sampai 8 peserta, dan kalau Anda mencari berdasarkan isi, sampai 3 cuplikan pesan yang cocok supaya terlihat *kenapa* tiket itu muncul. Bawa TicketId dari hasil mana pun langsung ke Mengambil Transkrip untuk daftar pesan lengkap, atau ke Mengambil HTML Transkrip untuk arsip jadinya.
Penyaring (semuanya opsional; gabungkan sebanyak yang Anda mau)
| Nama | Jenis | Wajib | Keterangan |
|---|---|---|---|
| q | string | opsional | Pencarian teks bebas pada isi pesan, maksimal 200 karakter. Kata yang kurang dari 3 karakter diabaikan indeks. |
| said_by | string | opsional | Hanya mencocokkan isi yang ditulis ID pengguna Discord ini. Gabungkan dengan q. |
| participants | string[] | opsional | Sampai 5 pengguna yang menulis di tiket, masing-masing berupa ID pengguna Discord atau sebagian nama pengguna. Dipisah koma pada GET, berupa larik pada POST. |
| participants_mode | string | opsional | all (bawaan) mengharuskan semua peserta yang disebut menulis di tiket yang sama; any mencocokkan tiket yang di dalamnya setidaknya satu dari mereka menulis. |
| include_bots | boolean | opsional | Menyertakan pesan bot dan peserta bot dalam pencocokan. Bawaannya false. |
| opened_by | string | opsional | Pembuat tiket, berupa ID pengguna Discord atau sebagian nama pengguna. |
| closed_by | string | opsional | ID pengguna Discord yang menutup tiket. |
| channel_id | string | opsional | ID kanal atau utas Discord yang dipakai tiket. |
| panel_id | number | opsional | Hanya tiket yang dibuka dari panel ini. |
| opened_from | number | opsional | Stempel waktu Unix: hanya tiket yang dibuka pada saat itu atau sesudahnya. |
| opened_to | number | opsional | Stempel waktu Unix: hanya tiket yang dibuka pada saat itu atau sebelumnya. |
| closed_from | number | opsional | Stempel waktu Unix: hanya tiket yang ditutup pada saat itu atau sesudahnya. |
| closed_to | number | opsional | Stempel waktu Unix: hanya tiket yang ditutup pada saat itu atau sebelumnya. |
| rating_min | number | opsional | Penilaian terendah, 1-5. |
| rating_max | number | opsional | Penilaian tertinggi, 1-5. |
| limit | number | opsional | Hasil per halaman, 1-50 (bawaan 25). |
| offset | number | opsional | Hasil yang dilewati untuk penomoran halaman, maksimal 10000 (bawaan 0). |
Pencarian dibatasi 10 permintaan per menit per token, terpisah dari pembacaan lain, dan berjalan dengan jatah waktu yang ketat. Pencarian yang tidak selesai tepat waktu mengembalikan 504. Persempit penyaringnya (tambahkan rentang tanggal atau panel) lalu coba lagi, jangan mengulang kueri yang sama. Nilai yang tidak lolos pemeriksaan dibuang alih-alih membuat permintaan ditolak, jadi periksa objek filters pada respons untuk melihat apa yang benar-benar dipakai.
Pencarian membaca indeks transkrip, yang dibangun selama server punya Premium dan diisikan ke arsip lama Anda saat pertama kali berlangganan. Objek coverage pada setiap respons memberi tahu berapa transkrip Anda yang sudah terindeks (indexed) dari seluruh yang tersimpan (total). Kalau pengisian indeksnya masih berjalan, kedua angka itu belum sama.
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 }
}