Journey Docs
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/json

Token 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

PermissionDescription
members:readView member data
members:writeEdit member data
members:giftGift points/tiers
members:mergeMerge member accounts
reservations:readView reservations
reservations:writeModify reservations
analytics:readAccess analytics
security:adminSecurity 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 ID
  • email: Admin email
  • org_id: Organization ID
  • permissions: Array of permissions
  • exp: Expiration timestamp

Bruno Examples

  • bruno/Admin/Auth/WorkOS Callback.bru
  • bruno/Admin/Members/Query.bru

Error Handling

StatusDescription
401Invalid or expired token
403Insufficient permissions
404Resource not found

On this page