13.19
Transcripties doorzoeken
/<guild_id>/api/transcripts/searchDoorzoekt elk gesloten ticket van de server, niet alleen de bijbehorende gegevens: wat er binnenin is gezegd, wie het zei, wie eraan meedeed, wanneer het openging of sloot, bij welk paneel het hoort, welke beoordeling het kreeg of welk Discord-kanaal-ID het had. Dit is dezelfde motor als diep zoeken in het dashboard. Vereist het recht `search_transcripts` (standaard uit).
/<guild_id>/api/transcripts/searchHetzelfde, maar met de filters in een JSON-body in plaats van in queryparameters. Handiger bij lange zoekopdrachten en lijsten met deelnemers. Stuur je allebei, dan wint de body.
Elk resultaat bevat de gegevens van het ticket, tot 8 deelnemers en, als je op inhoud zocht, tot 3 bijbehorende fragmenten zodat je ziet *waarom* het ticket meekwam. Neem het TicketId uit een resultaat mee naar Een transcriptie ophalen voor alle berichten, of naar HTML van een transcriptie ophalen voor het opgemaakte archief.
Filters (allemaal optioneel; combineer er zoveel je wilt)
| Naam | Type | Verplicht | Beschrijving |
|---|---|---|---|
| q | string | optioneel | Vrij zoeken in de inhoud van berichten, maximaal 200 tekens. Woorden korter dan 3 tekens slaat de index over. |
| said_by | string | optioneel | Alleen inhoud van deze Discord-gebruikers-ID. Gebruik hem samen met q. |
| participants | string[] | optioneel | Tot 5 gebruikers die in het ticket schreven, elk als Discord-gebruikers-ID of als deel van een gebruikersnaam. Bij GET gescheiden door komma's, bij POST als array. |
| participants_mode | string | optioneel | all (standaard) vereist dat alle genoemde deelnemers in hetzelfde ticket schreven; any vindt tickets waarin er minstens een schreef. |
| include_bots | boolean | optioneel | Neemt berichten en deelnemers van bots mee. Standaard false. |
| opened_by | string | optioneel | Degene die het ticket opende, als Discord-gebruikers-ID of als deel van een gebruikersnaam. |
| closed_by | string | optioneel | Discord-gebruikers-ID van degene die het ticket sloot. |
| channel_id | string | optioneel | Het Discord-kanaal- of thread-ID dat het ticket gebruikte. |
| panel_id | number | optioneel | Alleen tickets die uit dit paneel komen. |
| opened_from | number | optioneel | Unix-tijdstempel: alleen tickets die op of na dit moment werden geopend. |
| opened_to | number | optioneel | Unix-tijdstempel: alleen tickets die op of vóór dit moment werden geopend. |
| closed_from | number | optioneel | Unix-tijdstempel: alleen tickets die op of na dit moment werden gesloten. |
| closed_to | number | optioneel | Unix-tijdstempel: alleen tickets die op of vóór dit moment werden gesloten. |
| rating_min | number | optioneel | Minimale beoordeling, 1 tot 5. |
| rating_max | number | optioneel | Maximale beoordeling, 1 tot 5. |
| limit | number | optioneel | Resultaten per pagina, 1 tot 50 (standaard 25). |
| offset | number | optioneel | Resultaten die je overslaat voor de paginering, maximaal 10000 (standaard 0). |
Zoeken is beperkt tot 10 verzoeken per minuut per token, los van de andere leesacties, en krijgt strak afgemeten tijd. Een zoekopdracht die het niet op tijd redt geeft 504. Maak je filters scherper (voeg een periode of een paneel toe) en probeer opnieuw, in plaats van dezelfde zoekopdracht te herhalen. Waarden die niet door de controle komen vallen weg in plaats van dat het verzoek mislukt, dus kijk in het object filters in het antwoord wat er precies is toegepast.
Zoeken leest de transcriptie-index, die wordt opgebouwd zolang de server Premium heeft en bij je eerste overstap ook over je bestaande archief wordt gelegd. Het object coverage in elk antwoord vertelt hoeveel van je transcripties geïndexeerd zijn (indexed) van het totaal dat je bewaart (total). Loopt de inhaalslag nog, dan komen die twee nog niet overeen.
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 }
}