town.muni.arbiter.proxy

zicklag.dev

Schema Diff

+5 -1

From

CID
bafyreihuddn6enp...
Indexed At
2026-08-10 17:41 UTC
View this version

To

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

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "town.muni.arbiter.proxy:input.encoding" }
  • AddedEdge AddedEdge { src: "town.muni.arbiter.proxy:input", tgt: "town.muni.arbiter.proxy:input.encoding", kind: "prop", name: Some("encoding") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "town.muni.arbiter.proxy:input.encoding" }

Additional Notes

  • Non-breaking: AddedEdge { src: "town.muni.arbiter.proxy:input", tgt: "town.muni.arbiter.proxy:input.encoding", kind: "prop", name: Some("encoding") }
1 1
{
2 2
  "id": "town.muni.arbiter.proxy",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "procedure",
6 6
      "input": {
7 7
        "schema": {
8 8
          "type": "object",
9 9
          "required": [
10 10
            "arbiterDid",
11 11
            "target",
12 12
            "method",
13 13
            "nsid"
14 14
          ],
15 15
          "properties": {
16 16
            "body": {
17 17
              "type": "unknown",
18 -
              "description": "Optional JSON body for the inner request."
18 +
              "description": "Optional body for the inner request. A JSON value is proxied as JSON; the AT Protocol binary marker { \"$bytes\": <base64> } proxies raw bytes (e.g. a blob upload)."
19 19
            },
20 20
            "nsid": {
21 21
              "type": "string",
22 22
              "description": "The inner XRPC request NSID."
23 23
            },
24 24
            "method": {
25 25
              "type": "string",
26 26
              "description": "HTTP method for the inner XRPC request (GET, POST, etc)."
27 27
            },
28 28
            "target": {
29 29
              "type": "string",
30 30
              "description": "The destination DID#service for the proxied request (e.g. did:plc:xyz#atproto_pds)."
31 31
            },
32 +
            "encoding": {
33 +
              "type": "string",
34 +
              "description": "Optional content-type (encoding) for the inner request body (e.g. image/png). Defaults to application/json."
35 +
            },
32 36
            "arbiterDid": {
33 37
              "type": "string",
34 38
              "format": "did",
35 39
              "description": "The stewarded account's DID to act on behalf of."
36 40
            },
37 41
            "parameters": {
38 42
              "type": "unknown",
39 43
              "description": "Optional query parameters for the inner request."
40 44
            }
41 45
          }
42 46
        },
43 47
        "encoding": "application/json"
44 48
      },
45 49
      "errors": [
46 50
        {
47 51
          "name": "ErrPermissionDenied",
48 52
          "description": "The requesting user is not allowed to proxy through this arbiter."
49 53
        }
50 54
      ],
51 55
      "output": {
52 56
        "schema": {
53 57
          "type": "object",
54 58
          "properties": {},
55 59
          "description": "The body of the inner XRPC response."
56 60
        },
57 61
        "encoding": "application/json"
58 62
      },
59 63
      "description": "Proxied XRPC request through an arbiter's policy.\n\nThe caller authenticates via serviceAuth (aud = arbiter-server DID,\nlxm = town.muni.arbiter.proxy). The body specifies the arbiter DID to act\non behalf of, the target DID#service to reach, and the inner XRPC\nrequest (method, nsid, parameters, body) to evaluate. The server drives\nthe arbiter's Rego policy and proxies the inner request to the target\nauthenticated as the stewarded account.\n\nThe `nsid` here is the *inner* request NSID, distinct from this\nprocedure's own NSID."
60 64
    }
61 65
  },
62 66
  "$type": "com.atproto.lexicon.schema",
63 67
  "lexicon": 1
64 68
}

Compare Other Versions

Lexicon Garden

@