town.muni.arbiter.createArbiter

zicklag.dev

Schema Diff

+15 -36

From

CID
bafyreigz37yf7hl...
Indexed At
2026-05-19 22:18 UTC
View this version

To

CID
bafyreidjf5pngju...
Indexed At
2026-08-25 19:16 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

8 breaking changes, 1 non-breaking change.

Breaking Changes (8)
  • 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") }
  • KindChanged KindChanged { vertex_id: "town.muni.arbiter.createArbiter:output", old_kind: "union", new_kind: "object" }
Non-Breaking Changes (1)
  • AddedVertex AddedVertex { vertex_id: "town.muni.arbiter.createArbiter:output.did" }

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.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") }
  • Breaking: KindChanged { vertex_id: "town.muni.arbiter.createArbiter:output", old_kind: "union", new_kind: "object" }
1 1
{
2 2
  "id": "town.muni.arbiter.createArbiter",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "procedure",
6 -
      "input": {
7 -
        "schema": {
8 -
          "type": "object",
9 -
          "required": [
10 -
            "arbiterDid",
11 -
            "config"
12 -
          ],
13 -
          "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": {
20 -
              "type": "string",
21 -
              "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."
23 -
            }
24 -
          }
25 -
        },
26 -
        "encoding": "application/json"
27 -
      },
28 6
      "errors": [
29 -
        {
30 -
          "name": "ErrArbiterAlreadyExists",
31 -
          "description": "The specified DID already has an arbiter for it on this server."
32 -
        },
33 7
        {
34 8
          "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."
9 +
          "description": "The requesting user is not allowed to create an arbiter."
40 10
        },
41 11
        {
42 -
          "name": "ErrInvalidConfig",
43 -
          "description": "The config provided is invalid for some reason other than it being an unsupported\nlexicon."
12 +
          "name": "ErrProvisioningFailed",
13 +
          "description": "Account creation or initial record writes failed."
44 14
        }
45 15
      ],
46 16
      "output": {
47 17
        "schema": {
48 -
          "refs": [],
49 -
          "type": "union"
18 +
          "type": "object",
19 +
          "required": [
20 +
            "did"
21 +
          ],
22 +
          "properties": {
23 +
            "did": {
24 +
              "type": "string",
25 +
              "format": "did",
26 +
              "description": "The DID of the newly created stewarded account."
27 +
            }
28 +
          }
50 29
        },
51 30
        "encoding": "application/json"
52 31
      },
53 -
      "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`."
54 33
    }
55 34
  },
56 35
  "$type": "com.atproto.lexicon.schema",
57 36
  "lexicon": 1
58 37
}

Compare Other Versions

Lexicon Garden

@