- Shipped
- September 12, 2026 at 6:45 AM UTC
- Author
- Kamo
- Commit
- 7092593
A member working a lead can now see whether that person may be emailed, and change it, without the org-wide opt-out settings list. GET **************** answers with the address's state on the organization's opt-out ledger, its ten most recent changes and the topics an address can stop. Who may read it follows the lead itself (401/404/403 as for opening the lead, free-for-all leads included). A caller whose view of the lead's contact details is masked gets the address masked the same way and no IP, browser or session details on the history rows. PUT on the same path changes it. It is allowed exactly when editing this lead's contact details is allowed (the assignee, or EDIT_LEAD_CONTACT_INFO_OTHERS plus VIEW_UNASSIGNED_LEADS for an unassigned lead) and never while the address is masked. The change is recorded as MANUAL from "lead:<id>", with the member, the request's addresses and browser, and a hash of the session. Allowing email again needs a note, which the ledger enforces (400 with field "comment"); until the history tables exist a change is refused with 503 HISTORY_UNAVAILABLE. Each change also leaves a row on the lead's own History tab. The ledger is declared here with its own schema probe, as EmailService does.