full diff

fyi.opensocial.provisionGroup

From
bafyreiforigy5s65meyirawwafzivbzod6syryksqupxee2fhhu3667kzu indexed 2026-09-24 19:21 UTC View this version
To
bafyreiaeuvabxfgip7yqk5wx3cvdcpj3xyya5efmxpxomhfa3whzljh7ea indexed 2026-11-05 16:25 UTC View this version

Compatibility

breaking 13 breaking changes, 10 non-breaking changes.

Breaking changes (13)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "fyi.opensocial.provisionGroup:input", src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.clientId", kind: "prop", name: Some("clientId") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "fyi.opensocial.provisionGroup:input", src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.client_id", kind: "prop", name: Some("client_id") }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.client_assertion" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.client_assertion_type" }
  • RemovedVertex RemovedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.client_id" }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.client_assertion", kind: "prop", name: Some("client_assertion") }
  • RemovedEdge RemovedEdge { src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.client_assertion_type", kind: "prop", name: Some("client_assertion_type") }
  • KindChanged KindChanged { vertex_id: "fyi.opensocial.provisionGroup:input.metaReadableBy:items", old_kind: "string", new_kind: "ref" }
  • KindChanged KindChanged { vertex_id: "fyi.opensocial.provisionGroup:input.stewards:items", old_kind: "string", new_kind: "ref" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.provisionGroup:input.stewards:items", sort: "ref", value: "fyi.opensocial.defs#accountRef" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.provisionGroup:input.metaReadableBy:items", sort: "ref", value: "fyi.opensocial.defs#audience" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.provisionGroup:input.scope", sort: "maxLength", value: "2048" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.provisionGroup:input.joinPolicy", sort: "knownValues", value: "[\"fyi.opensocial.profile#open\",\"fyi.opensocial.profile#request\",\"fyi.opensocial.profile#invite\"]" }
Non-breaking changes (10)
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#accountRef" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#audience" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.clientAssertion" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.clientAssertionType" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.clientId" }
  • AddedEdge AddedEdge { src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.clientAssertion", kind: "prop", name: Some("clientAssertion") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.clientAssertionType", kind: "prop", name: Some("clientAssertionType") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.provisionGroup:input.metaReadableBy:items", tgt: "fyi.opensocial.defs#audience", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.provisionGroup:input.stewards:items", tgt: "fyi.opensocial.defs#accountRef", kind: "ref", name: None }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.provisionGroup:input.stewards:items", sort: "format" }

Migration guidance

Removed

  • RemovedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.client_assertion" }
  • RemovedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.client_assertion_type" }
  • RemovedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.client_id" }

Added

  • AddedVertex { vertex_id: "fyi.opensocial.defs#accountRef" }
  • AddedVertex { vertex_id: "fyi.opensocial.defs#audience" }
  • AddedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.clientAssertion" }
  • AddedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.clientAssertionType" }
  • AddedVertex { vertex_id: "fyi.opensocial.provisionGroup:input.clientId" }

Constraint changes

  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.provisionGroup:input.scope", sort: "maxLength", value: "2048" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.provisionGroup:input.stewards:items", sort: "ref", value: "fyi.opensocial.defs#accountRef" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.provisionGroup:input.metaReadableBy:items", sort: "ref", value: "fyi.opensocial.defs#audience" }
  • ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.provisionGroup:input.joinPolicy", sort: "knownValues", value: "[\"fyi.opensocial.profile#open\",\"fyi.opensocial.profile#request\",\"fyi.opensocial.profile#invite\"]" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.provisionGroup:input.stewards:items", sort: "format" }

Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "fyi.opensocial.provisionGroup:input", src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.clientId", kind: "prop", name: Some("clientId") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "fyi.opensocial.provisionGroup:input", src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.client_id", kind: "prop", name: Some("client_id") }
  • Breaking: RemovedEdge { src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.client_assertion", kind: "prop", name: Some("client_assertion") }
  • Breaking: RemovedEdge { src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.client_assertion_type", kind: "prop", name: Some("client_assertion_type") }
  • Breaking: KindChanged { vertex_id: "fyi.opensocial.provisionGroup:input.metaReadableBy:items", old_kind: "string", new_kind: "ref" }
  • Breaking: KindChanged { vertex_id: "fyi.opensocial.provisionGroup:input.stewards:items", old_kind: "string", new_kind: "ref" }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.clientAssertion", kind: "prop", name: Some("clientAssertion") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.provisionGroup:input", tgt: "fyi.opensocial.provisionGroup:input.clientAssertionType", kind: "prop", name: Some("clientAssertionType") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.provisionGroup:input.metaReadableBy:items", tgt: "fyi.opensocial.defs#audience", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.provisionGroup:input.stewards:items", tgt: "fyi.opensocial.defs#accountRef", kind: "ref", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
55 "description": "Host-level: an app creates a group for a person and gets its own OAuth session on it. Authenticated twice: the person asking, by service auth from their PDS (they become the founder), and the app, by OAuth client authentication in the body (a client assertion for a confidential client) with a DPoP proof in the `DPoP` header, exactly as at the token endpoint. The app must be one this host provisions for. Returns the group and a token response bound to the proof's key, issued to the app's client id: refreshed, listed and revoked like any other session on the group.",
66 "errors": [
77 {
88 "name": "UntrustedApp"
99 },
1010 {
1111 "name": "InvalidScope"
1212 },
1313 {
1414 "name": "use_dpop_nonce"
1515 },
1616 {
1717 "name": "HandleTaken"
1818 }
1919 ],
2020 "input": {
2121 "encoding": "application/json",
2222 "schema": {
2323 "properties": {
24 "client_assertion": {
24 "clientAssertion": {
25 "maxLength": 8192,
2526 "type": "string"
2627 },
27 "client_assertion_type": {
28 "clientAssertionType": {
29 "maxLength": 256,
2830 "type": "string"
2931 },
30 "client_id": {
32 "clientId": {
33 "description": "The app's OAuth client id, its client metadata's URL.",
34 "maxLength": 2048,
3135 "type": "string"
3236 },
3337 "description": {
3438 "maxGraphemes": 300,
3539 "maxLength": 3000,
3640 "type": "string"
3741 },
3842 "displayName": {
3943 "maxGraphemes": 64,
4044 "maxLength": 640,
4145 "type": "string"
4246 },
4347 "handle": {
4448 "format": "handle",
4549 "type": "string"
4650 },
4751 "joinPolicy": {
52 "knownValues": [
53 "fyi.opensocial.profile#open",
54 "fyi.opensocial.profile#request",
55 "fyi.opensocial.profile#invite"
56 ],
4857 "type": "string"
4958 },
5059 "metaReadableBy": {
5160 "items": {
52 "type": "string"
61 "ref": "fyi.opensocial.defs#audience",
62 "type": "ref"
5363 },
5464 "type": "array"
5565 },
5666 "scope": {
5767 "description": "The OAuth scope the app wants on the group. Must include `atproto`, and every entry must be one the app's client metadata declares.",
68 "maxLength": 2048,
5869 "type": "string"
5970 },
6071 "stewards": {
6172 "description": "Accounts that run the group alongside the founder.",
6273 "items": {
63 "format": "did",
64 "type": "string"
74 "ref": "fyi.opensocial.defs#accountRef",
75 "type": "ref"
6576 },
6677 "type": "array"
6778 }
6879 },
6980 "required": [
7081 "handle",
7182 "displayName",
7283 "scope",
73 "client_id"
84 "clientId"
7485 ],
7586 "type": "object"
7687 }
7788 },
7889 "output": {
7990 "encoding": "application/json",
8091 "schema": {
8192 "properties": {
8293 "did": {
8394 "format": "did",
8495 "type": "string"
8596 },
8697 "members": {
8798 "format": "space-ref",
8899 "type": "string"
89100 },
90101 "meta": {
91102 "format": "space-ref",
92103 "type": "string"
93104 },
94105 "session": {
95106 "description": "An OAuth token response (access_token, token_type, refresh_token, expires_in, scope, sub), as /oauth/token returns it.",
96107 "type": "unknown"
97108 }
98109 },
99110 "required": [
100111 "did",
101112 "meta",
102113 "members",
103114 "session"
104115 ],
105116 "type": "object"
106117 }
107118 },
108119 "type": "procedure"
109120 }
110121 },
111122 "id": "fyi.opensocial.provisionGroup",
112123 "lexicon": 1
113124}

Compare other versions