# Anope `rpc_data` RPC interface

## `anope.listAccounts`

Lists all accounts that exist on the network.

### Parameters

Index | Description
----- | -----------
0     | If specified then the level of detail to retrieve. Can be set to "full" to retrieve all information or "name" to just retrieve the account names. Defaults to "name".

### Errors

Code   | Description
------ | -----------
-32099 | The specified detail level does not exist.

### Result

If the detail level is not specified or is "name" then an array of account names.

If the detail level is "full" then a mapping of account names to information about the account. See `anope.account` for more information on the data structure.

#### Example

```json
["account1", "account2", "account3"]
```

## `anope.account`

Retrieves information about the specified account.

### Parameters

Index | Description
----- | -----------
0     | Either a nickname belonging to the account or an account identifier.

### Errors

Code   | Description
------ | -----------
-32099 | The specified account does not exist.

### Result

Returns a map containing information about the account.

Key                    | Type           | Description
---                    | ----           | -----------
display                | string         | The display nickname of the account.
email                  | string or null | The email address associated with the account or null if one has not been specified.
extensions             | map            | A key-value map of the extensions set on this account by modules.
language               | string or null | The language associated with the account or null if the account uses the default language.
lastmail               | int            | The time at which an email was last sent for this account.
nicks                  | map            | Information about nicknames that belong to the account keyed by the nickname.
nicks.\*.extensions    | map            | A key-value map of the extensions set on this nickname by modules.
nicks.\*.lastseen      | int            | The time at which this nickname was last used.
nicks.\*.registered    | int            | The time at which this nickname was registered.
nicks.\*.vhost         | map or null    | The vhost associated with the account or null if the user has no vhost.
nicks.\*.vhost.created | int            | The time at which the vhost was created.
nicks.\*.vhost.creator | string         | The nickname of the creator of the vhost.
nicks.\*.vhost.host    | string         | The host segment of the vhost.
nicks.\*.vhost.ident   | string or null | The ident segment of the vhost or null if there is not one.
nicks.\*.vhost.mask    | string         | The user@host or host mask of the vhost.
opertype               | map or null    | The oper type associated with the account or null if they are not a services operator.
opertype.commands      | array[string]  | The commands that the services operator type can use.
opertype.name          | string         | The name of the services operator type.
opertype.privileges    | array[string]  | The privileges that the services operator type has.
registered             | int            | The time at which the account was registered.
uniqueid               | uint           | The unique immutable identifier of the account.
users                  | array[string]  | The IRC users who are currently logged in to this account.

#### Example

```json
{
	"display": "foo",
	"email": "example@example.com",
	"extensions": {
		"AUTOOP": true,
		"HIDE_EMAIL": true,
		"HIDE_MASK": true,
		"MEMO_RECEIVE": true,
		"MEMO_SIGNON": true,
		"NS_PRIVATE": true,
		"PROTECT": true,
		"PROTECT_AFTER": 69
	},
	"language": null,
	"lastmail": 1745071858,
	"nicks": {
		"foo": {
			"extensions": {
				"NS_NO_EXPIRE": true
			},
			"lastseen": 1745074153,
			"registered": 1745071857,
			"vhost": null
		},
		"bar": {
			"extensions": {},
			"lastseen": 1745072602,
			"registered": 1745071857,
			"vhost": {
				"created": 1745072653,
				"creator": "foo",
				"host": "bar.baz",
				"ident": "foo",
				"mask": "foo@bar.baz"
			}
		}
	},
	"opertype": {
		"commands": ["hostserv/*", "operserv/session"],
		"name": "Helper",
		"privileges": ["chanserv/no-register-limit"]
	},
	"registered": 1745071857,
	"uniqueid": 11085415958920757000,
	"users": [
		"foo"
	]
}
```
## `anope.listChannels`

Lists all channels that exist on the network.

### Parameters

Index | Description
----- | -----------
0     | If specified then the level of detail to retrieve. Can be set to "full" to retrieve all information or "name" to just retrieve the channel names. Defaults to "name".

### Errors

Code   | Description
------ | -----------
-32099 | The specified detail level does not exist.

### Result

If the detail level is not specified or is "name" then an array of channel names.

If the detail level is "full" then a mapping of channel names to information about the channel. See `anope.channel` for more information on the data structure.

#### Example

```json
["#chan1", "#chan2", "#chan3"]
```

## `anope.channel`

Retrieves information about the specified channel.

### Parameters

Index | Description
----- | -----------
0     | The name of the channel.

### Errors

Code   | Description
------ | -----------
-32099 | The specified channel does not exist.

### Result

Returns a map containing information about the channel.

Key         | Type          | Description
---         | ----          | -----------
created     | int           | The UNIX time at which the channel was originally created.
listmodes   | map           | List modes which are set on the channel keyed by the mode character.
modes       | array[string] | Flag and parameter modes which are set on the channel.
name        | string        | The name of the channel.
registered  | boolean       | Whether the channel is registered.
topic       | map or null   | The channel topic or null if no topic is set.
topic.setat | int           | The time at which the topic was set.
topic.setby | string        | The nick or nuh of the user who set the topic.
topic.value | string        | The text of the topic.
users       | array[string] | The users that are current in the channel prefixed by their status mode prefixes.

#### Example

```json
{
	"created": 1740402691,
	"listmodes": {
		"b": ["foo!bar@baz", "account:bax"],
	},
	"modes": ["+knrt", "secret"],
	"name": "#chan1",
	"registered": true,
	"topic": {
		"setat": 1740404706,
		"setby": "nick1",
		"value": "Example channel topic"
	},
	"users": ["@nick1", "nick2"]
}
```

## `anope.listOpers`

Lists all services operators that exist on the network.

### Parameters

Index | Description
----- | -----------
0     | If specified then the level of detail to retrieve. Can be set to "full" to retrieve all information or "name" to just retrieve the services operator nicknames. Defaults to "name".

### Errors

Code   | Description
------ | -----------
-32099 | The specified detail level does not exist.

### Result

If the detail level is not specified or is "name" then an array of services operator names.

If the detail level is "full" then a mapping of services operator names to information about the services operator. See `anope.oper` for more information on the data structure.

#### Example

```json
["nick1", "nick2", "nick3"]
```

## `anope.oper`

Retrieves information about the specified services operator.

### Parameters

Index | Description
----- | -----------
0     | The name of the services operator.

### Errors

Code   | Description
------ | -----------
-32099 | The specified services operator does not exist.

### Result

Returns a map containing information about the services operator.

Key                 | Type                  | Description
---                 | ----                  | -----------
fingerprints        | array[string] or null | The client certificate fingerprints that a user must be using to log in as this services operator or null if there are no client certificate restrictions.
hosts               | array[string] or null | The user@ip and user@ip masks that a user must be connecting from to log in as this services operator or null if there are no host restrictions.
name                | string                | The name of the services operator.
operonly            | boolean               | Whether a user has to be a server operator to log in as this services operator.
opertype            | map                   | The oper type associated with the services operator.
opertype.commands   | array[string]         | The commands that the services operator type can use.
opertype.name       | string                | The name of the services operator type.
opertype.privileges | array[string]         | The privileges that the services operator type has.
password            | boolean               | Whether a user has to specify a password to log in as the services operator.
vhost               | string or null        | The vhost of the services operator or null if there is no vhost.

#### Example

```json
{
	"fingerprints": null,
	"hosts": ["*@*.example.com"],
	"name": "stest",
	"operonly": true,
	"opertype": {
		"commands": ["hostserv/*", "operserv/session"],
		"name": "Helper",
		"privileges": ["chanserv/no-register-limit"]
	},
	"password": false,
	"vhost": null
}
```

## `anope.listServers`

Lists all servers that exist on the network.

### Parameters

Index | Description
----- | -----------
0     | If specified then the level of detail to retrieve. Can be set to "full" to retrieve all information or "name" to just retrieve the server names. Defaults to "name".

### Errors

Code   | Description
------ | -----------
-32099 | The specified detail level does not exist.

### Result

If the detail level is not specified or is "name" then an array of server names.

If the detail level is "full" then a mapping of server names to information about the server. See `anope.server` for more information on the data structure.

#### Example

```json
["irc1.example.com", "irc2.example.com", "services.example.com"]
```

## `anope.server`

Retrieves information about the specified server.

### Parameters

Index | Description
----- | -----------
0     | The name of the server.

### Errors

Code   | Description
------ | -----------
-32099 | The specified server does not exist.

### Result

Returns a map containing information about the server.

Key         | Type           | Description
---         | ----           | -----------
description | string         | The description of the server.
downlinks   | array[string]  | The servers which are behind this server
juped       | boolean        | Whether the server has been juped.
name        | string         | The name of the server.
sid         | string or null | The unique immutable identifier of the server or null if the IRCd does not use SIDs.
synced      | boolean        | Whether the server has finished syncing.
ulined      | boolean        | Whether the server is U-lined.
uplink      | string or null | The server in front of this server or null if it is the services server.

#### Example

```json
{
	"description": "Anope IRC Services",
	"downlinks": ["irc.example.com"],
	"juped": false,
	"name": "services.example.com",
	"sid": "00B",
	"synced": true,
	"ulined": true,
	"uplink": null
}
```

## `anope.listUsers`

Lists all users that exist on the network.

### Parameters

Index | Description
----- | -----------
0     | If specified then the level of detail to retrieve. Can be set to "full" to retrieve all information or "name" to just retrieve the user nicknames. Defaults to "name".

### Errors

Code   | Description
------ | -----------
-32099 | The specified detail level does not exist.

### Result

If the detail level is not specified or is "name" then an array of user nicknames.

If the detail level is "full" then a mapping of user nicknames to information about the user. See `anope.user` for more information on the data structure.

#### Example

```json
["nick1", "nick2", "nick3"]
```

## `anope.user`

Retrieves information about the specified user.

### Parameters

Index | Description
----- | -----------
0     | The nickname of the user.

### Errors

Code   | Description
------ | -----------
-32099 | The specified user does not exist.

### Result

Returns a map containing information about the user.

Key              | Type           | Description
---              | ----           | -----------
account          | map or null    | The user's account or null if they are not logged in to an account.
account.display  | string         | The display nickname of the account.
account.opertype | string or null | The account's oper type or null if the account is not a services operator.
account.uniqueid | uint           | The unique immutable identifier of the account.
address          | string         | The IP address the user is connecting from.
away             | map or null    | The user's away state or null if they are not away.
away.message     | string         | The away message specified by the user.
away.time        | int            | The UNIX time at which the user went away.
channels         | array[string]  | The channels that the user is in prefixed by their status mode prefixes.
chost            | string or null | The cloaked hostname of the user or null if they have no cloak.
fingerprint      | string or null | The fingerprint of the user's client certificate or null if they are not using one.
host             | string         | The real hostname of the user.
ident            | string         | The username (ident) of the user.
modes            | array[string]  | Flag and parameter modes which are set on the user.
nick             | string         | The nickname of the user.
nickchanged      | int            | The time at which the user last changed their nickname.
real             | string         | The real name of the user.
server           | string         | The server that the user is connected to.
signon           | int            | The time at which the user connected to the network.
tls              | bool           | Whether the user is connected using TLS (SSL).
uid              | string or null | The unique immutable identifier of the user or null if the IRCd does not use UIDs.
vhost            | string or null | The virtual host of the user or null if they have no vhost.
vident           | string or null | The virtual ident (username) of the user or null if they have no vident.

#### Example

```json
{
	"account": {
		"display": "nick1",
		"opertype": "Services Root",
		"uniqueid": "17183514657819486040"
	},
	"address": "127.0.0.1",
	"away": null,
	"channels": ["@#chan1", "#chan2"],
	"chost": "localhost",
	"fingerprint": null,
	"host": "localhost",
	"id": "9TSAAAAAA",
	"ident": "user1",
	"modes": ["+r"],
	"nick": "nick1",
	"nickchanged": 1740408318,
	"real": "An IRC User",
	"server": "irc.example.com",
	"signon": 1740408296,
	"tls": true,
	"vhost": "staff.example.com",
	"vident": null,
}
```
