Dokumentacja

Poznaj TicketsX szybciej

Poradniki konfiguracji, pełny spis komend, funkcje Premium i API REST w jednym miejscu.

13.19

Przeszukiwanie zapisów

GET/<guild_id>/api/transcripts/search

Przeszukuje każde zamknięte zgłoszenie na serwerze, nie tylko jego metadane: to, co w nim padło, kto to napisał, kto brał udział, kiedy zgłoszenie powstało i zostało zamknięte, z jakiego panelu pochodzi, jaką ma ocenę i jakiego identyfikatora kanału Discord używało. To ten sam mechanizm co wyszukiwanie pogłębione w panelu. Wymaga uprawnienia `search_transcripts` (domyślnie wyłączonego).

POST/<guild_id>/api/transcripts/search

To samo, tylko filtry wysyłasz w ciele JSON zamiast w parametrach zapytania. Wygodniejsze przy długich zapytaniach i listach uczestników. Gdy wyślesz oba, liczy się ciało.

Każdy wynik niesie metadane zgłoszenia, do 8 uczestników, a przy wyszukiwaniu po treści także do 3 pasujących fragmentów wiadomości, żeby było widać, *dlaczego* zgłoszenie się znalazło. Weź TicketId z dowolnego wyniku i przekaż go do Pobrania zapisu rozmowy, aby dostać pełną listę wiadomości, albo do Pobrania zapisu w HTML, aby dostać gotowe archiwum.

Filtry (wszystkie opcjonalne, łącz je dowolnie)

NazwaTypWymaganeOpis
qstring
opcjonalne
Swobodne wyszukiwanie w treści wiadomości, do 200 znaków. Słowa krótsze niż 3 znaki są w indeksie pomijane.
said_bystring
opcjonalne
Uwzględnia tylko treści napisane przez ten identyfikator użytkownika Discord. Łącz z polem q.
participantsstring[]
opcjonalne
Do 5 użytkowników, którzy pisali w zgłoszeniu, każdy jako identyfikator Discord albo fragment nazwy użytkownika. W GET rozdzielone przecinkami, w POST jako tablica.
participants_modestring
opcjonalne
Wartość all (domyślna) wymaga, aby wszyscy wskazani uczestnicy pisali w tym samym zgłoszeniu; any znajduje zgłoszenia, w których pisał przynajmniej jeden z nich.
include_botsboolean
opcjonalne
Uwzględnia wiadomości i uczestników będących botami. Domyślnie false.
opened_bystring
opcjonalne
Osoba, która otworzyła zgłoszenie, jako identyfikator Discord albo fragment nazwy użytkownika.
closed_bystring
opcjonalne
Identyfikator Discord osoby, która zamknęła zgłoszenie.
channel_idstring
opcjonalne
Identyfikator kanału lub wątku Discord, w którym toczyło się zgłoszenie.
panel_idnumber
opcjonalne
Tylko zgłoszenia otwarte z tego panelu.
opened_fromnumber
opcjonalne
Znacznik czasu uniksowego: tylko zgłoszenia otwarte w tym momencie albo później.
opened_tonumber
opcjonalne
Znacznik czasu uniksowego: tylko zgłoszenia otwarte w tym momencie albo wcześniej.
closed_fromnumber
opcjonalne
Znacznik czasu uniksowego: tylko zgłoszenia zamknięte w tym momencie albo później.
closed_tonumber
opcjonalne
Znacznik czasu uniksowego: tylko zgłoszenia zamknięte w tym momencie albo wcześniej.
rating_minnumber
opcjonalne
Najniższa ocena, od 1 do 5.
rating_maxnumber
opcjonalne
Najwyższa ocena, od 1 do 5.
limitnumber
opcjonalne
Liczba wyników na stronę, od 1 do 50 (domyślnie 25).
offsetnumber
opcjonalne
Liczba wyników pominiętych przy stronicowaniu, najwyżej 10000 (domyślnie 0).

Wyszukiwanie ma limit 10 zapytań na minutę dla każdego tokenu, liczony osobno od pozostałych odczytów, i ściśle wyznaczony czas pracy. Wyszukiwanie, które nie zdąży się zakończyć, zwraca 504. Zawęź filtry (dodaj zakres dat albo panel) i spróbuj ponownie, zamiast powtarzać to samo zapytanie. Wartości, które nie przejdą sprawdzenia, są pomijane, a nie odrzucają całego żądania, więc sprawdź w odpowiedzi obiekt filters, aby zobaczyć, co faktycznie zadziałało.

Wyszukiwanie czyta indeks zapisów, który powstaje, dopóki serwer ma Premium, i obejmuje dotychczasowe archiwum przy pierwszym wykupieniu. Obiekt coverage w każdej odpowiedzi mówi, ile twoich zapisów jest już w indeksie (indexed) spośród wszystkich przechowywanych (total). Gdy uzupełnianie indeksu wciąż trwa, obie liczby jeszcze się nie zgadzają.

Przykładowe żądanie: co powiedział użytkownik w zgłoszeniach, przy których pracowała też wskazana osoba z obsługi
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"
Przykładowe żądanie: to samo wyszukiwanie w ciele 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
Przykładowa odpowiedź
{
  "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 }
}