Invite Team Member
Handler: InviteTeamMember. Creates a pending membership (link status 'invited', role pre-assigned inactive), sends the invitation email and in-app notification. Re-inviting a pending or removed member refreshes the invitation; inviting a member who already accepted is refused with 409 customers_m.team_member_already_active (their membership is never reset). Caller must hold the customer's admin role or be a global operator (read-all on customers). Returns { message }.
Authorization
bearerAuth JWT token obtained from /v1/authenticate endpoint
In: header
Path Parameters
id path parameter
Customer UUID.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
TeamInviteData — invite a team member to a customer. first_name/last_name are required only for a person without an existing account (the account is created from them); for an existing account they are ignored.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/customers/497f6eca-6276-4993-bfeb-53cbbbba6f08/teams/invite" \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com" }'{
"message": "string"
}{
"status": 400,
"message": "Bad request"
}{
"status": 401,
"message": "Unauthorized"
}{
"status": 403,
"message": "Forbidden"
}{
"status": 404,
"message": "Not found"
}{
"status": 409,
"message": "Conflict"
}{
"status": 500,
"message": "Internal server error"
}Handler: AcceptTeamInvitation. The signed-in user accepts their own pending team invitation for this customer. Requires a membership link with status 'invited' held by the caller; a missing or removed link is refused (403 common.permission_denied). Activates the link and the pre-assigned customer role — the moment access is granted. Idempotent: an already-accepted invitation returns 200. Returns { customer_id }.
Handler: RemoveTeamMember. Physically deletes the customer<->user link and the member's customer-scoped role assignments (pending or accepted), so the person can be re-invited; returns { message }.