full diff

fyi.opensocial.createSpace

From
bafyreid4hdmilhur5ijnzvgjd5w5shr3gymgr5p57dnvktozddhtajkd5a indexed 2026-10-08 18:10 UTC View this version
To
bafyreihzqnt6xznl32hvsyoh7herkfdczqaojjznpjm5747kcgdu6wr73u indexed 2026-11-05 16:25 UTC View this version

Compatibility

breaking 21 breaking changes, 12 non-breaking changes.

Breaking changes (21)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "fyi.opensocial.createSpace:input", src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.access", kind: "prop", name: Some("access") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "fyi.opensocial.createSpace:output", src: "fyi.opensocial.createSpace:output", tgt: "fyi.opensocial.createSpace:output.access", kind: "prop", name: Some("access") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "fyi.opensocial.createSpace:output", src: "fyi.opensocial.createSpace:output", tgt: "fyi.opensocial.createSpace:output.space", kind: "prop", name: Some("space") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "fyi.opensocial.createSpace:output", src: "fyi.opensocial.createSpace:output", tgt: "fyi.opensocial.createSpace:output.uri", kind: "prop", name: Some("uri") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "fyi.opensocial.createSpace:input", src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.readableBy", kind: "prop", name: Some("readableBy") }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.credentialScopes" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.credentialScopes:items" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.readableBy" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.readableBy:items" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.writableBy" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.writableBy:items" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.createSpace:output.uri" }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.credentialScopes", kind: "prop", name: Some("credentialScopes") }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.writableBy", kind: "prop", name: Some("writableBy") }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.createSpace:input.credentialScopes", tgt: "fyi.opensocial.createSpace:input.credentialScopes:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.createSpace:input.credentialScopes:items", tgt: "fyi.opensocial.access#roleScopes", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.createSpace:input.readableBy", tgt: "fyi.opensocial.createSpace:input.readableBy:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.createSpace:input.writableBy", tgt: "fyi.opensocial.createSpace:input.writableBy:items", kind: "items", name: None }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.createSpace:input.name", sort: "maxGraphemes", value: "64" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.createSpace:input.name", sort: "maxLength", value: "640" }
Non-breaking changes (12)
  • AddedVertex AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.createSpace:input.access" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.createSpace:input.index" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.createSpace:output.access" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.createSpace:output.index" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.createSpace:output.space" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#accessConfig" }
  • AddedEdge AddedEdge { src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.index", kind: "prop", name: Some("index") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.createSpace:input.access", tgt: "fyi.opensocial.defs#accessConfig", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.createSpace:output", tgt: "fyi.opensocial.createSpace:output.index", kind: "prop", name: Some("index") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.createSpace:output.access", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.createSpace:output.index", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }

Migration guidance

Removed

  • RemovedVertex { vertex_id: "fyi.opensocial.access#roleScopes" }
  • RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.credentialScopes" }
  • RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.credentialScopes:items" }
  • RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.readableBy" }
  • RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.readableBy:items" }
  • RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.writableBy" }
  • RemovedVertex { vertex_id: "fyi.opensocial.createSpace:input.writableBy:items" }
  • RemovedVertex { vertex_id: "fyi.opensocial.createSpace:output.uri" }

Added

  • AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • AddedVertex { vertex_id: "fyi.opensocial.createSpace:input.access" }
  • AddedVertex { vertex_id: "fyi.opensocial.createSpace:input.index" }
  • AddedVertex { vertex_id: "fyi.opensocial.createSpace:output.access" }
  • AddedVertex { vertex_id: "fyi.opensocial.createSpace:output.index" }
  • AddedVertex { vertex_id: "fyi.opensocial.createSpace:output.space" }
  • AddedVertex { vertex_id: "fyi.opensocial.defs#accessConfig" }

Constraint changes

  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.createSpace:input.name", sort: "maxLength", value: "640" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.createSpace:input.name", sort: "maxGraphemes", value: "64" }

Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "fyi.opensocial.createSpace:input", src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.access", kind: "prop", name: Some("access") }
  • Breaking: RequiredEdgeAdded { vertex_id: "fyi.opensocial.createSpace:output", src: "fyi.opensocial.createSpace:output", tgt: "fyi.opensocial.createSpace:output.access", kind: "prop", name: Some("access") }
  • Breaking: RequiredEdgeAdded { vertex_id: "fyi.opensocial.createSpace:output", src: "fyi.opensocial.createSpace:output", tgt: "fyi.opensocial.createSpace:output.space", kind: "prop", name: Some("space") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "fyi.opensocial.createSpace:input", src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.readableBy", kind: "prop", name: Some("readableBy") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "fyi.opensocial.createSpace:output", src: "fyi.opensocial.createSpace:output", tgt: "fyi.opensocial.createSpace:output.uri", kind: "prop", name: Some("uri") }
  • Breaking: RemovedEdge { src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.credentialScopes", kind: "prop", name: Some("credentialScopes") }
  • Breaking: RemovedEdge { src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.writableBy", kind: "prop", name: Some("writableBy") }
  • Breaking: RemovedEdge { src: "fyi.opensocial.createSpace:input.credentialScopes", tgt: "fyi.opensocial.createSpace:input.credentialScopes:items", kind: "items", name: None }
  • Breaking: RemovedEdge { src: "fyi.opensocial.createSpace:input.credentialScopes:items", tgt: "fyi.opensocial.access#roleScopes", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "fyi.opensocial.createSpace:input.readableBy", tgt: "fyi.opensocial.createSpace:input.readableBy:items", kind: "items", name: None }
  • Breaking: RemovedEdge { src: "fyi.opensocial.createSpace:input.writableBy", tgt: "fyi.opensocial.createSpace:input.writableBy:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.createSpace:input", tgt: "fyi.opensocial.createSpace:input.index", kind: "prop", name: Some("index") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.createSpace:input.access", tgt: "fyi.opensocial.defs#accessConfig", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.createSpace:output", tgt: "fyi.opensocial.createSpace:output.index", kind: "prop", name: Some("index") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.createSpace:output.access", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.createSpace:output.index", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
5 "description": "Add a modality space to the group. Requires space.create.",
5 "description": "Create a space under the group with its access record and, unless index is false, an index entry. Requires space.create.",
6 "errors": [
7 {
8 "description": "A space with this type and skey already exists.",
9 "name": "SpaceAlreadyExists"
10 },
11 {
12 "description": "The meta and members spaces can't be created or deleted.",
13 "name": "ReservedSpace"
14 },
15 {
16 "description": "A grant names a role that doesn't exist.",
17 "name": "UnknownRole"
18 },
19 {
20 "description": "A grant isn't a space scope.",
21 "name": "InvalidScope"
22 }
23 ],
624 "input": {
725 "encoding": "application/json",
826 "schema": {
927 "properties": {
10 "credentialScopes": {
11 "description": "Which collections each role may write as the group DID in this space. Copied into the space's access record.",
12 "items": {
13 "ref": "fyi.opensocial.access#roleScopes",
14 "type": "ref"
15 },
16 "type": "array"
28 "access": {
29 "ref": "fyi.opensocial.defs#accessConfig",
30 "type": "ref"
1731 },
1832 "group": {
1933 "description": "The group DID. Every method is served by the group's host and authorized against that group's roles.",
2034 "format": "did",
2135 "type": "string"
2236 },
37 "index": {
38 "default": true,
39 "description": "Add the space to the group's index.",
40 "type": "boolean"
41 },
2342 "name": {
43 "description": "What the group calls it, kept in its index entry.",
44 "maxGraphemes": 64,
45 "maxLength": 640,
2446 "type": "string"
2547 },
26 "readableBy": {
27 "items": {
28 "type": "string"
29 },
30 "type": "array"
31 },
3248 "skey": {
49 "description": "Omit to generate a TID.",
3350 "format": "record-key",
3451 "type": "string"
3552 },
3653 "type": {
3754 "format": "nsid",
3855 "type": "string"
39 },
40 "writableBy": {
41 "description": "Who may write into the space in their own name: role ids, or 'public' for anyone signed in. Absent is any member.",
42 "items": {
43 "type": "string"
44 },
45 "type": "array"
4656 }
4757 },
4858 "required": [
4959 "group",
5060 "type",
51 "readableBy"
61 "access"
5262 ],
5363 "type": "object"
5464 }
5565 },
5666 "output": {
5767 "encoding": "application/json",
5868 "schema": {
5969 "properties": {
60 "uri": {
70 "access": {
71 "ref": "com.atproto.repo.strongRef",
72 "type": "ref"
73 },
74 "index": {
75 "description": "Present when the space was indexed.",
76 "ref": "com.atproto.repo.strongRef",
77 "type": "ref"
78 },
79 "space": {
6180 "format": "space-ref",
6281 "type": "string"
6382 }
6483 },
6584 "required": [
66 "uri"
85 "space",
86 "access"
6787 ],
6888 "type": "object"
6989 }
7090 },
7191 "type": "procedure"
7292 }
7393 },
7494 "id": "fyi.opensocial.createSpace",
7595 "lexicon": 1
7696}

Compare other versions