town.muni.arbiter.createArbiter
Schema Diff
+15 -29
Compatibility Analysis
Breaking Changes Detected
7 breaking changes, 3 non-breaking changes.
Breaking Changes (7)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "town.muni.arbiter.createArbiter:output", src: "town.muni.arbiter.createArbiter:output", tgt: "town.muni.arbiter.createArbiter:output.did", kind: "prop", name: Some("did") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "town.muni.arbiter.createArbiter:input", src: "town.muni.arbiter.createArbiter:input", tgt: "town.muni.arbiter.createArbiter:input.config", kind: "prop", name: Some("config") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "town.muni.arbiter.createArbiter:input", src: "town.muni.arbiter.createArbiter:input", tgt: "town.muni.arbiter.createArbiter:input.arbiterDid", kind: "prop", name: Some("arbiterDid") }
- RemovedVertex RemovedVertex { vertex_id: "town.muni.arbiter.createArbiter:input" }
- RemovedVertex RemovedVertex { vertex_id: "town.muni.arbiter.createArbiter:input.arbiterDid" }
- RemovedVertex RemovedVertex { vertex_id: "town.muni.arbiter.createArbiter:input.config" }
- RemovedEdge RemovedEdge { src: "town.muni.arbiter.createArbiter", tgt: "town.muni.arbiter.createArbiter:input", kind: "prop", name: Some("input") }
Non-Breaking Changes (3)
- AddedVertex AddedVertex { vertex_id: "town.muni.arbiter.createArbiter:output" }
- AddedVertex AddedVertex { vertex_id: "town.muni.arbiter.createArbiter:output.did" }
- AddedEdge AddedEdge { src: "town.muni.arbiter.createArbiter", tgt: "town.muni.arbiter.createArbiter:output", kind: "prop", name: Some("output") }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "town.muni.arbiter.createArbiter:input" }RemovedVertex { vertex_id: "town.muni.arbiter.createArbiter:input.arbiterDid" }RemovedVertex { vertex_id: "town.muni.arbiter.createArbiter:input.config" }
Added Elements
AddedVertex { vertex_id: "town.muni.arbiter.createArbiter:output" }AddedVertex { vertex_id: "town.muni.arbiter.createArbiter:output.did" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "town.muni.arbiter.createArbiter:output", src: "town.muni.arbiter.createArbiter:output", tgt: "town.muni.arbiter.createArbiter:output.did", kind: "prop", name: Some("did") }
- Breaking: RequiredEdgeRemoved { vertex_id: "town.muni.arbiter.createArbiter:input", src: "town.muni.arbiter.createArbiter:input", tgt: "town.muni.arbiter.createArbiter:input.config", kind: "prop", name: Some("config") }
- Breaking: RequiredEdgeRemoved { vertex_id: "town.muni.arbiter.createArbiter:input", src: "town.muni.arbiter.createArbiter:input", tgt: "town.muni.arbiter.createArbiter:input.arbiterDid", kind: "prop", name: Some("arbiterDid") }
- Breaking: RemovedEdge { src: "town.muni.arbiter.createArbiter", tgt: "town.muni.arbiter.createArbiter:input", kind: "prop", name: Some("input") }
- Non-breaking: AddedEdge { src: "town.muni.arbiter.createArbiter", tgt: "town.muni.arbiter.createArbiter:output", kind: "prop", name: Some("output") }
1
1
{
2
2
"id": "town.muni.arbiter.createArbiter",
3
3
"defs": {
4
4
"main": {
5
5
"type": "procedure",
6
-
"input": {
6
+
"errors": [
7
+
{
8
+
"name": "ErrPermissionDenied",
9
+
"description": "The requesting user is not allowed to create an arbiter."
10
+
},
11
+
{
12
+
"name": "ErrProvisioningFailed",
13
+
"description": "Account creation or initial record writes failed."
14
+
}
15
+
],
16
+
"output": {
7
17
"schema": {
8
18
"type": "object",
9
19
"required": [
10
-
"arbiterDid",
11
-
"config"
20
+
"did"
12
21
],
13
22
"properties": {
14
-
"config": {
15
-
"refs": [],
16
-
"type": "union",
17
-
"description": "A configuration object for the arbiter.\n\nDifferent servers will support different config lexicons. The NSID of\nthe config lexicon determines what kind of arbiter it is. Different\nkinds of arbiters may have totally different mechanisms for determining\naccess."
18
-
},
19
-
"arbiterDid": {
23
+
"did": {
20
24
"type": "string",
21
25
"format": "did",
22
-
"description": "The DID of the arbiter.\n\nDifferent servers may have different policies regarding who is allowed\nto create an arbiter for what DIDs.\n\nThe DID will not be created by this procedure: it must be created\nseparately and have its #space_host service pointed to this server."
26
+
"description": "The DID of the newly created stewarded account."
23
27
}
24
28
}
25
29
},
26
30
"encoding": "application/json"
27
31
},
28
-
"errors": [
29
-
{
30
-
"name": "ErrArbiterAlreadyExists",
31
-
"description": "The specified DID already has an arbiter for it on this server."
32
-
},
33
-
{
34
-
"name": "ErrPermissionDenied",
35
-
"description": "The requesting user is not allowed to make the request."
36
-
},
37
-
{
38
-
"name": "ErrUnsupportedConfigLexicon",
39
-
"description": "The config lexicon provided is not supported by this server. Different servers\nmay support different config lexicons."
40
-
},
41
-
{
42
-
"name": "ErrInvalidConfig",
43
-
"description": "The config provided is invalid for some reason other than it being an unsupported\nlexicon."
44
-
}
45
-
],
46
-
"description": "Create a new arbiter.\n\nThe return type is an open union that will contain a `$type` key and may be\ndifferent depending on the server and/or the provided config `$type`."
32
+
"description": "Provision a brand-new stewarded PDS account.\n\nThe caller authenticates via serviceAuth (aud = arbiter-server DID,\nlxm = town.muni.arbiter.createArbiter). The server creates a new account\non the configured default PDS using an invite code + random password,\nstores the credentials, and writes the service + recovery records from the\nnew account's session. No policy is written: the arbiter stays offline\n(fail-closed) until the recovery admin installs the first policy via\n`town.muni.arbiter.resetPolicy`."
47
33
}
48
34
},
49
35
"$type": "com.atproto.lexicon.schema",
50
36
"lexicon": 1
51
37
}