{"success":true,"base_url":"https://lightning.druts.nl/","endpoints":[{"id":"games-list","category":"Games","name":"List public games","method":"GET","path":"/api/games","description":"Returns all public game summaries and a top-level slugs array. Add include_disabled=true when testing private configs.","query":{"include_disabled":false},"auth":"none"},{"id":"games-slugs","category":"Games","name":"List game slugs","method":"GET","path":"/api/games/slugs","description":"Returns the dynamic game slug list from the arcade registry.","query":{"include_disabled":false},"auth":"none"},{"id":"games-overview","category":"Games","name":"Games overview","method":"GET","path":"/api/games/overview","description":"Returns all public games with live jackpot snapshots and top leaderboard rows.","query":{"include_disabled":false,"include_jackpots":true,"include_leaderboards":true,"leaderboard_limit":10},"auth":"none"},{"id":"game-config","category":"Games","name":"Read game config","method":"GET","path":"/api/game/config/{slug}","description":"Returns one public game config by slug.","params":{"slug":"spaceinvaders"},"auth":"none"},{"id":"game-pricing","category":"Games","name":"Read game pricing","method":"GET","path":"/api/game/pricing/{slug}","description":"Returns credit bundles and prices for one game.","params":{"slug":"spaceinvaders"},"auth":"none"},{"id":"game-upsert","category":"Games","name":"Create or update game config","method":"POST","path":"/api/game/config","description":"Admin-only endpoint for adding standalone games to the arcade registry.","auth":"arcade-admin","body":{"game":{"slug":"partner-game","name":"Partner Game","enabled":true,"logo_url":"https://games.noderunners.network/partner-game/assets/logo.png","entry_fee":21,"credits":{"price_sats":21,"currency":"BTC","bundles":{"1":{"price_sats":21},"5":{"price_sats":95}}},"highscores":{"enabled":true},"validation":{"min_score":0,"max_score":999999,"max_session_seconds":600}}}},{"id":"create-invoice","category":"Lightning Entries","name":"Create game payment","method":"POST","path":"/api/lightning/create-invoice","description":"Creates a LNURL payment session for paid game credits.","auth":"none","body":{"game_slug":"spaceinvaders","qty":1,"use_case":"credits"}},{"id":"payment-status","category":"Lightning Entries","name":"Check payment status","method":"GET","path":"/api/lightning/payment-status/{payment_id}","description":"Checks whether a game payment hash/session is paid and returns the player name from the payment note when present.","params":{"payment_id":"paste-payment-id"},"auth":"none"},{"id":"entry-lnurl","category":"Lightning Entries","name":"Read entry LNURL payload","method":"GET","path":"/api/lightning/entry-lnurl/{payment_id}","description":"Returns the LNURL-pay payload for wallets. Usually consumed by a wallet, useful here for debugging.","params":{"payment_id":"paste-payment-id"},"auth":"none"},{"id":"start-session","category":"Scores","name":"Start game session","method":"POST","path":"/api/game/session/start","description":"Creates a score session. Include payment_id for paid games; omit it for legacy/free flows.","auth":"none","body":{"game_slug":"spaceinvaders","payment_id":"optional-paid-payment-id"}},{"id":"submit-score","category":"Scores","name":"Submit highscore","method":"POST","path":"/api/game/highscore/submit","description":"Submits one score against a valid, unused game session.","auth":"none","body":{"game_slug":"spaceinvaders","session_id":"paste-session-id","player_name":"AAA","score":4200,"duration_seconds":120,"source":"api-explorer"}},{"id":"leaderboard","category":"Scores","name":"Read leaderboard","method":"GET","path":"/api/game/leaderboard/{slug}","description":"Returns the top 10 accepted scores for a game.","params":{"slug":"spaceinvaders"},"auth":"none"},{"id":"jackpot","category":"Scores","name":"Read jackpot","method":"GET","path":"/api/game/jackpot/{slug}","description":"Returns the visible jackpot amount for a game.","params":{"slug":"spaceinvaders"},"auth":"none"},{"id":"payout-status","category":"Payouts","name":"Read payout","method":"GET","path":"/api/lightning/payout/{payout_id}","description":"Reads one payout record by payout id.","params":{"payout_id":"paste-payout-id"},"auth":"none"},{"id":"tournament-settings","category":"Tournaments","name":"Read tournament settings","method":"GET","path":"/api/tournament/settings/{slug}","description":"Returns public tournament settings for a game.","params":{"slug":"spaceinvaders"},"auth":"none"},{"id":"tournament-create","category":"Tournaments","name":"Create or reuse tournament","method":"POST","path":"/api/tournament/create","description":"Creates a lobby tournament for a game and machine/cabinet instance.","auth":"none","body":{"game_slug":"spaceinvaders","instance_id":"cabinet-01","max_players":4}},{"id":"tournament-current","category":"Tournaments","name":"Read current tournament","method":"GET","path":"/api/tournament/current/{slug}","description":"Returns the active tournament for a game and optional instance.","params":{"slug":"spaceinvaders"},"query":{"instance_id":"cabinet-01"},"auth":"none"},{"id":"tournament-status","category":"Tournaments","name":"Read tournament status","method":"GET","path":"/api/tournament/status/{tournament_id}","description":"Returns tournament lobby, entries, scores and settlement state.","params":{"tournament_id":"1"},"auth":"none"},{"id":"tournament-join-invoice","category":"Tournaments","name":"Create tournament entry invoice","method":"POST","path":"/api/tournament/join-invoice","description":"Creates a Lightning invoice for one tournament player entry.","auth":"none","body":{"game_slug":"spaceinvaders","tournament_id":1}},{"id":"tournament-entry-status","category":"Tournaments","name":"Read tournament entry payment","method":"GET","path":"/api/tournament/entry-status/{payment_hash}","description":"Checks the payment status for a tournament entry invoice.","params":{"payment_hash":"paste-payment-hash"},"auth":"none"},{"id":"tournament-score","category":"Tournaments","name":"Submit tournament score","method":"POST","path":"/api/tournament/score","description":"Submits a score for a paid tournament entry.","auth":"none","body":{"tournament_id":1,"payment_hash":"paste-payment-hash","player_name":"AAA","score":4200,"duration_seconds":120}},{"id":"tournament-start","category":"Tournaments","name":"Start tournament","method":"POST","path":"/api/tournament/start","description":"Admin-only action that starts a lobby once enough paid players joined.","auth":"arcade-admin","body":{"tournament_id":1}},{"id":"tournament-finalize","category":"Tournaments","name":"Finalize tournament","method":"POST","path":"/api/tournament/finalize","description":"Admin-only action that finalizes a tournament and triggers prize settlement according to configured split rules.","auth":"arcade-admin","body":{"tournament_id":1}},{"id":"tournament-cancel","category":"Tournaments","name":"Cancel tournament","method":"POST","path":"/api/tournament/cancel","description":"Admin-only action that cancels a lobby or active tournament.","auth":"arcade-admin","body":{"tournament_id":1}},{"id":"marketplace-validate","category":"Marketplace","name":"Validate payout destination","method":"POST","path":"/api/marketplace/payout-destination/validate","description":"Validates wallet alias, Lightning Address or LNURL-pay destination for a seller payout.","auth":"marketplace-hmac","body":{"payout_destination":"seller@example.com","amount_sats":100}},{"id":"marketplace-invoice","category":"Marketplace","name":"Create marketplace invoice","method":"POST","path":"/api/marketplace/invoices","description":"Creates one marketplace order invoice and records platform fee plus seller payout split.","auth":"marketplace-hmac","body":{"idempotency_key":"order-demo-001","client_order_id":"demo-001","client_name":"demo-marketplace","gross_amount_sats":1000,"payout_destination":"seller@example.com","memo":"Demo marketplace order","metadata":{"sku":"demo-item"}}},{"id":"marketplace-refund-claim","category":"Marketplace","name":"Create refund claim","method":"POST","path":"/api/marketplace/refund-claims","description":"Creates a refund claim against a paid refund-deposit payment.","auth":"marketplace-hmac","body":{"idempotency_key":"refund-demo-001","refund_payment_hash":"paste-payment-hash","claim_key":"seller-claim-key","amount_sats":500}},{"id":"marketplace-payment","category":"Marketplace","name":"Read marketplace payment","method":"GET","path":"/api/marketplace/payments/{payment_id}","description":"Reads and refreshes one marketplace payment.","params":{"payment_id":"paste-payment-id"},"auth":"marketplace-hmac"},{"id":"marketplace-events","category":"Marketplace","name":"Read marketplace payment events","method":"GET","path":"/api/marketplace/payments/{payment_id}/events","description":"Returns the event log for one marketplace payment.","params":{"payment_id":"paste-payment-id"},"auth":"marketplace-hmac"},{"id":"marketplace-by-hash","category":"Marketplace","name":"Read marketplace payment by hash","method":"GET","path":"/api/marketplace/payments/by-hash/{payment_hash}","description":"Reads and refreshes a marketplace payment by Lightning payment hash.","params":{"payment_hash":"paste-payment-hash"},"auth":"marketplace-hmac"},{"id":"marketplace-order","category":"Marketplace","name":"Read marketplace payment by order id","method":"GET","path":"/api/marketplace/orders/{client_order_id}","description":"Finds the newest marketplace payment for a third-party order id.","params":{"client_order_id":"demo-001"},"auth":"marketplace-hmac"},{"id":"slacker-json","category":"Reference","name":"Read human command catalog","method":"GET","path":"/slacker.json","description":"Returns the human-readable command catalog used by the Slacker-style docs page.","auth":"none"},{"id":"nostr-publish-leaderboards","category":"Nostr","name":"Publish Nostr leaderboards and Gamestr scores","method":"POST","path":"/api/nostr/publish-leaderboards","description":"Admin-only trigger for official leaderboard snapshots, public notes and Gamestr kind 30762 score events.","auth":"arcade-admin","body":{"game":"spaceinvaders","force":true,"dry_run":true,"no_notes":true}}]}