zone.stratos.sync.subscribeRecords

lexicon.northsky.app

Schema Diff

+45 -5

From

CID
bafyreiadu7jj6rn...
Indexed At
2026-03-03 21:30 UTC
View this version

To

CID
bafyreic7vx2jl2f...
Indexed At
2026-08-26 08:59 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 10 non-breaking changes.

Breaking Changes (3)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment", src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.action", kind: "prop", name: Some("action") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment", src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.did", kind: "prop", name: Some("did") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment", src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.time", kind: "prop", name: Some("time") }
Non-Breaking Changes (10)
  • AddedVertex AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment" }
  • AddedVertex AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.action" }
  • AddedVertex AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.boundaries" }
  • AddedVertex AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.boundaries:items" }
  • AddedVertex AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.did" }
  • AddedVertex AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.service" }
  • AddedVertex AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.time" }
  • AddedEdge AddedEdge { src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.boundaries", kind: "prop", name: Some("boundaries") }
  • AddedEdge AddedEdge { src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.service", kind: "prop", name: Some("service") }
  • AddedEdge AddedEdge { src: "zone.stratos.sync.subscribeRecords#enrollment.boundaries", tgt: "zone.stratos.sync.subscribeRecords#enrollment.boundaries:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment" }
  • AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.action" }
  • AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.boundaries" }
  • AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.boundaries:items" }
  • AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.did" }
  • AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.service" }
  • AddedVertex { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment.time" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment", src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.action", kind: "prop", name: Some("action") }
  • Breaking: RequiredEdgeAdded { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment", src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.did", kind: "prop", name: Some("did") }
  • Breaking: RequiredEdgeAdded { vertex_id: "zone.stratos.sync.subscribeRecords#enrollment", src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.time", kind: "prop", name: Some("time") }
  • Non-breaking: AddedEdge { src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.boundaries", kind: "prop", name: Some("boundaries") }
  • Non-breaking: AddedEdge { src: "zone.stratos.sync.subscribeRecords#enrollment", tgt: "zone.stratos.sync.subscribeRecords#enrollment.service", kind: "prop", name: Some("service") }
  • Non-breaking: AddedEdge { src: "zone.stratos.sync.subscribeRecords#enrollment.boundaries", tgt: "zone.stratos.sync.subscribeRecords#enrollment.boundaries:items", kind: "items", name: None }
1 1
{
2 2
  "id": "zone.stratos.sync.subscribeRecords",
3 3
  "defs": {
4 4
    "info": {
5 5
      "type": "object",
6 6
      "required": [
7 7
        "name"
8 8
      ],
9 9
      "properties": {
10 10
        "name": {
11 11
          "type": "string",
12 12
          "maxLength": 128,
13 13
          "description": "The type of info message.",
14 14
          "knownValues": [
15 15
            "OutdatedCursor"
16 16
          ]
17 17
        },
18 18
        "message": {
19 19
          "type": "string",
20 20
          "maxLength": 1024,
21 21
          "description": "Additional details about the info message."
22 22
        }
23 23
      },
24 24
      "description": "An informational message about the subscription state."
25 25
    },
26 26
    "main": {
27 27
      "type": "subscription",
28 28
      "errors": [
29 29
        {
30 30
          "name": "FutureCursor",
31 31
          "description": "Cursor is in the future."
32 32
        },
33 33
        {
34 34
          "name": "AuthRequired",
35 35
          "description": "Authentication is required."
36 36
        }
37 37
      ],
38 38
      "message": {
39 39
        "schema": {
40 40
          "refs": [
41 41
            "#commit",
42 +
            "#enrollment",
42 43
            "#info"
43 44
          ],
44 45
          "type": "union"
45 46
        }
46 47
      },
47 48
      "parameters": {
48 49
        "type": "params",
49 -
        "required": [
50 -
          "did"
51 -
        ],
52 50
        "properties": {
53 51
          "did": {
54 52
            "type": "string",
55 53
            "format": "did",
56 -
            "description": "The DID of the account to subscribe to."
54 +
            "description": "The DID of the account to subscribe to. If omitted, subscribes to service-level enrollment events."
57 55
          },
58 56
          "cursor": {
59 57
            "type": "integer",
60 58
            "description": "The last known event sequence number to resume from."
61 59
          },
62 60
          "domain": {
63 61
            "type": "string",
64 62
            "maxLength": 253,
65 63
            "description": "Optional domain filter. Only events for records with this domain in their boundary will be emitted."
66 64
          }
67 65
        }
68 66
      },
69 -
      "description": "Subscribe to stratos record updates for a specific account. Requires service auth or owner authentication."
67 +
      "description": "Subscribe to stratos events. When 'did' is provided, subscribes to record updates for that account. When omitted, subscribes to service-level events (enrollments). Callers must authenticate with a signed service JWT via the Authorization: Bearer header."
70 68
    },
71 69
    "commit": {
72 70
      "type": "object",
73 71
      "required": [
74 72
        "seq",
75 73
        "did",
76 74
        "time",
77 75
        "rev",
78 76
        "ops"
79 77
      ],
80 78
      "properties": {
81 79
        "did": {
82 80
          "type": "string",
83 81
          "format": "did",
84 82
          "description": "The DID of the account."
85 83
        },
86 84
        "ops": {
87 85
          "type": "array",
88 86
          "items": {
89 87
            "ref": "#recordOp",
90 88
            "type": "ref"
91 89
          },
92 90
          "description": "List of record operations in this commit."
93 91
        },
94 92
        "rev": {
95 93
          "type": "string",
96 94
          "format": "tid",
97 95
          "description": "The repo revision."
98 96
        },
99 97
        "seq": {
100 98
          "type": "integer",
101 99
          "description": "The sequence number of this event."
102 100
        },
103 101
        "time": {
104 102
          "type": "string",
105 103
          "format": "datetime",
106 104
          "description": "Timestamp of when the event was sequenced."
107 105
        }
108 106
      },
109 107
      "description": "A commit event containing record operations."
110 108
    },
111 109
    "recordOp": {
112 110
      "type": "object",
113 111
      "required": [
114 112
        "action",
115 113
        "path"
116 114
      ],
117 115
      "properties": {
118 116
        "cid": {
119 117
          "type": "cid-link",
120 118
          "description": "The CID of the record. Present for create and update operations."
121 119
        },
122 120
        "path": {
123 121
          "type": "string",
124 122
          "maxLength": 512,
125 123
          "description": "The record path (collection/rkey)."
126 124
        },
127 125
        "action": {
128 126
          "type": "string",
129 127
          "maxLength": 32,
130 128
          "description": "The type of operation.",
131 129
          "knownValues": [
132 130
            "create",
133 131
            "update",
134 132
            "delete"
135 133
          ]
136 134
        },
137 135
        "record": {
138 136
          "type": "unknown",
139 137
          "description": "The record content. Present for create and update operations."
140 138
        }
141 139
      },
142 140
      "description": "A single record operation within a commit."
141 +
    },
142 +
    "enrollment": {
143 +
      "type": "object",
144 +
      "required": [
145 +
        "did",
146 +
        "action",
147 +
        "time"
148 +
      ],
149 +
      "properties": {
150 +
        "did": {
151 +
          "type": "string",
152 +
          "format": "did",
153 +
          "description": "The DID of the user."
154 +
        },
155 +
        "time": {
156 +
          "type": "string",
157 +
          "format": "datetime",
158 +
          "description": "Timestamp of the enrollment event."
159 +
        },
160 +
        "action": {
161 +
          "type": "string",
162 +
          "maxLength": 32,
163 +
          "description": "The enrollment action.",
164 +
          "knownValues": [
165 +
            "enroll",
166 +
            "unenroll"
167 +
          ]
168 +
        },
169 +
        "service": {
170 +
          "type": "string",
171 +
          "format": "uri",
172 +
          "description": "The Stratos service endpoint URL."
173 +
        },
174 +
        "boundaries": {
175 +
          "type": "array",
176 +
          "items": {
177 +
            "type": "string"
178 +
          },
179 +
          "description": "The boundaries assigned to the user."
180 +
        }
181 +
      },
182 +
      "description": "An enrollment event indicating a user has enrolled or unenrolled from the service."
143 183
    }
144 184
  },
145 185
  "$type": "com.atproto.lexicon.schema",
146 186
  "lexicon": 1
147 187
}

Compare Other Versions

Lexicon Garden

@