# town.muni.arbiter.createArbiter

> Published by [zicklag.dev](https://lexicon.garden/identity/did:plc:ulg2bzgrgs7ddjjlmhtegk3v)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:ulg2bzgrgs7ddjjlmhtegk3v/town.muni.arbiter.createArbiter)
- [Documentation](https://lexicon.garden/lexicon/did:plc:ulg2bzgrgs7ddjjlmhtegk3v/town.muni.arbiter.createArbiter/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:ulg2bzgrgs7ddjjlmhtegk3v/town.muni.arbiter.createArbiter/examples)

## Definitions

### `town.muni.arbiter.createArbiter`

**Type**: `procedure`

Create a new arbiter.

The return type is an open union that will contain a `$type` key and may be
different depending on the server and/or the provided config `$type`.

#### Input

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `config` | `union` | Yes | A configuration object for the arbiter.  Different servers will support different config lexicons. The NSID of the config lexicon determines what kind of arbiter it is. Different kinds of arbiters may have totally different mechanisms for determining access. |
| `arbiterDid` | `string` (did) | Yes | The DID of the arbiter.  Different servers may have different policies regarding who is allowed to create an arbiter for what DIDs.  The DID will not be created by this procedure: it must be created separately and have its #space_host service pointed to this server. |

#### Output

**Encoding**: `application/json`

#### Errors

- **ErrArbiterAlreadyExists**: The specified DID already has an arbiter for it on this server.
- **ErrPermissionDenied**: The requesting user is not allowed to make the request.
- **ErrUnsupportedConfigLexicon**: The config lexicon provided is not supported by this server. Different servers
may support different config lexicons.
- **ErrInvalidConfig**: The config provided is invalid for some reason other than it being an unsupported
lexicon.

## Raw Schema

```json
{
  "id": "town.muni.arbiter.createArbiter",
  "defs": {
    "main": {
      "type": "procedure",
      "input": {
        "schema": {
          "type": "object",
          "required": [
            "arbiterDid",
            "config"
          ],
          "properties": {
            "config": {
              "refs": [],
              "type": "union",
              "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."
            },
            "arbiterDid": {
              "type": "string",
              "format": "did",
              "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."
            }
          }
        },
        "encoding": "application/json"
      },
      "errors": [
        {
          "name": "ErrArbiterAlreadyExists",
          "description": "The specified DID already has an arbiter for it on this server."
        },
        {
          "name": "ErrPermissionDenied",
          "description": "The requesting user is not allowed to make the request."
        },
        {
          "name": "ErrUnsupportedConfigLexicon",
          "description": "The config lexicon provided is not supported by this server. Different servers\nmay support different config lexicons."
        },
        {
          "name": "ErrInvalidConfig",
          "description": "The config provided is invalid for some reason other than it being an unsupported\nlexicon."
        }
      ],
      "output": {
        "schema": {
          "refs": [],
          "type": "union"
        },
        "encoding": "application/json"
      },
      "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`."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
