space.intandem.calendarSource

chaosgreml.in

Schema Diff

+6 -2

From

CID
bafyreiezmpehmwh...
Indexed At
2026-08-28 01:20 UTC
View this version

To

CID
bafyreiayfomspvi...
Indexed At
2026-09-07 22:18 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 3 non-breaking changes.

Non-Breaking Changes (3)
  • AddedVertex AddedVertex { vertex_id: "space.intandem.calendarSource:body.writeBack" }
  • AddedEdge AddedEdge { src: "space.intandem.calendarSource:body", tgt: "space.intandem.calendarSource:body.writeBack", kind: "prop", name: Some("writeBack") }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "space.intandem.calendarSource:body.secret", sort: "maxLength", old_value: "1000", new_value: "2000" }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "space.intandem.calendarSource:body.writeBack" }

Constraint Changes

  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "space.intandem.calendarSource:body.secret", sort: "maxLength", old_value: "1000", new_value: "2000" }

Additional Notes

  • Non-breaking: AddedEdge { src: "space.intandem.calendarSource:body", tgt: "space.intandem.calendarSource:body.writeBack", kind: "prop", name: Some("writeBack") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "A connected calendar whose busy time subtracts from availability.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "createdAt": {
10 10
            "format": "datetime",
11 11
            "type": "string"
12 12
          },
13 13
          "kind": {
14 14
            "enum": [
15 15
              "ics",
16 16
              "caldav"
17 17
            ],
18 18
            "type": "string"
19 19
          },
20 20
          "name": {
21 21
            "maxLength": 200,
22 22
            "type": "string"
23 23
          },
24 24
          "secret": {
25 -
            "description": "CalDAV password / app password. Alpha caveat: stored unencrypted in a members-only space.",
26 -
            "maxLength": 1000,
25 +
            "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.",
26 +
            "maxLength": 2000,
27 27
            "type": "string"
28 28
          },
29 29
          "url": {
30 30
            "format": "uri",
31 31
            "type": "string"
32 32
          },
33 33
          "username": {
34 34
            "maxLength": 300,
35 35
            "type": "string"
36 +
          },
37 +
          "writeBack": {
38 +
            "description": "This calendar receives an event for each booking. CalDAV only; at most one source per host carries it.",
39 +
            "type": "boolean"
36 40
          }
37 41
        },
38 42
        "required": [
39 43
          "name",
40 44
          "kind",
41 45
          "url",
42 46
          "createdAt"
43 47
        ],
44 48
        "type": "object"
45 49
      },
46 50
      "type": "record"
47 51
    }
48 52
  },
49 53
  "id": "space.intandem.calendarSource",
50 54
  "lexicon": 1
51 55
}

Compare Other Versions

Lexicon Garden

@