Документація

Опануй TicketsX швидше

Посібники з налаштування, повний перелік команд, можливості Premium і REST API в одному місці.

13.19

Пошук записів

GET/<guild_id>/api/transcripts/search

Шукає в кожному закритому тікеті сервера, а не лише серед відомостей про нього: що було сказано всередині, хто це сказав, хто брав участь, коли його відкрили чи закрили, з якої він панелі, яку оцінку дістав або який ідентифікатор каналу Discord мав. Це той самий механізм, що й глибокий пошук у панелі керування. Потребує права `search_transcripts` (типово вимкнено).

POST/<guild_id>/api/transcripts/search

Те саме, тільки фільтри надсилаються тілом JSON замість параметрів запиту. Зручніше для довгих пошуків і списків учасників. Якщо надіслати обидва, до уваги береться тіло.

Кожен результат несе відомості про тікет, до 8 учасників, а якщо ви шукали за вмістом, то ще й до 3 відповідних уривків повідомлень, щоб було видно, *чому* тікет знайшовся. Візьміть TicketId з будь-якого результату й передайте його в Отримання запису для повного списку повідомлень або в Отримання запису в HTML для готового архіву.

Фільтри (усі необов'язкові; поєднуйте скільки завгодно)

НазваТипОбов'язковоОпис
qstring
необовʼязково
Вільний пошук у вмісті повідомлень, до 200 символів. Слова, коротші за 3 символи, покажчик пропускає.
said_bystring
необовʼязково
Бере до уваги лише вміст, написаний цим ідентифікатором користувача Discord. Уживайте разом із q.
participantsstring[]
необовʼязково
До 5 користувачів, які писали в тікеті, кожен як ідентифікатор Discord або частина імені користувача. У GET через кому, у POST списком.
participants_modestring
необовʼязково
all (типово) вимагає, щоб усі вказані учасники писали в одному й тому самому тікеті; any знаходить тікети, у яких писав щонайменше один із них.
include_botsboolean
необовʼязково
Бере до уваги повідомлення й учасників, які є ботами. Типово false.
opened_bystring
необовʼязково
Той, хто відкрив тікет, як ідентифікатор Discord або частина імені користувача.
closed_bystring
необовʼязково
Ідентифікатор Discord того, хто закрив тікет.
channel_idstring
необовʼязково
Ідентифікатор каналу або гілки Discord, де був тікет.
panel_idnumber
необовʼязково
Лише тікети, відкриті з цієї панелі.
opened_fromnumber
необовʼязково
Позначка часу Unix: лише тікети, відкриті в цей момент або пізніше.
opened_tonumber
необовʼязково
Позначка часу Unix: лише тікети, відкриті в цей момент або раніше.
closed_fromnumber
необовʼязково
Позначка часу Unix: лише тікети, закриті в цей момент або пізніше.
closed_tonumber
необовʼязково
Позначка часу Unix: лише тікети, закриті в цей момент або раніше.
rating_minnumber
необовʼязково
Найнижча оцінка, 1-5.
rating_maxnumber
необовʼязково
Найвища оцінка, 1-5.
limitnumber
необовʼязково
Результатів на сторінку, 1-50 (типово 25).
offsetnumber
необовʼязково
Результатів, які пропускають під час гортання, щонайбільше 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"
Приклад запиту: той самий пошук тілом 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
Приклад відповіді
{
  "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 }
}