Issue Description
When modifying a VacationResponse using a JMAP VacationResponse/set modify operation, the isEnabled attribute is reset to false despite being untouched by the patch.
I cannot find anything in the specification that would warrant that behaviour.
Tested against v0.16.12-alpine
Expected Behavior
When modifying properties of the VacationResponse singleton that are not isEnabled, it should not modify isEnabled.
Actual Behavior
When I first send a VacationResponse/set that sets isEnabled to true, and query it, it is correctly set to true.
But when I then perform another VacationResponse/set that sets fromDate (and only that), and I query using VacationResponse/get, then the isEnabled attribute is set to false.
Reproduction Steps
- Set
isEnabledto true:
{
"using": [
"urn:ietf:params:jmap:core",
"urn:ietf:params:jmap:vacationresponse"
],
"methodCalls": [
[
"VacationResponse/set",
{
"accountId": "e",
"update": {
"singleton": {
"isEnabled": true
}
}
},
"0"
]
]
}
- Get the current VacationResponse:
{
"using": [
"urn:ietf:params:jmap:core",
"urn:ietf:params:jmap:vacationresponse"
],
"methodCalls": [
[
"VacationResponse/get",
{
"accountId": "e"
},
"0"
]
]
}
- See that the result, indeed, has
isEnabledset totrue:
{
"methodResponses": [
[
"VacationResponse/get",
{
"accountId": "e",
"state": "sae",
"list": [
{
"id": "singleton",
"isEnabled": true,
"fromDate": null,
"toDate": null,
"subject": null,
"textBody": null,
"htmlBody": null
}
],
"notFound": []
},
"0"
]
],
"sessionState": "e9f3d4ed"
}
- Modify the
fromDateattribute only:
{
"using": [
"urn:ietf:params:jmap:core",
"urn:ietf:params:jmap:vacationresponse"
],
"methodCalls": [
[
"VacationResponse/set",
{
"accountId": "e",
"update": {
"singleton": {
"fromDate": "2026-09-10T01:02:03Z"
}
}
},
"0"
]
]
}
- Retrieve the current VacationResponse again and see that, now, the
fromDateproperty has indeed been modified as expected, but theisEnabledproperty has been set tofalse:
{
"methodResponses": [
[
"VacationResponse/get",
{
"accountId": "e",
"state": "sai",
"list": [
{
"id": "singleton",
"isEnabled": false,
"fromDate": "2026-09-10T01:02:03Z",
"toDate": null,
"subject": null,
"textBody": null,
"htmlBody": null
}
],
"notFound": []
},
"0"
]
],
"sessionState": "e9f3d4ed"
}
Stalwart Version
v0.16.x
Installation Method
Docker
Database Backend
RocksDB
Blob Storage
RocksDB
Search Engine
Internal
Directory Backend
LDAP
I have reviewed the documentation and FAQ and confirm that my issue is NOT addressed there.
on
I have searched this support forum (open and closed topics) and confirm this is not a duplicate.
on
I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.
on