Vantage API
Base domain: vantage.callumjanes.uk. Caddy mode: local.
Public endpoints
- No public endpoints are exposed right now.
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.
| Method | Path | Description | JSON 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. |