PWA Admin Core API
This site documents the HTTP API exposed by the pwa-admin-core backend
(Spring Boot 3.5 / Kotlin, springdoc-openapi). The reference pages under
API Reference are generated directly
from the backend's OpenAPI specification — do not edit them by hand.
How the API is organised
Endpoints are grouped by domain:
| Domain | Path prefix | What it covers |
|---|---|---|
| Authentication | /auth/** | Login, logout, session, access restore |
| PWA | /pwa/** | PWA apps, configuration, client & TDS APIs |
| Splits | /split/** | A/B split configuration |
| Flows | /flow/** | PWA flows |
| Landings | /landing/** | Landing pages |
| Domains | /domain/** | Domain registration & DNS accounts (Namecheap, Cloudflare) |
| Billing | /billing/** | Balance, deposits, spend |
| Team | /team/** | Teams and team members |
| Push & Notifications | /push/** | Push configs, FCM projects, notifications |
| Reports | /report/** | Analytics and spend reports |
| S2S (integrations) | /s2s/** | Server-to-server events |
| System | /system/** | Admin-only operations (ROLE_ADMIN) |
Before you start
- Read Authentication first. The API uses a JWT in an HttpOnly cookie plus XSRF protection, which is not obvious from the spec.
- Public IDs are opaque prefixed strings, never numbers. Identifiers look
like
pwa_a1b2c3,user_x9y8z7,team_…. In the spec they are typed asstring. - The in-browser "Try it" button is disabled. It cannot work against this
backend because of HttpOnly cookies and CORS — see
Authentication → Trying requests.
Use the
curlexamples instead.
Regenerating this documentation
The API pages are generated from the OpenAPI file in the spec/ folder. After
the backend's API changes, replace that file and restart — see the
README for
the exact commands.