Frontend Developer Handoff - User Invitation Flow
Quick Start
Your frontend needs to implement the user invitation acceptance flow. Users receive an email with a JWT token in the URL, and your app needs to:
- Extract token from URL (
?InviteToken=...) - Validate token with API
- Show invitation details
- User signs up with Firebase Auth
- Accept invitation with Firebase ID token
Essential Information
API Base URL
- Production:
https://api.maintor.systems - Development: Your Cloud Functions URL (if using GCP)
Invitation Email Link Format
https://yourapp.com/signup?InviteToken=<JWT_TOKEN>
The token is passed as a query parameter named InviteToken (not token).
Two API Endpoints You Need
1. Validate Token (POST)
POST /v1/public/user-invitations/validate
Content-Type: application/json
Body: { "token": "<JWT>" }
Returns invitation details (user email, account name, roles).
2. Accept Invitation (POST)
POST /v1/public/user-invitations/accept
Content-Type: application/json
Authorization: IDTOKEN.<firebaseIdToken>
Body: { "token": "<JWT>" }
Critical: Requires Firebase ID token in Authorization header with IDTOKEN. prefix.
Key Requirements
- Email Matching: Firebase Auth email must match invitation email (API enforces this)
- Token Format: JWT token from URL query parameter
InviteToken - Firebase ID Token: Required for accept endpoint (get via
firebaseUser.getIdToken()) - Token Expiry: Tokens expire after 7 days (default)
Complete Documentation
See the detailed guide: docs/user-invitation-frontend-guide.md
This includes:
- Complete API reference
- Step-by-step implementation guide
- Code examples
- Error handling
- Testing scenarios
- UI/UX recommendations
Quick Implementation Checklist
- Extract
InviteTokenfrom URL query parameters - Call validate endpoint to get invitation details
- Display invitation information (account name, email, roles)
- Pre-fill email field (read-only recommended)
- Implement Firebase Auth signup (email must match invitation)
- Get Firebase ID token after signup
- Call accept endpoint with token and Firebase ID token
- Handle errors (invalid token, email mismatch, etc.)
- Redirect to dashboard after successful acceptance
Common Issues
- Email Mismatch Error: Ensure Firebase Auth uses the same email as the invitation
- Invalid Token: Token may be expired (7 days) or already used
- Missing Authorization Header: Must include
IDTOKEN.<firebaseIdToken>for accept endpoint - Wrong Query Parameter: Use
InviteToken(capital I, capital T), nottokenorinviteToken
Support
For questions or issues, refer to:
- Detailed guide:
docs/user-invitation-frontend-guide.md - API documentation:
/openapi.json - Backend team for API-related questions