town.muni.arbiter.createArbiter

zicklag.dev

Schema Diff

+15 -29

From

CID
bafyreihl7c7v3xq...
Indexed At
2026-05-19 19:41 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@