full diff

fyi.opensocial.access

From
bafyreiheqjkgpnde6n2eqo5fuyx2jg73bplo5tgeymz6bf2ekftlpspw4m indexed 2026-10-16 20:58 UTC View this version
To
bafyreia22ufkuzth44giynoobyl7huqakpf3552ccgmpy7zix4t6vktbqm indexed 2026-11-05 16:25 UTC View this version

Compatibility

breaking 21 breaking changes, 16 non-breaking changes.

Breaking changes (21)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "fyi.opensocial.access:body", src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.grants", kind: "prop", name: Some("grants") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "fyi.opensocial.access#roleScopes", src: "fyi.opensocial.access#roleScopes", tgt: "fyi.opensocial.access#roleScopes.role", kind: "prop", name: Some("role") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "fyi.opensocial.access#roleScopes", src: "fyi.opensocial.access#roleScopes", tgt: "fyi.opensocial.access#roleScopes.scopes", kind: "prop", name: Some("scopes") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "fyi.opensocial.access:body", src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.readableBy", kind: "prop", name: Some("readableBy") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "fyi.opensocial.access:body", src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.createdAt", kind: "prop", name: Some("createdAt") }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes.role" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes.scopes" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes.scopes:items" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access:body.createdAt" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access:body.credentialScopes" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access:body.credentialScopes:items" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access:body.readableBy" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access:body.readableBy:items" }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.access#roleScopes.scopes", tgt: "fyi.opensocial.access#roleScopes.scopes:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.credentialScopes", kind: "prop", name: Some("credentialScopes") }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.access:body.credentialScopes", tgt: "fyi.opensocial.access:body.credentialScopes:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.access:body.credentialScopes:items", tgt: "fyi.opensocial.access#roleScopes", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.access:body.readableBy", tgt: "fyi.opensocial.access:body.readableBy:items", kind: "items", name: None }
  • KindChanged KindChanged { vertex_id: "fyi.opensocial.access:body.writableBy:items", old_kind: "string", new_kind: "ref" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.access:body.writableBy:items", sort: "ref", value: "fyi.opensocial.defs#audience" }
Non-breaking changes (16)
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.access:body.grants" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.access:body.grants:items" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.access:body.people" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.access:body.people:items" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.access:body.public" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#accountRef" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#audience" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#spaceGrant" }
  • AddedEdge AddedEdge { src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.people", kind: "prop", name: Some("people") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.public", kind: "prop", name: Some("public") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.access:body.grants", tgt: "fyi.opensocial.access:body.grants:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.access:body.grants:items", tgt: "fyi.opensocial.defs#spaceGrant", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.access:body.people", tgt: "fyi.opensocial.access:body.people:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.access:body.people:items", tgt: "fyi.opensocial.defs#accountRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.access:body.writableBy:items", tgt: "fyi.opensocial.defs#audience", kind: "ref", name: None }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.access:body.writableBy:items", sort: "maxLength" }

Migration guidance

Removed

  • RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes" }
  • RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes.role" }
  • RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes.scopes" }
  • RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes.scopes:items" }
  • RemovedVertex { vertex_id: "fyi.opensocial.access:body.createdAt" }
  • RemovedVertex { vertex_id: "fyi.opensocial.access:body.credentialScopes" }
  • RemovedVertex { vertex_id: "fyi.opensocial.access:body.credentialScopes:items" }
  • RemovedVertex { vertex_id: "fyi.opensocial.access:body.readableBy" }
  • RemovedVertex { vertex_id: "fyi.opensocial.access:body.readableBy:items" }

Added

  • AddedVertex { vertex_id: "fyi.opensocial.access:body.grants" }
  • AddedVertex { vertex_id: "fyi.opensocial.access:body.grants:items" }
  • AddedVertex { vertex_id: "fyi.opensocial.access:body.people" }
  • AddedVertex { vertex_id: "fyi.opensocial.access:body.people:items" }
  • AddedVertex { vertex_id: "fyi.opensocial.access:body.public" }
  • AddedVertex { vertex_id: "fyi.opensocial.defs#accountRef" }
  • AddedVertex { vertex_id: "fyi.opensocial.defs#audience" }
  • AddedVertex { vertex_id: "fyi.opensocial.defs#spaceGrant" }

Constraint changes

  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.access:body.writableBy:items", sort: "ref", value: "fyi.opensocial.defs#audience" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.access:body.writableBy:items", sort: "maxLength" }

Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "fyi.opensocial.access:body", src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.grants", kind: "prop", name: Some("grants") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "fyi.opensocial.access:body", src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.readableBy", kind: "prop", name: Some("readableBy") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "fyi.opensocial.access:body", src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.createdAt", kind: "prop", name: Some("createdAt") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "fyi.opensocial.access#roleScopes", src: "fyi.opensocial.access#roleScopes", tgt: "fyi.opensocial.access#roleScopes.role", kind: "prop", name: Some("role") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "fyi.opensocial.access#roleScopes", src: "fyi.opensocial.access#roleScopes", tgt: "fyi.opensocial.access#roleScopes.scopes", kind: "prop", name: Some("scopes") }
  • Breaking: RemovedEdge { src: "fyi.opensocial.access#roleScopes.scopes", tgt: "fyi.opensocial.access#roleScopes.scopes:items", kind: "items", name: None }
  • Breaking: RemovedEdge { src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.credentialScopes", kind: "prop", name: Some("credentialScopes") }
  • Breaking: RemovedEdge { src: "fyi.opensocial.access:body.credentialScopes", tgt: "fyi.opensocial.access:body.credentialScopes:items", kind: "items", name: None }
  • Breaking: RemovedEdge { src: "fyi.opensocial.access:body.credentialScopes:items", tgt: "fyi.opensocial.access#roleScopes", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "fyi.opensocial.access:body.readableBy", tgt: "fyi.opensocial.access:body.readableBy:items", kind: "items", name: None }
  • Breaking: KindChanged { vertex_id: "fyi.opensocial.access:body.writableBy:items", old_kind: "string", new_kind: "ref" }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.people", kind: "prop", name: Some("people") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.access:body", tgt: "fyi.opensocial.access:body.public", kind: "prop", name: Some("public") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.access:body.grants", tgt: "fyi.opensocial.access:body.grants:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.access:body.grants:items", tgt: "fyi.opensocial.defs#spaceGrant", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.access:body.people", tgt: "fyi.opensocial.access:body.people:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.access:body.people:items", tgt: "fyi.opensocial.defs#accountRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.access:body.writableBy:items", tgt: "fyi.opensocial.defs#audience", kind: "ref", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
5 "description": "Who may read this space. Present in every space under the group. The group authority issues space credentials according to this record and nothing else.",
5 "description": "Who can access this space, in every space under the group. Grants apply only to this space. Members whose roles grant read may obtain space credentials and write their own records here. The group authority issues space credentials according to this record and nothing else.",
66 "key": "literal:self",
77 "record": {
88 "properties": {
9 "createdAt": {
10 "format": "datetime",
11 "type": "string"
12 },
13 "credentialScopes": {
14 "description": "Which OAuth scopes for the group DID each role may request in this space. A role that may write a kind of record as the group here may also publish that kind, as the group, in its public repo; '*' is any kind, in both.",
9 "grants": {
10 "description": "At most one entry per role.",
1511 "items": {
16 "ref": "#roleScopes",
12 "ref": "fyi.opensocial.defs#spaceGrant",
1713 "type": "ref"
1814 },
19 "maxLength": 50,
15 "maxLength": 100,
2016 "type": "array"
2117 },
22 "readableBy": {
23 "description": "Role ids that may read the space, or the literal string 'public' meaning any authenticated requester.",
18 "people": {
19 "description": "A space for chosen people: those who read it and write in it in their own name while they are members, beside the roles granted read, who read it.",
2420 "items": {
25 "maxLength": 64,
26 "type": "string"
21 "ref": "fyi.opensocial.defs#accountRef",
22 "type": "ref"
2723 },
28 "maxLength": 50,
24 "maxLength": 100,
2925 "type": "array"
3026 },
27 "public": {
28 "default": false,
29 "description": "Anyone signed in can read, member or not.",
30 "type": "boolean"
31 },
3132 "writableBy": {
32 "description": "Who may write into the space in their own name: role ids, or 'public' for anyone signed in. Absent is any member.",
33 "description": "Who may write into the space in their own name, when not every member whose roles grant read: role ids, or 'public' for anyone signed in.",
3334 "items": {
34 "maxLength": 64,
35 "type": "string"
35 "ref": "fyi.opensocial.defs#audience",
36 "type": "ref"
3637 },
3738 "maxLength": 50,
3839 "type": "array"
3940 }
4041 },
4142 "required": [
42 "readableBy",
43 "createdAt"
43 "grants"
4444 ],
4545 "type": "object"
4646 },
4747 "type": "record"
48 },
49 "roleScopes": {
50 "properties": {
51 "role": {
52 "description": "A role id: the record key of a fyi.opensocial.role record.",
53 "maxLength": 64,
54 "type": "string"
55 },
56 "scopes": {
57 "description": "Collections this role may write in the space as the group: an NSID, or * for any. Every write, unless the grant names some: xyz.task?action=create lets the role add tasks but not change or delete them.",
58 "items": {
59 "maxLength": 400,
60 "type": "string"
61 },
62 "maxLength": 100,
63 "type": "array"
64 }
65 },
66 "required": [
67 "role",
68 "scopes"
69 ],
70 "type": "object"
7148 }
7249 },
7350 "id": "fyi.opensocial.access",
7451 "lexicon": 1
7552}

Compare other versions