13.24
Limieten en veiligheid
De API is zo gebouwd dat een token nooit te misbruiken is tegen een server, ook niet als hij uitlekt. De volgende bescherming geldt bij elk verzoek.
Bij elk endpoint komt de controle op Premium als eerste, nog voor het token wordt opgezocht en voor er een limiet wordt geteld, zodat een server zonder lopend abonnement altijd hetzelfde antwoord 402 krijgt in plaats van een half uitgevoerd verzoek.
- Geen massapings. In alle berichten vanuit de API (webhookberichten en tags meegerekend) staan
@everyone,@hereen willekeurige rolpings uit. Bij het openen van een ticket zijn alleen de ingestelde rol van het paneel en degene die het ticket opende te pingen. - Geen misleiding. Weergavenamen van webhooks met gereserveerde woorden als "discord" of "clyde" worden vervangen, en een eigen avatar moet een geldige
https://-URL zijn. - Premium vereist. De API is een Premium-functie. Zonder lopend abonnement geeft elk verzoek
402metpremium_required: true, en tokens aanmaken of vervangen kan niet. - Limieten. Elk token heeft een limiet per handeling (bijvoorbeeld: ticket openen 10 per minuut, bericht sturen 30 per minuut, hernoemen 2 per 10 minuten, paneel wisselen 2 per 10 minuten, paneel aanpassen 10 per minuut, paneel opnieuw plaatsen 4 per 10 minuten, leesacties 120 per minuut). Ga je eroverheen, dan volgt
429met een waarderetry_afterin seconden. RoepGET /api/tokenaan voor de actuele tabel. - Zware leesacties tellen apart. Zoeken in transcripties en het downloaden van HTML krijgen elk 10 per minuut, volledige geïndexeerde transcripties 30 per minuut, zodat ze nooit uit de ruime 120 leesacties per minuut putten. Zoeken draait bovendien hoogstens twee keer tegelijk op de hele server en breekt af met
504als het over zijn tijd gaat, zodat zoekverkeer nooit ten koste gaat van het werk aan tickets. - Grens aan open tickets. Zodra een server aan de veiligheidsgrens voor open tickets zit, opent de API er geen nieuwe meer, en voor gebruikers op de zwarte lijst opent hij helemaal geen ticket.
- Zo min mogelijk rechten. Gevoelige rechten (Ticketberichten lezen, Transcripties bekijken, Zoeken in transcripties, HTML van transcripties downloaden, Tags gebruiken, Tickets hernoemen, Panelen beheren, Ticketpanelen wisselen) staan standaard uit en moet je per token bewust aanzetten.
- Leesacties in de geschiedenis worden vastgelegd. Het downloaden van een volledige HTML-transcriptie komt met het bijbehorende token in het activiteitenlog van de server te staan, net als elke wijziging die de API uitvoert.
- Panelen blijven aan je opzet vastzitten. Met Panelen beheren pas je alleen het uiterlijk van een paneel aan (naam, embed, knoppen). Kanalen, categorieën, rollen om te pingen, formulieren en teams zijn niet via de API te wijzigen.
- Vervaldatum en vervangen. Tokens kunnen een vervaldatum krijgen en zijn via het dashboard uit te zetten of te vervangen; bij vervangen is het oude geheim meteen ongeldig.
- Eén server per token. Een token werkt alleen voor de server waarin hij is aangemaakt, en bij elk verzoek wordt dat opnieuw gecontroleerd.