{
  "lexicon": 1,
  "id": "com.atproto.server.getServiceAuth",
  "defs": {
    "main": {
      "type": "query",
      "description": "Get a signed token on behalf of the requesting DID for the requested service.",
      "parameters": {
        "type": "params",
        "required": ["aud"],
        "properties": {
          "aud": {
            "type": "string",
            "maxLength": 2048,
            "description": "The DID or `did#serviceId` reference of the service that the token will be used to authenticate with."
          },
          "exp": {
            "type": "integer",
            "description": "The time in Unix Epoch seconds that the JWT expires. Defaults to 60 seconds in the future. The service may enforce certain time bounds on tokens depending on the requested scope."
          },
          "lxm": {
            "type": "string",
            "format": "nsid",
            "description": "Lexicon (XRPC) method to bind the requested token to"
          }
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "type": "object",
          "required": ["token"],
          "properties": {
            "token": {
              "type": "string"
            }
          }
        }
      },
      "errors": [
        {
          "name": "BadExpiration",
          "description": "Indicates that the requested expiration date is not a valid. May be in the past or may be reliant on the requested scopes."
        }
      ]
    }
  }
}
