Eventreferentie
Elk webhook-gebeurtenistype en de exacte payload die TicketWave verstuurt.
Eventreferentie
Per endpoint kunnen zes gebeurtenistypen worden geabonneerd. Elke request gebruikt dezelfde envelop â event, timestamp, guild_id en data â en alleen het data-object verschilt.
| Event | Wordt geactiveerd wanneer |
|---|---|
ticket.created | Een ticket wordt geopend |
ticket.closed | Een ticket wordt gesloten |
ticket.updated | Er iets anders verandert aan een open ticket |
message.sent | Een lid of medewerker schrijft in een ticket |
blacklist.added | Een lid wordt op de blacklist gezet |
blacklist.removed | Een blacklistvermelding wordt verwijderd |
Velden die niet kunnen worden opgelost, worden verzonden als null in plaats van weggelaten â je kunt er dus op vertrouwen dat de sleutels bestaan. Een username is null wanneer Discord de gebruiker niet heeft teruggegeven.
Gedeelde velden
Elk ticket-event bevat deze:
| Veld | Type | Beschrijving |
|---|---|---|
ticket_id | string | De leesbare ticket-id uit je patroon, bijvoorbeeld ticket-1042 |
ticket_num_id | number | Het oplopende ticketnummer, bijvoorbeeld 1042 |
channel_id | string | Het Discord-kanaal van het ticket |
category | string | null | Categorienaam, null als het ticket er geen heeft |
user | object | null | De eigenaar van het ticket als { id, username } |
ticket.created
Wordt direct verzonden nadat het ticketkanaal bestaat.
{
"event": "ticket.created",
"timestamp": "2026-08-26T08:23:11.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1042",
"ticket_num_id": 1042,
"channel_id": "998877665544332211",
"category": "đ¤ Support",
"user": { "id": "987654321098765432", "username": "Luna" },
"created_at": "2026-08-26T08:23:11.000Z"
}
}Dit wordt geactiveerd wanneer het ticket wordt geopend, dus voordat het lid iets heeft geschreven. Als je het eerste bericht nodig hebt, luister dan ook naar message.sent.
ticket.closed
{
"event": "ticket.closed",
"timestamp": "2026-08-26T07:45:02.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1041",
"ticket_num_id": 1041,
"channel_id": "998877665544332211",
"category": "đ¸ Payment",
"user": { "id": "987654321098765432", "username": "Luna" },
"closed_by": { "id": "112233445566778899", "username": "Staff_01" },
"reason": "Issue resolved",
"closed_at": "2026-08-26T07:45:02.000Z"
}
}| Veld | Type | Beschrijving |
|---|---|---|
closed_by | object | Wie het heeft gesloten. Automatische sluitingen rapporteren de bot |
reason | string | null | De sluitingsreden, null als er geen is opgegeven |
ticket.updated
De verzamelcategorie voor wijzigingen aan een open ticket. action vertelt je wat er is veranderd, changes bevat de details van die specifieke actie.
{
"event": "ticket.updated",
"timestamp": "2026-08-26T14:02:19.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1038",
"ticket_num_id": 1038,
"channel_id": "998877665544332211",
"category": "đ¤ Support",
"user": { "id": "987654321098765432", "username": "Luna" },
"action": "ticket_priority:add",
"changes": { "priority": "high" },
"reason": null,
"updated_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}Mogelijke action-waarden
action | Betekenis | changes bevat |
|---|---|---|
ticket_claim:add | Een medewerker heeft het ticket geclaimd | (leeg) |
ticket_unclaim:add | De claim is vrijgegeven | (leeg) |
ticket_priority:add | Prioriteit gewijzigd | priority |
ticket_rename:add | Het kanaal is hernoemd | new_name |
ticket_remind:add | Er is een herinnering verzonden | (leeg) |
ticket_feedback:add | Het lid heeft het ticket beoordeeld | star_count, feedback |
ticket_schedule_close:add | Een sluiting is ingepland | duration, schedule_time |
ticket_request_close:add | Medewerker heeft het lid gevraagd om te sluiten | duration, request_duration_time |
ticket_request_close_accept:add | Het lid heeft geaccepteerd | (leeg) |
ticket_request_close_deny:add | Het lid heeft geweigerd | (leeg) |
ticket_close_cancel:add | Een lopende sluiting is geannuleerd | (leeg) |
ticket_additional_access:add | Een gebruiker of rol is aan het ticket toegevoegd | entity_type, entity_id, reason |
ticket_additional_access:remove | Een gebruiker of rol is verwijderd | entity_type, entity_id, reason |
Beschouw deze lijst als open-ended. Naarmate TicketWave groeit, worden er nieuwe acties toegevoegd, en die komen binnen als ticket.updated. Schakel in op de acties die je nodig hebt en negeer de rest in plaats van te falen op onbekende waarden.
Het beantwoorden van een ticketstap produceert geen event. Anders zou een ticket met veel stappen je endpoint overspoelen terwijl het lid het formulier nog aan het invullen is.
message.sent
Wordt verzonden voor elk menselijk bericht binnen een open ticket. Berichten van bots â inclusief TicketWave zelf â worden overgeslagen.
{
"event": "message.sent",
"timestamp": "2026-08-26T22:10:55.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1040",
"ticket_num_id": 1040,
"channel_id": "998877665544332211",
"message_id": "1234567890123456789",
"content": "Hello, how can I help you?",
"author": { "id": "112233445566778899", "username": "Staff_01" },
"is_staff": true,
"sent_at": "2026-08-26T22:10:55.000Z"
}
}| Veld | Type | Beschrijving |
|---|---|---|
content | string | De ruwe berichttekst. Leeg bij berichten met alleen bijlagen |
author | object | { id, username } van de afzender |
is_staff | boolean | true als de afzender een geconfigureerde supportrol heeft |
Dit is veruit het event met het hoogste volume â een drukke server genereert ÊÊn request per bericht. Abonneer je hier alleen op als je echt berichtniveau-data nodig hebt, en zorg ervoor dat je ontvanger snel antwoordt.
blacklist.added
Niet gekoppeld aan een ticket, dus deze payload heeft geen ticket_id.
{
"event": "blacklist.added",
"timestamp": "2026-08-26T18:33:47.000Z",
"guild_id": "123456789012345678",
"data": {
"user": { "id": "111223344556677889", "username": "BadActor" },
"reason": "Spam",
"added_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}blacklist.removed
{
"event": "blacklist.removed",
"timestamp": "2026-08-26T18:40:12.000Z",
"guild_id": "123456789012345678",
"data": {
"user": { "id": "111223344556677889", "username": "BadActor" },
"removed_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}Testevents
De knop Send test event levert een echte, ondertekende request waarvan data gewoon dit is:
{
"event": "ticket.created",
"timestamp": "2026-08-26T12:00:00.000Z",
"guild_id": "123456789012345678",
"data": { "test": true }
}Het event is het eerste type waarop het endpoint is geabonneerd. Controleer op data.test als je testleveringen in productie-logica wilt overslaan.
Volgende stappen
- Example Server (Verwerk deze payloads in Express)
- Webhooks (Ondertekening, retries en leveringsgeschiedenis)
How is this guide?
