API
Public /api/v1 catalog for this site and Shelf of Holding. Browse adventures, enemies, and mini links without authentication.
Interactive docs
Explore every endpoint, schema, and Try it out against this origin.
Authentication
Catalog GET endpoints are public. Recommendations and adventure submissions require a signed-in user and an Authorization: Bearer <firebase-id-token> header.
# Public catalog read
curl "https://miniledger.futurehax.com/api/v1/adventures"
Rate limits
POST /api/v1/recommendations is limited to 10 requests per hour per Firebase uid. Exceeded limits return 429 with a Retry-After header (seconds until retry).
Endpoints
Base path /api/v1. Full request and response schemas live in Swagger.
Adventures
/api/v1/adventuresList adventures with optional search and filters.
/api/v1/adventures/{id}Get one adventure with actors and official or Punch-Out mini links.
Actors
/api/v1/actorsList Foundry-sourced enemies, optionally by adventure.
Minis
/api/v1/minisList official and Punch-Out minis with optional filters.
Recommendations
/api/v1/recommendationsSubmit a mini suggestion for an adventure enemy (Bearer required).
Adventure submissions
/api/v1/adventure-submissionsSubmit an adventure for catalog review (Bearer required; Discord intake).
Meta
/api/v1/openapiOpenAPI 3.0 specification as JSON.
/api/v1/docsRedirect to the interactive Swagger UI.
Error codes
Errors use a JSON envelope: { error, code, details? }.
unauthorizedMissing or invalid Firebase ID token.
invalid_argumentRequest validation failed.
invalid_jsonRequest body is not valid JSON.
rate_limitedToo many requests; see the Retry-After header.
not_foundRequested resource was not found.
internal_errorUnexpected server error.
Next steps