Masked email: Fastmail's Masked Email API, MaskedEmail/get and /set (ME-1, ME-7a, ME-16)

Advertised as https://www.fastmail.com/dev/maskedemail in the session and on
every account that may hold masks. Masks created through it start pending
unless the create sets a state; pending can't be set again once left; state
and the other mutable fields map onto the same records the x: API uses.
This commit is contained in:
2026-09-18 16:29:47 -07:00
parent 7080028437
commit d04aafd3d7
16 changed files with 626 additions and 5 deletions
+7 -3
View File
@@ -66,7 +66,9 @@ pub async fn test(test: &TestServer) {
"supportsPush": true
},
// inbuxa: the fork's own capability (contract C-1, multi-tenancy MT-22)
"urn:inbuxa:jmap": {}
"urn:inbuxa:jmap": {},
// inbuxa: Fastmail's Masked Email API (masked email)
"https://www.fastmail.com/dev/maskedemail": {}
},
"accounts": {
john_id: {
@@ -248,7 +250,8 @@ pub async fn test(test: &TestServer) {
"urn:ietf:params:jmap:mail:share": {},
"urn:stalwart:jmap": {},
// inbuxa: MT-22, the logo that applies to the account
"urn:inbuxa:jmap": { "logo": null }
"urn:inbuxa:jmap": { "logo": null },
"https://www.fastmail.com/dev/maskedemail": {}
}
}
},
@@ -269,7 +272,8 @@ pub async fn test(test: &TestServer) {
"urn:ietf:params:jmap:principals:availability": john_id,
"urn:ietf:params:jmap:filenode": john_id,
"urn:ietf:params:jmap:mail:share": john_id,
"urn:stalwart:jmap": john_id
"urn:stalwart:jmap": john_id,
"https://www.fastmail.com/dev/maskedemail": john_id
},
"username": "[email protected]",
"apiUrl": "https://127.0.0.1:8899/jmap/",