Skip to content

Commit 68eefc5

Browse files
josep-reyeroclaude
andcommitted
docs(invite): clarify best-effort invite email dispatch
Document that committee-service dispatches the send-invite request on a best-effort basis: SendInvite failures are logged and do not fail the API call, there is no automatic retry, and no dedicated resend endpoint exists. Clarify that recovery is via the invite lifecycle (revoke + re-invite), which reinstates the record and re-triggers dispatchInviteEmail. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Josep Garcia-Reyero Sais <josepreyero@gmail.com>
1 parent 206bdf9 commit 68eefc5

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

docs/invite-application-flows.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ revoked ──re-invite──▶ pending (reinstates existing record)
6060
- If an invite for the same email already exists in this committee:
6161
- `status: revoked` — the existing invite is reinstated to `pending` (no new record created); role is updated if provided.
6262
- Any other status (`pending`, `declined`, `accepted`) — returns `409 Conflict`.
63-
- After the invite record is persisted (create or reinstate), the service dispatches a best-effort send-invite request to the invite service (`lfx.invite-service.send_invite`, `dispatchInviteEmail` in `cmd/committee-api/service/committee_service.go`) so the invitee receives an email. The request uses the invite-service permission vocabulary with `role: "Member"` (the committee role on the invite record is applied after acceptance). Dispatch failures are logged and do not fail the API call.
63+
- After the invite record is persisted (create or reinstate), the service dispatches a best-effort send-invite request to the invite service (`lfx.invite-service.send_invite`, `dispatchInviteEmail` in `cmd/committee-api/service/committee_service.go`) so the invitee receives an email. The request uses the invite-service permission vocabulary with `role: "Member"` (the committee role on the invite record is applied after acceptance). Dispatch is best-effort: `inviteSender.SendInvite` failures are logged (`failed to dispatch committee invite email` with `error`, `committee_uid`, `invite_uid`) and do not fail the API call. There is no automatic retry of a failed send, and committee-service exposes no dedicated "resend" endpoint. Recovery is via the invite lifecycle: revoke the invite and re-invite the same email (`POST /committees/{uid}/invites`), which reinstates the record and re-triggers `dispatchInviteEmail`.
6464

6565
**Accepting an invite** (`POST .../accept`):
6666
- Only the invitee (matched by their primary email from the auth-service) can accept their own invite.

0 commit comments

Comments
 (0)