Vantage API

Base domain: vantage.callumjanes.uk. Caddy mode: local.

Public endpoints

Private endpoints

Authenticated docs access is active for this browser session. Session-authenticated requests can call the private API routes directly from this browser; external clients should still use the bearer token.

MethodPathDescriptionJSON body
GET /agency/accept Approves a pending agency by numeric id query string.
/agency/accept?agencyid=123
GET /agency/grant-tier Grants complimentary Pro or Enterprise access by numeric id query string.
/agency/grant-tier?agencyid=123&tier=enterprise&duration=30d
POST /api/discord/signup-approval Posts the agency approval embed and buttons via the API bot.
{"id":123,"name":"Agency","slug":"agency"}
POST /api/discord/job-application Posts a job application embed via the API bot.
{"fullName":"Name","email":"test@example.com","role":"Developer"}
GET /api/health Service health and runtime mode.
POST /api/caddy/provision-subdomain Adds the default <slug>.<base-domain> Caddy block.
{"slug":"demo"}
POST /api/caddy/remove-subdomain Removes the default <slug>.<base-domain> Caddy block.
{"slug":"demo"}
POST /api/caddy/provision-domain Adds a custom-domain Caddy block.
{"domain":"example.com"}
POST /api/caddy/remove-domain Removes a custom-domain Caddy block.
{"domain":"example.com"}
GET /api/agencies/:slug/custom-domain/status Returns live custom-domain verification and provisioning progress.
POST /api/agencies/:slug/activate Marks an agency active, syncs tier/state, and provisions the default subdomain.
{"activeTier":"pro"}
PATCH /api/agencies/:slug/custom-domain Sets or clears a custom domain, syncs the DB, and removes the previous domain block when possible.
{"customDomain":"example.com"}
PATCH /api/agencies/:slug/settings Updates agency settings such as reply-to email, webhook, branding, and role config.
{"replyToEmail":"ops@example.com","customBrandingEnabled":true}
POST /api/job-applications Stores a job application and posts the Discord review card.
{"fullName":"Name","email":"test@example.com","dob":"2000-01-01","role":"Developer","message":"Hello"}
POST /api/notifications Creates an in-app notification for an agency.
{"agencyId":123,"type":"battle_posted","title":"New battle posted"}
POST /api/agencies/:slug/notifications/:id/read Marks one in-app notification as read for an agency user.
{"userId":456}
POST /api/agencies/:slug/notifications/read-all Marks all in-app notifications as read for an agency user.
{"userId":456}
POST /api/agencies/:slug/teams Creates a team for an agency.
{"name":"Team Alpha"}
POST /api/agencies/:slug/teams/replace Replaces an agency team list in one transaction.
{"teamNames":["Alpha","Bravo"]}
DELETE /api/agencies/:slug/teams/:name Deletes a team for an agency.
POST /api/agencies/:slug/invites Creates a secure invite for an agency.
{"token":"abc123","role":"user","expiresAt":"2026-04-05 12:00:00"}
POST /api/agencies/:slug/users Creates a user for an agency.
{"email":"user@example.com","passwordHash":"...","role":"user"}
PATCH /api/agencies/:slug/users/:id Updates a user for an agency.
{"email":"user@example.com","team":"Alpha"}
DELETE /api/agencies/:slug/users/:id Deletes a user for an agency and clears battle assignments.
PATCH /api/agencies/:slug/users/:id/password Updates a user password hash and password_set flag.
{"passwordHash":"...","passwordSet":true}
PUT /api/agencies/:slug/users/:id/preferences Upserts user preference settings for an agency user.
{"showCreatorSchedule":true}
POST /api/invites/:token/accept Accepts an invite, creates the user, and marks the invite used.
{"agencySlug":"demo","passwordHash":"...","creatorName":"Name","team":"Alpha"}
POST /api/agencies/:slug/battles Creates a battle for an agency.
{"time":"2026-04-05 18:00:00","size":"Small","componentName":"Dance"}
PATCH /api/agencies/:slug/battles/:id Updates a battle for an agency.
{"time":"2026-04-05 18:00:00","size":"Big"}
PATCH /api/agencies/:slug/battles/:id/assign Assigns a creator to a battle when it is unassigned.
{"creatorId":123}
PATCH /api/agencies/:slug/battles/:id/unassign Clears the creator assignment from a battle.
POST /api/agencies/:slug/battle-time-requests Creates a pending custom battle-time request.
{"userId":123,"requestedTime":"2026-04-05 18:00:00","note":"Prefer evening"}
POST /api/agencies/:slug/battle-time-requests/:id/decision Approves or denies a pending battle-time request.
{"decision":"approve","approvedByUserId":456}
POST /api/agencies/:slug/share-requests Creates an agency sharing request.
{"targetAgencyId":2,"requestedByUserId":10}
POST /api/agencies/:slug/share-requests/:id/respond Accepts or rejects an agency sharing request.
{"decision":"accept","actingAgencyId":2,"actingUserId":10}
POST /api/agencies/:slug/shared-battles/:id/decision Records an accept or deny decision for a shared battle.
{"fromAgencyId":1,"decision":"accepted","decidedByUserId":10}
POST /api/agencies/:slug/campaigns Creates a campaign for an agency.
{"title":"Spring Push","startDate":"2026-04-05","endDate":"2026-04-10"}
DELETE /api/agencies/:slug/campaigns/:id Deletes a campaign for an agency.