town.muni.arbiter.proxy

Proxied XRPC request through an arbiter's policy. The caller authenticates via serviceAuth (aud = arbiter-server DID, lxm = town.muni.arbiter.proxy). The body specifies the arbiter DID to act on behalf of, the target DID#service to reach, and the inner XRPC request (method, nsid, parameters, body) to evaluate. The server drives the arbiter's Rego policy and proxies the inner request to the target authenticated as the stewarded account. The `nsid` here is the *inner* request NSID, distinct from this procedure's own NSID.

Repository @zicklag.dev did:plc:ulg2bzgrgs7ddjjlmhtegk3v namespace authority
Details · procedure
Kindprocedure
Authorityarbiter.muni.town
Indexed
cid bafyreigr74gw3dpqkngh44gshshmcdybtmbbm5xt6vasrnsbsnxo2oul7u

Checks

Valid
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "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.",
      "errors": [
        {
          "description": "The requesting user is not allowed to proxy through this arbiter.",
          "name": "ErrPermissionDenied"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "arbiterDid": {
              "description": "The stewarded account's DID to act on behalf of.",
              "format": "did",
              "type": "string"
            },
            "body": {
              "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).",
              "type": "unknown"
            },
            "encoding": {
              "description": "Optional content-type (encoding) for the inner request body (e.g. image/png). Defaults to application/json.",
              "type": "string"
            },
            "method": {
              "description": "HTTP method for the inner XRPC request (GET, POST, etc).",
              "type": "string"
            },
            "nsid": {
              "description": "The inner XRPC request NSID.",
              "type": "string"
            },
            "parameters": {
              "description": "Optional query parameters for the inner request.",
              "type": "unknown"
            },
            "target": {
              "description": "The destination DID#service for the proxied request (e.g. did:plc:xyz#atproto_pds).",
              "type": "string"
            }
          },
          "required": [
            "arbiterDid",
            "target",
            "method",
            "nsid"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "description": "The body of the inner XRPC response.",
          "properties": {},
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "town.muni.arbiter.proxy",
  "lexicon": 1
}