WakaStart
Using the API

Endpoint reference

Exhaustive table of all Discovery, Auth, profile, CRUD, invitations and modules endpoints available for a WakaApp.

Version v1.09 min read

Endpoint reference

Quick reference table. For each group: method, route, required auth, and application right. Use the Swagger UI (http://localhost/api/docs) for full DTO details.


Discovery (pre-auth — public)

Base URL: {DISCOVERY_API_URL} (default: http://localhost)

MethodRouteThrottleDescription
GET/discover/email?email=5/60s · 20/600s (10 min) · 100/3600s (1 h)Find the organization by email
GET/discover/subdomain?subdomain=5/60s · 20/600s (10 min) · 100/3600s (1 h)Find the organization by subdomain
GET/discover/apps/customer?customerId=—Apps accessible for a customer
GET/discover/apps/user?userId=—Apps accessible for a user
GET/discover/apps/network?networkId=—Apps accessible for a network
POST/discover/start-login5/60s · 20/600s (10 min) · 100/3600s (1 h)Resolves realm + client_id, returns keycloakUrl

Auth (wakastart BFF — public for enrich)

Base URL: {WAKASTART_BACKEND_URL} (default: http://localhost)

MethodRouteThrottleDescription
GET/api/auth/public-key—Public RSA key
POST/api/auth/enrich— (not limited on the BFF side)Enriches a Keycloak access_token into a wakaToken signed by WakaStart
POST/api/auth/token/refresh10/min (default of the BFF's ThrottlerModule)Refreshes access_token + refresh_token + enriched
POST/api/auth/logout— (not limited on the BFF side)Invalidates the refresh_token on the Keycloak side
POSTkeycloak/realms/{realm}/protocol/openid-connect/token—Exchange code → tokens (PKCE, call Keycloak directly)

Profile & Rights (Public API)

Base URL: {PUBLIC_API_URL} (default: http://localhost) Auth: Authorization: Bearer + x-enriched-token or x-api-key

MethodRouteRequired rightDescription
GET/api/me—Full profile + roles + appRights
POST/api/token/authorizex-api-keyCombined check: admin level + roles + rights
POST/api/token/rightsCustomerAdminVerify and enrich a JWT
POST/api/token/check/admin-levelx-api-keyCheck admin level
POST/api/token/check/rolesx-api-keyCheck Waka roles
POST/api/token/check/hdsx-api-keyCheck HDS roles
POST/api/token/check/teamx-api-keyCheck team rights

Config — Partners

MethodRouteRequired rightDescription
GET/api/config/partnerspartners.readList partners
GET/api/config/partners/:widpartners.readPartner detail
POST/api/config/partnerspartners.createCreate a partner
PATCH/api/config/partners/:widpartners.writeUpdate a partner
DELETE/api/config/partners/:widpartners.deleteDelete a partner

Config — Networks

MethodRouteRequired rightDescription
GET/api/config/networksnetworks.readList networks
GET/api/config/networks/:widnetworks.readNetwork detail
POST/api/config/networksnetworks.createCreate a network
PATCH/api/config/networks/:widnetworks.writeUpdate a network

Config — Customers

MethodRouteRequired rightDescription
GET/api/config/customerscustomers.readList customers
GET/api/config/customers/:widcustomers.readCustomer detail
POST/api/config/customerscustomers.createCreate a customer
PATCH/api/config/customers/:widcustomers.writeUpdate a customer
DELETE/api/config/customers/:widcustomers.deleteDelete a customer

Config — Users

MethodRouteRequired rightDescription
GET/api/config/usersusers.readList users
GET/api/config/users/:widusers.readUser detail
GET/api/config/users/statsusers.readUser statistics
POST/api/config/usersusers.createCreate a user
PUT/api/config/users/:widusers.updateUpdate a user
DELETE/api/config/users/:widusers.deleteDelete a user
POST/api/config/users/:wid/disableusers.updateDisable a user
POST/api/config/users/:wid/enableusers.updateRe-enable a user

Breaking change: POST /api/config/users and PUT /api/config/users/:wid used to accept a userLevel field in production until recently. The field has been removed from the DTO (CreateUserDto/UpdateUserDto) and ws-serv-config's global ValidationPipe is strict (whitelist: true, forbidNonWhitelisted: true): sending userLevel in the body of either endpoint now returns a 400 Bad Request. Remove this field from your existing integrations.

Config — Teams

MethodRouteRequired rightDescription
GET/api/config/teamsteams.readList teams
GET/api/config/teams/:widteams.readTeam detail
POST/api/config/teamsteams.createCreate a team
PATCH/api/config/teams/:widteams.writeUpdate a team
DELETE/api/config/teams/:widteams.deleteDelete a team
GET/api/config/teams/:wid/membersteams.readList members
POST/api/config/teams/:wid/membersteams.members.addAdd a member
DELETE/api/config/teams/:wid/members/:userIdteams.members.removeRemove a member

Config — Applications

MethodRouteRequired rightDescription
GET/api/config/appsapps.readList applications
GET/api/config/apps/:widapps.readApplication detail
POST/api/config/appsapps.createCreate an application
PATCH/api/config/apps/:widapps.writeUpdate an application
DELETE/api/config/apps/:widapps.deleteDelete an application
GET/api/apps/:appWid/runtime-config—Runtime config (theme, languages, branding)

Config — Profiles and Rights

MethodRouteRequired rightDescription
GET/api/config/profilesprofiles.readList profiles
GET/api/config/profiles/:widprofiles.readProfile detail
POST/api/config/profilesprofiles.createCreate a profile
PATCH/api/config/profiles/:widprofiles.writeUpdate a profile
DELETE/api/config/profiles/:widprofiles.deleteDelete a profile
GET/api/config/profiles/:wid/rightsprofiles.readRights of a profile
PATCH/api/config/profiles/:wid/rightsprofiles.rights.writeUpdate a profile's rights
GET/api/config/profiles/:wid/usersprofiles.readUsers of a profile
POST/api/config/profiles/:wid/usersprofiles.assignAssign a profile to a user
GET/api/config/app-rightsprofiles.readList all available AppRights

Invitations

MethodRouteAuthRequired rightDescription
POST/api/invitationsBearer / API keyinvitations.createCreate an invitation (automatic email sending)
GET/api/invitations/sentBearer / API keyinvitations.readInvitations sent by the current user
GET/api/invitations/sent/app/:appIdBearer / API keyinvitations.readInvitations sent for an App
GET/api/invitations/by-customer/:customerIdBearer / API keyinvitations.readAll invitations for a Customer
GET/api/invitations/:idBearer / API keyinvitations.readInvitation detail
GET/api/invitations/verify/:tokenPUBLIC—Verify an invitation token (throttle 10/min)
POST/api/invitations/accept/:tokenPUBLIC—Accept an invitation (throttle 5/min)
POST/api/invitations/:id/resendBearer / API keyinvitations.createResend the email, new token
DELETE/api/invitations/:idBearer / API keyinvitations.revokeRevoke an invitation

Invitation prerequisites:

  • invitation feature enabled in cascade (App ∧ Network ∧ Customer)
  • invitations.create right on the token or the API key (AppRight carried by a profile)
  • adminLevel >= CUSTOMER_ADMIN for the caller (human or API key)

The userLevel concept is no longer used to gate invitation creation. Sending userLevel in the body of POST /api/invitations now returns a 400 (unrecognized field).


API Keys

MethodRouteRequired rightDescription
GET/api/config/api-keysapi-keys.readList API keys
GET/api/config/api-keys/:widapi-keys.readAPI key detail
POST/api/config/api-keysapi-keys.createCreate an API key
DELETE/api/config/api-keys/:widapi-keys.revokeRevoke an API key

Audit Logs

MethodRouteRequired rightDescription
GET/api/audit/logsaudit.readList audit logs (paginated, filterable)
GET/api/audit/logs/:idaudit.readAudit log detail
GET/api/audit/statsaudit.readAudit statistics
POST/api/audit/exportaudit.exportExport logs (CSV/JSON)

Antivirus

MethodRouteRequired rightDescription
POST/api/antivirus/scansantivirus.scanSubmit a file for scanning (multipart, max 100 MB)
GET/api/antivirus/scansantivirus.readList scans (paginated)
GET/api/antivirus/scans/statsantivirus.readScan statistics
GET/api/antivirus/scans/:id/statusantivirus.readPoll a scan's status
GET/api/antivirus/scans/:idantivirus.readScan detail

Backup & Import

MethodRouteRequired rightDescription
GET/api/backup/applications/:widapps.readJSON export of an application
GET/api/backup/networks/:widnetworks.readJSON export of a network
GET/api/backup/customers/:widcustomers.readJSON export of a customer
GET/api/backup/allWakaAdminFull JSON export
POST/api/restore/applicationsapps.createImport/upsert an application
POST/api/restore/networksnetworks.createImport/upsert a network
POST/api/restore/customerscustomers.createImport/upsert a customer
GET/api/import/users/templateusers.createDownload the CSV template
POST/api/import/usersusers.createImport users from CSV (max 500, consumes credits)

Translations & Themes

MethodRouteRequired rightDescription
GET/api/translations—List translation keys
POST/api/ai-translation/bulktranslations.writeBulk AI translation (credits)
POST/api/ai-translation/singletranslations.writeSingle text AI translation (credits)
GET/api/themesthemes.readList CSS themes
POST/api/themesthemes.createCreate a theme

MCP Server (Claude Code Integration)

MethodRouteAuthDescription
POST/api/mcpNone (public docs)JSON-RPC 2.0 endpoint, 5 tools available

Available MCP tools:

ToolDescription
list_endpointsLists all endpoints with filter by tag/method
get_endpoint_specFull detail (DTO, HTTP codes, examples)
search_docsFull-text search across the guides
get_auth_flowSummary of the auth flow (frontend/backend/mobile)
get_error_codeDetail of an HTTP or business error code