From
bafyreiayfomspvienrpipr2aet2h3e7gqhi6flxsjfsyftgmcw7jwbj5au
indexed 2026-09-07 22:18 UTC
View this version
To
bafyreigb7rs7njxbqax2n3fiodobes22a6r7dprjrnbiilz3zpjvuacvqi
indexed 2026-10-30 01:58 UTC
View this version
Compatibility
breaking 1 breaking change, 0 non-breaking changes.
Breaking changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "space.intandem.calendarSource:body.kind", sort: "enum", old_value: "ics,caldav", new_value: "ics,caldav,google" }
Migration guidance
Constraint changes
- ConstraintTightened ConstraintTightened { vertex_id: "space.intandem.calendarSource:body.kind", sort: "enum", old_value: "ics,caldav", new_value: "ics,caldav,google" }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "A connected calendar whose busy time subtracts from availability.",66
"key": "tid",77
"record": {88
"properties": {99
"createdAt": {1010
"format": "datetime",1111
"type": "string"1212
},1313
"kind": {1414
"enum": [1515
"ics",16
"caldav"16
"caldav",17
"google"1718
],1819
"type": "string"1920
},2021
"name": {2122
"maxLength": 200,2223
"type": "string"2324
},2425
"secret": {2526
"description": "CalDAV password / app password (at most 1000 characters of plaintext), sealed at rest: an AES-256-GCM envelope (enc1:<iv>.<ciphertext>) under a key derived per host from the Tandem deployment's key, so only that deployment can read it. Records written before 2026-09-07 may still hold the plaintext until the host's next visit reseals them.",2627
"maxLength": 2000,2728
"type": "string"2829
},2930
"url": {31
"description": "ICS feed address, CalDAV calendar URL, or for kind=google the calendar's REST URL (https://www.googleapis.com/calendar/v3/calendars/<id>). For google, `username` is the account and no secret is stored: the OAuth grant lives with the Tandem deployment that made it.",3032
"format": "uri",3133
"type": "string"3234
},3335
"username": {3436
"maxLength": 300,3537
"type": "string"3638
},3739
"writeBack": {3840
"description": "This calendar receives an event for each booking. CalDAV only; at most one source per host carries it.",3941
"type": "boolean"4042
}4143
},4244
"required": [4345
"name",4446
"kind",4547
"url",4648
"createdAt"4749
],4850
"type": "object"4951
},5052
"type": "record"5153
}5254
},5355
"id": "space.intandem.calendarSource",5456
"lexicon": 15557
}