13.19
Претърсване на записи
/<guild_id>/api/transcripts/searchТърси във всеки затворен тикет в сървъра, а не само в данните за него: какво е казано вътре, кой го е казал, кой е участвал, кога е отворен или затворен, от кой панел е, каква оценка е получил или какъв идентификатор на канал в Discord е имал. Това е същият механизъм като задълбоченото търсене в таблото. Изисква правото `search_transcripts` (изключено по подразбиране).
/<guild_id>/api/transcripts/searchСъщото, само че филтрите се пращат в тяло JSON вместо като параметри на заявката. По-удобно е при дълги търсения и при списъци с участници. Ако пратите и двете, важи тялото.
Всеки резултат носи данните за тикета, до 8 участници, а ако сте търсили по съдържание, и до 3 съвпадащи откъса от съобщения, за да видите *защо* е намерен. Вземете TicketId от който и да е резултат и го подайте на Взимане на запис за пълния списък със съобщения или на Взимане на записа в HTML за готовия архив.
Филтри (всички са по избор; съчетавайте колкото искате)
| Име | Тип | Задължително | Описание |
|---|---|---|---|
| q | string | по избор | Свободно търсене в съдържанието на съобщенията, до 200 знака. Думите под 3 знака се пропускат от указателя. |
| said_by | string | по избор | Взима предвид само съдържанието, написано от този идентификатор на потребител в Discord. Ползвайте го заедно с q. |
| participants | string[] | по избор | До 5 потребители, писали в тикета, всеки като идентификатор в Discord или като част от потребителско име. Разделени със запетая при GET, като списък при POST. |
| participants_mode | string | по избор | all (по подразбиране) иска всички посочени участници да са писали в един и същ тикет; any намира тикетите, в които е писал поне един от тях. |
| include_bots | boolean | по избор | Включва в търсенето съобщенията и участниците, които са ботове. По подразбиране е false. |
| opened_by | string | по избор | Този, който е отворил тикета, като идентификатор в Discord или като част от потребителско име. |
| closed_by | string | по избор | Идентификаторът в Discord на този, който е затворил тикета. |
| channel_id | string | по избор | Идентификаторът на канала или темата в Discord, където е бил тикетът. |
| panel_id | number | по избор | Само тикетите, отворени от този панел. |
| opened_from | number | по избор | Времева отметка Unix: само тикетите, отворени в този момент или след него. |
| opened_to | number | по избор | Времева отметка Unix: само тикетите, отворени в този момент или преди него. |
| closed_from | number | по избор | Времева отметка Unix: само тикетите, затворени в този момент или след него. |
| closed_to | number | по избор | Времева отметка Unix: само тикетите, затворени в този момент или преди него. |
| rating_min | number | по избор | Най-ниска оценка, 1-5. |
| rating_max | number | по избор | Най-висока оценка, 1-5. |
| limit | number | по избор | Резултати на страница, 1-50 (по подразбиране 25). |
| offset | number | по избор | Резултати, които се прескачат при разлистването, най-много 10000 (по подразбиране 0). |
Търсенето е ограничено до 10 заявки в минута за всеки ключ, отделно от другите четения, и работи в стегнато време. Търсене, което не успее да свърши навреме, връща 504. Стеснете филтрите (добавете период или панел) и опитайте пак, вместо да повтаряте същата заявка. Стойностите, които не минат проверката, се изхвърлят, вместо заявката да пропадне, затова погледнете обекта filters в отговора, за да видите какво наистина е приложено.
Търсенето чете указателя на записите, който се изгражда, докато сървърът има Premium, и при първото включване обхваща и досегашния ви архив. Обектът coverage във всеки отговор ви казва колко от записите ви са описани (indexed) от всички запазени (total). Ако описването на архива още върви, двете числа още не съвпадат.
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 }
}