Authentication
Admin Authentication
WorkOS SSO authentication for administrators
Administrators authenticate using WorkOS SSO with role-based permissions.
Authentication Flow
Required Headers
Authorization: Bearer <WORKOS_JWT_TOKEN>
Content-Type: application/jsonToken Exchange
// Exchange WorkOS auth code for JWT
const response = await fetch('/admin/auth/workos/callback', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
code: authCode,
redirectUri: 'https://admin.journey.com/callback'
})
});
const { token, user, permissions } = await response.json();Permissions
| Permission | Description |
|---|---|
members:read | View member data |
members:write | Edit member data |
members:gift | Gift points/tiers |
members:merge | Merge member accounts |
reservations:read | View reservations |
reservations:write | Modify reservations |
analytics:read | Access analytics |
security:admin | Security settings |
Permission Checking
// API checks permissions automatically
// Returns 403 if insufficient permissions
const giftPoints = await fetch(
'/admin/members/01J5XYZ.../gift',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${token}` // Must have members:gift
},
body: JSON.stringify({ points: 1000 })
}
);Token Claims
WorkOS JWT tokens include:
sub: User IDemail: Admin emailorg_id: Organization IDpermissions: Array of permissionsexp: Expiration timestamp
Bruno Examples
bruno/Admin/Auth/WorkOS Callback.brubruno/Admin/Members/Query.bru
Error Handling
| Status | Description |
|---|---|
| 401 | Invalid or expired token |
| 403 | Insufficient permissions |
| 404 | Resource not found |