API reference pro plugin
Kompletní kontrakt pluginového API. Všechny endpointy jsou pod /api/plugin/v1 a autentizují se serverovým tokenem.
Autentizace
Každý požadavek musí nést token v hlavičce Authorization:
Authorization: Bearer blz_TVUJ_TOKENToken je vázaný na jeden server. Neplatný, zneplatněný nebo token vypnutého serveru vrací 401 s tělem { "code": "INVALID_TOKEN" }. Všechny tři případy vypadají zvenčí stejně — API neprozradí, který z nich nastal.
429 s hlavičkou Retry-After. Limit je na server, ne na IP.Vyzvednutí nákupů
/api/plugin/v1/deliveries/claimZarezervuje dávku nezpracovaných nákupů a vrátí je i s claimToken. Rezervace platí 120 vteřin (lease). Dvě instance pluginu dostanou různé nákupy — stejný nákup se nikdy nevydá dvakrát současně.
Je to POST, protože mutuje — inkrementuje počet pokusů a razí lease.
Požadavek
{ "limit": 25 }Odpověď
{
"count": 1,
"orders": [
{
"orderId": "clx...",
"orderNumber": "VIP-20260710-K3M9QX",
"claimToken": "aB3k...", // musíš vrátit při ACK
"playerName": "Notch",
"playerUuid": "069a79f4-44e9-4726-a5be-fca90e38aaf5",
"packageName": "VIP+",
"durationDays": 30,
"commands": [ // už s dosazenými zástupci? NE — viz níže
"lp user {player} parent add vipplus",
"broadcast &c{player} koupil VIP+!"
],
"expiresAt": "2026-08-09T12:00:00.000Z",
"attempt": 1
}
]
}{player}, {uuid}). Nahrazení proběhne až v pluginu. Nikdy nedosazuj hodnoty, které neprošly validací jména hráče — viz sekce o bezpečnosti v návodu na vlastní plugin.Potvrzení zpracování
/api/plugin/v1/deliveries/ackPotvrdí (nebo nahlásí selhání) jednoho nákupu. Musíš poslat claimToken z odpovědi claim. Pokud lease vypršel a nákup mezitím převzala jiná instance, přijde 409 STALE_CLAIM — pak nákup zahoď.
Požadavek (úspěch)
{
"orderId": "clx...",
"claimToken": "aB3k...",
"success": true
}Požadavek (selhání)
{
"orderId": "clx...",
"claimToken": "aB3k...",
"success": false,
"error": "Neznámý příkaz: lp"
}Odpovědi
200 { "ok": true, "status": "DELIVERED" } úspěšně potvrzeno
200 { "ok": true, "status": "ALREADY_ACKED" } duplicitní ACK — taky OK
200 { "ok": true, "status": "RETRY_SCHEDULED" } selhání, bude se opakovat
200 { "ok": true, "status": "GAVE_UP_REFUNDED" } 5 pokusů vyčerpáno, kredit vrácen
409 { "ok": false, "status": "STALE_CLAIM" } lease vypršel — zahoď nákup
404 { "ok": false, "status": "NOT_FOUND" } nákup nepatří tvému serveruALREADY_ACKED, ne chybu. Opakuj klidně.Seznam aktivních VIP
/api/plugin/v1/vips?cursor=&limit=500Všechny aktivní VIP na serveru. „Aktivní“ = expiresAt > teď. Stránkuje se kurzorem — projdi ho, dokud nextCursor není null.
{
"vips": [
{
"player": "Notch",
"uuid": "069a79f4-...",
"packageId": "clx...",
"packageName": "VIP+",
"expiresAt": "2026-08-09T12:00:00.000Z"
}
],
"nextCursor": "clx..." // nebo null, když jsi na konci
}Kontrola jednoho hráče
/api/plugin/v1/vips/{player}{player} může být jméno nebo UUID. Preferuj UUID — jména se v Minecraftu mění. Vrací 200 i když hráč VIP nemá (vip: false), ne 404.
{
"vip": true,
"expiresAt": "2026-08-09T12:00:00.000Z", // nejzazší napříč balíčky
"packages": [
{ "packageId": "clx...", "packageName": "VIP+", "expiresAt": "..." }
]
}Shrnutí záruk
• Doručení je "alespoň jednou" → příkazy musí být idempotentní
• claim je atomický → dvě instance nedostanou stejný nákup
• ACK vyžaduje claimToken → mrtvá instance nemůže potvrdit cizí práci
• po 5 pokusech → nákup FAILED a kredit se hráči automaticky vrátí
• všechny odpovědi mají Cache-Control: no-store