Download OpenAPI specification:Download
调整全局认证链上指定认证器的顺序。
id required | string 认证器 ID。由认证方式与数据源组成 |
position required | string Example: before:password_based:built_in_database 认证器在链中的位置。可能的值是 'front', 'rear', 'before:{other_authenticator_id}', 'after:{other_authenticator_id}' |
{- "code": "BAD_REQUEST",
- "message": "string"
}
删除全局认证链上指定认证器中的指定用户数据。
id required | string 认证器 ID。由认证方式与数据源组成 |
user_id required | string 用户 ID,根据设置的账号类型不同,可以是 username 或 clientid |
{- "code": "NOT_FOUND",
- "message": "string"
}
获取全局认证链上指定认证器中的指定用户数据。
id required | string 认证器 ID。由认证方式与数据源组成 |
user_id required | string 用户 ID,根据设置的账号类型不同,可以是 username 或 clientid |
{- "user_id": "user1"
}
更新全局认证链上指定认证器中的指定用户数据。
id required | string 认证器 ID。由认证方式与数据源组成 |
user_id required | string 用户 ID,根据设置的账号类型不同,可以是 username 或 clientid |
password required | string |
is_superuser | boolean Default: false |
{- "password": "******"
}
{- "regular_user": {
- "summary": "Regular user",
- "value": {
- "user_id": "user1"
}
}, - "super_user": {
- "summary": "Superuser",
- "value": {
- "is_superuser": true,
- "user_id": "user2"
}
}
}
为全局认证链上的指定认证器导入用户数据。
id required | string 认证器 ID。由认证方式与数据源组成 |
filename | string <binary> |
{- "code": "BAD_REQUEST",
- "message": "string"
}
获取全局认证链上指定认证器中的用户列表。
id required | string 认证器 ID。由认证方式与数据源组成 |
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
like_user_id | string 使用用户 ID (username 或 clientid)模糊查询。 |
is_superuser | boolean 是否是超级用户。 |
{- "data": [
- {
- "user_id": "user1"
}, - {
- "is_superuser": true,
- "user_id": "user2"
}
], - "meta": {
- "count": 300,
- "limit": 20,
- "page": 0
}
}
向全局认证链上的指定认证器添加用户数据,仅使用内置数据库作为数据源的认证器支持。
id required | string 认证器 ID。由认证方式与数据源组成 |
user_id required | string |
password required | string |
is_superuser | boolean Default: false |
{- "password": "******",
- "user_id": "user1"
}
{- "user_id": "user1"
}
获取全局认证链上指定认证器的指标与状态。
id required | string 认证器 ID。由认证方式与数据源组成 |
{- "metrics": {
- "failed": 0,
- "nomatch": 0,
- "rate": 0,
- "rate_last5m": 0,
- "rate_max": 0,
- "success": 0,
- "total": 0
}, - "node_error": [ ],
- "node_metrics": [
- {
- "metrics": {
- "failed": 0,
- "matched": 0,
- "nomatch": 0,
- "rate": 0,
- "rate_last5m": 0,
- "rate_max": 0,
- "total": 0
}, - "node": "emqx@127.0.0.1"
}
], - "node_resource_metrics": [
- {
- "metrics": {
- "failed": 0,
- "matched": 0,
- "rate": 0,
- "rate_last5m": 0,
- "rate_max": 0,
- "success": 0
}, - "node": "emqx@127.0.0.1"
}
], - "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": "connected"
}
], - "resource_metrics": {
- "failed": 0,
- "matched": 0,
- "rate": 0,
- "rate_last5m": 0,
- "rate_max": 0,
- "success": 0
}, - "status": "connected"
}
获取全局认证链上的指定认证器。emqx_dashboard_error_code_apiemqx_dashboard_error_code_api
id required | string 认证器 ID。由认证方式与数据源组成 |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
更新全局认证链上的指定认证器。
id required | string 认证器 ID。由认证方式与数据源组成 |
mechanism required | string Value: "scram" 认证机制。 |
backend required | string Value: "built_in_database" 后端类型。 |
algorithm | string Default: "sha256" Enum: "sha256" "sha512" Hashing algorithm. |
iteration_count | integer >= 0 Default: 4096 Iteration count. |
enable | boolean Default: true 设为 |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
{- "code": "BAD_REQUEST",
- "message": "string"
}
[- {
- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}, - {
- "backend": "built_in_database",
- "mechanism": "password_based",
- "password_hash_algorithm": {
- "name": "sha256",
- "salt_position": "suffix"
}, - "user_id_type": "username"
}, - {
- "backend": "http",
- "body": {
- "password": "${password}",
- "username": "${username}"
}, - "connect_timeout": "5s",
- "enable_pipelining": 100,
- "headers": {
- "content-type": "application/json"
}, - "mechanism": "password_based",
- "method": "post",
- "pool_size": 8,
- "request_timeout": "5s",
- "ssl": {
- "enable": false
},
}, - {
- "backend": "mongodb",
- "collection": "users",
- "database": "example",
- "filter": {
- "username": "${username}"
}, - "is_superuser_field": "is_superuser",
- "mechanism": "password_based",
- "password_hash_algorithm": {
- "name": "sha256",
- "salt_position": "suffix"
}, - "password_hash_field": "password_hash",
- "salt_field": "salt",
- "server": "127.0.0.1:27017"
}, - {
- "backend": "redis",
- "cmd": "HMGET ${username} password_hash salt",
- "database": 0,
- "mechanism": "password_based",
- "password_hash_algorithm": {
- "name": "sha256",
- "salt_position": "suffix"
}, - "redis_type": "single",
- "server": "127.0.0.1:6379"
}
]
为全局认证链创建认证器。
mechanism required | string Value: "scram" 认证机制。 |
backend required | string Value: "built_in_database" 后端类型。 |
algorithm | string Default: "sha256" Enum: "sha256" "sha512" Hashing algorithm. |
iteration_count | integer >= 0 Default: 4096 Iteration count. |
enable | boolean Default: true 设为 |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
Current monitor (statistics) data, e.g. number of connections and connection rate in the whole cluster.
{- "dropped_msg_rate": 0,
- "received_msg_rate": 0,
- "sent_msg_rate": 0,
- "subscriptions": 0,
- "topics": 0,
- "connections": 0,
- "live_connections": 0
}
Node monitor (statistics) data, e.g. number of connections and connection rate on the specified node.
node required | string Example: emqx@127.0.0.1 EMQX node name. |
{- "dropped_msg_rate": 0,
- "received_msg_rate": 0,
- "sent_msg_rate": 0,
- "subscriptions": 0,
- "topics": 0,
- "connections": 0,
- "live_connections": 0
}
列出指定节点的监控数据
node required | string Example: emqx@127.0.0.1 EMQX node name. |
latest | integer >= 1 Example: latest=300 The latest N seconds data. Like 300 for 5 min. |
[- {
- "time_stamp": 0,
- "subscriptions": 0,
- "topics": 0,
- "connections": 0,
- "live_connections": 0,
- "received": 0,
- "sent": 0,
- "dropped": 0
}
]
列出集群所有节点的监控数据
latest | integer >= 1 Example: latest=300 The latest N seconds data. Like 300 for 5 min. |
[- {
- "time_stamp": 0,
- "subscriptions": 0,
- "topics": 0,
- "connections": 0,
- "live_connections": 0,
- "received": 0,
- "sent": 0,
- "dropped": 0
}
]
开启或者关闭功能,或者设置延迟消息数量上限
enable | boolean Default: true 是否开启该功能 |
max_delayed_messages | integer Default: 0 延迟消息的数量上限(0 代表无限) |
{- "enable": true,
- "max_delayed_messages": 0
}
{- "enable": true,
- "max_delayed_messages": 0
}
查看延迟消息
node required | string 消息的来源节点 |
msgid required | string 延迟消息 ID |
{- "msgid": 0,
- "node": "string",
- "publish_at": "string",
- "delayed_interval": 1,
- "delayed_remaining": 0,
- "expected_at": "string",
- "topic": "/sys/#",
- "qos": 0,
- "from_clientid": "string",
- "from_username": "string"
}
更新全部主题重写规则
action required | string Enum: "subscribe" "publish" "all" 主题重写在哪种操作上生效: |
source_topic required | string 源主题,客户端业务指定的主题 |
dest_topic required | string 目标主题。 |
re required | string 正则表达式 |
[- {
- "action": "publish",
- "source_topic": "x/#",
- "dest_topic": "z/y/$1",
- "re": "^x/y/(.+)$"
}
]
[- {
- "action": "publish",
- "source_topic": "x/#",
- "dest_topic": "z/y/$1",
- "re": "^x/y/(.+)$"
}
]
获取主题监控数据
topic required | string Example: testtopic/1 主题字符串。注意:主题字符串在url路径中必须编码 |
{- "topic": "testtopic/1",
- "create_time": "2022-01-14T21:48:47+08:00",
- "reset_time": "2022-01-14T21:48:47+08:00",
- "metrics": {
- "message.dropped.count": 0,
- "message.in.count": 0,
- "message.out.count": 0,
- "message.qos0.in.count": 0,
- "message.qos0.out.count": 0,
- "message.qos1.in.count": 0,
- "message.qos1.out.count": 0,
- "message.qos2.in.count": 0,
- "message.qos2.out.count": 0,
- "message.dropped.rate": 0,
- "message.in.rate": 0,
- "message.out.rate": 0,
- "message.qos0.in.rate": 0,
- "message.qos0.out.rate": 0,
- "message.qos1.in.rate": 0,
- "message.qos1.out.rate": 0,
- "message.qos2.in.rate": 0,
- "message.qos2.out.rate": 0
}
}
[- {
- "topic": "testtopic/1",
- "create_time": "2022-01-14T21:48:47+08:00",
- "reset_time": "2022-01-14T21:48:47+08:00",
- "metrics": {
- "message.dropped.count": 0,
- "message.in.count": 0,
- "message.out.count": 0,
- "message.qos0.in.count": 0,
- "message.qos0.out.count": 0,
- "message.qos1.in.count": 0,
- "message.qos1.out.count": 0,
- "message.qos2.in.count": 0,
- "message.qos2.out.count": 0,
- "message.dropped.rate": 0,
- "message.in.rate": 0,
- "message.out.rate": 0,
- "message.qos0.in.rate": 0,
- "message.qos0.out.rate": 0,
- "message.qos1.in.rate": 0,
- "message.qos1.out.rate": 0,
- "message.qos2.in.rate": 0,
- "message.qos2.out.rate": 0
}
}
]
重置主题监控状态
topic | string 主题名称。如果此参数不存在,则所有创建的主题监控数据都将重置。 |
action required | string 操作,仅支持 reset |
{- "action": "reset"
}
{- "code": "TOPIC_NOT_FOUND",
- "message": "string"
}
查看延迟消息列表
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
{- "data": [
- {
- "msgid": 0,
- "node": "string",
- "publish_at": "string",
- "delayed_interval": 1,
- "delayed_remaining": 0,
- "expected_at": "string",
- "topic": "/sys/#",
- "qos": 0,
- "from_clientid": "string",
- "from_username": "string",
- "payload": "string"
}
], - "meta": {
- "page": 1,
- "limit": 1,
- "count": 0
}
}
Observe/Un-Observe 指定资源
clientid required | string Example: urn:oma:lwm2m:oma:2 |
path required | string Example: path=/3/0/7 |
enable required | boolean Example: enable=true |
{- "code": "CLIENT_NOT_FOUND",
- "message": "string"
}
查看指定资源状态
clientid required | string Example: urn:oma:lwm2m:oma:2 |
path required | string Example: path=/3/0/7 |
action required | string Example: action=discover |
{- "clientid": "urn:oma:lwm2m:oma:2",
- "path": "/3/0/7",
- "action": "discover",
- "codeMsg": "reply_not_received",
- "content": [
- {
- "operations": "E",
- "dataType": "Integer",
- "path": "urn:oma:lwm2m:oma:2",
- "name": "lwm2m-test"
}
]
}
发送读指令到某资源
clientid required | string Example: urn:oma:lwm2m:oma:2 |
path required | string Example: path=/3/0/7 |
{- "code": "CLIENT_NOT_FOUND",
- "message": "string"
}
发送写指令到某资源
clientid required | string Example: urn:oma:lwm2m:oma:2 |
path required | string Example: path=/3/0/7 |
type required | string Enum: "Integer" "Float" "Time" "String" "Boolean" "Opaque" "Objlnk" Example: type=Integer |
value required | string Example: value=123 |
{- "code": "CLIENT_NOT_FOUND",
- "message": "string"
}
Uninstalls a previously uploaded plugin package.
name required | string Example: emqx_plugin_template-5.0-rc.1 ^[A-Za-z]+[A-Za-z0-9-_.]*$ |
{- "code": "PARAM_ERROR",
- "message": "string"
}
Describs plugin according to its release.json
and README.md
.
name required | string Example: emqx_plugin_template-5.0-rc.1 ^[A-Za-z]+[A-Za-z0-9-_.]*$ |
{- "name": "emqx_plugin_template-5.0-rc.1",
- "author": [
- "EMQX Team"
], - "builder": {
- "contact": "emqx-support@emqx.io",
- "name": "EMQX Team",
- "website": "www.emqx.com"
}, - "built_on_otp_release": "24",
- "compatibility": {
- "emqx": "~>5.0"
}, - "git_commit_or_build_date": "2021-12-25",
- "functionality": [
- "Demo"
], - "git_ref": "ddab50fafeed6b1faea70fc9ffd8c700d7e26ec1",
- "metadata_vsn": "0.1.0",
- "rel_vsn": "5.0-rc.1",
- "rel_apps": [
- "emqx_plugin_template-5.0.0",
- "map_sets-1.1.0"
], - "description": "This is an demo plugin description",
- "running_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": "running"
}
], - "readme": "This is an demo plugin."
}
start/stop a installed plugin.
- start: start the plugin.
- stop: stop the plugin.
name required | string Example: emqx_plugin_template-5.0-rc.1 ^[A-Za-z]+[A-Za-z0-9-_.]*$ |
action required | string Enum: "start" "stop" Action |
{- "code": "NOT_FOUND",
- "message": "string"
}
Plugins are launched in top-down order.
Use POST /plugins/{name}/move
to change the boot order.
[- {
- "name": "emqx_plugin_template-5.0-rc.1",
- "author": [
- "EMQX Team"
], - "builder": {
- "contact": "emqx-support@emqx.io",
- "name": "EMQX Team",
- "website": "www.emqx.com"
}, - "built_on_otp_release": "24",
- "compatibility": {
- "emqx": "~>5.0"
}, - "git_commit_or_build_date": "2021-12-25",
- "functionality": [
- "Demo"
], - "git_ref": "ddab50fafeed6b1faea70fc9ffd8c700d7e26ec1",
- "metadata_vsn": "0.1.0",
- "rel_vsn": "5.0-rc.1",
- "rel_apps": [
- "emqx_plugin_template-5.0.0",
- "map_sets-1.1.0"
], - "description": "This is an demo plugin description",
- "running_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": "running"
}
], - "readme": "This is an demo plugin."
}
]
Setting the boot order of plugins.
name required | string Example: emqx_plugin_template-5.0-rc.1 ^[A-Za-z]+[A-Za-z0-9-_.]*$ |
string or string or string
|
{- "position": "after:emqx_plugin_demo-5.1-rc.2"
}
{- "code": "MOVE_FAILED",
- "message": "string"
}
Upload a plugin tarball (plugin-vsn.tar.gz).Follow emqx-plugin-template to develop plugin.
plugin | string <binary> |
{- "code": "UNEXPECTED_ERROR",
- "message": "string"
}
在某个节点上停止/重新启动 Bridge。
node required | |
id required | string Example: webhook:webhook_example Bridge ID , 格式为 {type}:{name} |
operation required | string Enum: "start" "stop" "restart" Example: start 节点可用操作:停止、重新启动 |
{- "code": "BAD_REQUEST",
- "message": "string"
}
通过给定的 ID 测试创建一个新的桥接。
ID 的格式必须为 ’{type}:{name}”
type required | string Value: "webhook" The Bridge Type |
name required | string Bridge name, used as a human-readable description of the bridge. |
enable | boolean Default: true Enable or disable this bridge |
object (bridge_webhook.creation_opts) | |
connect_timeout | string Default: "15s" The timeout when connecting to the HTTP server. |
retry_interval | string Deprecated |
pool_type | string Default: "random" Enum: "random" "hash" The type of the pool. Can be one of |
pool_size | integer >= 1 Default: 8 The pool size. |
enable_pipelining | integer >= 1 Default: 100 A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request. |
object (connector-http.request) | |
object (broker.ssl_client_opts) | |
url required | string The URL of the HTTP Bridge. |
direction | string Deprecated Value: "egress" Deprecated, The direction of this bridge, MUST be 'egress' |
local_topic | string The MQTT topic filter to be forwarded to the HTTP server. All MQTT 'PUBLISH' messages with the topic |
method | string Default: "post" Enum: "post" "put" "get" "delete" The method of the HTTP request. All the available methods are: post, put, get, delete. |
headers | object Default: {"accept":"application/json","cache-control":"no-cache","connection":"keep-alive","content-type":"application/json","keep-alive":"timeout=5"} The headers of the HTTP request. |
body | string The body of the HTTP request. |
max_retries | integer >= 0 Default: 2 HTTP request max retry times if failed. |
request_timeout | string Deprecated Default: "15s" HTTP request timeout. |
{- "clean_start": true,
- "egress": {
- "local": {
- "topic": "emqx/#"
}, - "remote": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": false,
- "topic": "from_emqx/${topic}"
}
}, - "enable": true,
- "ingress": {
- "local": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": "${retain}",
- "topic": "from_aws/${topic}"
}, - "remote": {
- "qos": 1,
- "topic": "aws/#"
}
}, - "keepalive": "300s",
- "max_inflight": 100,
- "name": "mqtt_example",
- "password": "******",
- "proto_ver": "v4",
- "resource_opts": {
- "health_check_interval": "15s",
- "max_buffer_bytes": 104857600,
- "query_mode": "sync"
}, - "retry_interval": "15s",
- "server": "127.0.0.1:1883",
- "ssl": {
- "enable": false
}, - "type": "mqtt",
- "username": "foo"
}
{- "code": "TEST_FAILED",
- "message": "string"
}
启用或禁用所有节点上的桥接
id required | string Example: webhook:webhook_example Bridge ID , 格式为 {type}:{name} |
enable required | boolean Example: true 是否启用桥接 |
{- "code": "NOT_FOUND",
- "message": "string"
}
通过 Id 来获取桥接的指标信息
id required | string Example: webhook:webhook_example Bridge ID , 格式为 {type}:{name} |
{- "metrics": {
- "dropped": 0,
- "dropped.other": 0,
- "dropped.queue_full": 0,
- "dropped.resource_not_found": 0,
- "dropped.resource_stopped": 0,
- "matched": 0,
- "queuing": 0,
- "retried": 0,
- "failed": 0,
- "inflight": 0,
- "success": 0,
- "rate": 0,
- "rate_max": 0,
- "rate_last5m": 0,
- "received": 0
}, - "node_metrics": [
- {
- "node": "emqx@127.0.0.1",
- "metrics": {
- "dropped": 0,
- "dropped.other": 0,
- "dropped.queue_full": 0,
- "dropped.resource_not_found": 0,
- "dropped.resource_stopped": 0,
- "matched": 0,
- "queuing": 0,
- "retried": 0,
- "failed": 0,
- "inflight": 0,
- "success": 0,
- "rate": 0,
- "rate_max": 0,
- "rate_last5m": 0,
- "received": 0
}
}
]
}
通过 ID 获取 Bridge
id required | string Example: webhook:webhook_example Bridge ID , 格式为 {type}:{name} |
{- "clean_start": true,
- "egress": {
- "local": {
- "topic": "emqx/#"
}, - "remote": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": false,
- "topic": "from_emqx/${topic}"
}
}, - "enable": true,
- "ingress": {
- "local": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": "${retain}",
- "topic": "from_aws/${topic}"
}, - "remote": {
- "qos": 1,
- "topic": "aws/#"
}
}, - "keepalive": "300s",
- "max_inflight": 100,
- "name": "mqtt_example",
- "password": "******",
- "proto_ver": "v4",
- "resource_opts": {
- "health_check_interval": "15s",
- "max_buffer_bytes": 104857600,
- "query_mode": "sync"
}, - "retry_interval": "15s",
- "server": "127.0.0.1:1883",
- "ssl": {
- "enable": false
}, - "type": "mqtt",
- "username": "foo"
}
通过 ID 更新 Bridge
id required | string Example: webhook:webhook_example Bridge ID , 格式为 {type}:{name} |
enable | boolean Default: true Enable or disable this bridge |
object (bridge_webhook.creation_opts) | |
connect_timeout | string Default: "15s" The timeout when connecting to the HTTP server. |
retry_interval | string Deprecated |
pool_type | string Default: "random" Enum: "random" "hash" The type of the pool. Can be one of |
pool_size | integer >= 1 Default: 8 The pool size. |
enable_pipelining | integer >= 1 Default: 100 A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request. |
object (connector-http.request) | |
object (broker.ssl_client_opts) | |
url required | string The URL of the HTTP Bridge. |
direction | string Deprecated Value: "egress" Deprecated, The direction of this bridge, MUST be 'egress' |
local_topic | string The MQTT topic filter to be forwarded to the HTTP server. All MQTT 'PUBLISH' messages with the topic |
method | string Default: "post" Enum: "post" "put" "get" "delete" The method of the HTTP request. All the available methods are: post, put, get, delete. |
headers | object Default: {"accept":"application/json","cache-control":"no-cache","connection":"keep-alive","content-type":"application/json","keep-alive":"timeout=5"} The headers of the HTTP request. |
body | string The body of the HTTP request. |
max_retries | integer >= 0 Default: 2 HTTP request max retry times if failed. |
request_timeout | string Deprecated Default: "15s" HTTP request timeout. |
{- "clean_start": true,
- "egress": {
- "local": {
- "topic": "emqx/#"
}, - "remote": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": false,
- "topic": "from_emqx/${topic}"
}
}, - "enable": true,
- "ingress": {
- "local": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": "${retain}",
- "topic": "from_aws/${topic}"
}, - "remote": {
- "qos": 1,
- "topic": "aws/#"
}
}, - "keepalive": "300s",
- "max_inflight": 100,
- "password": "******",
- "proto_ver": "v4",
- "resource_opts": {
- "health_check_interval": "15s",
- "max_buffer_bytes": 104857600,
- "query_mode": "sync"
}, - "retry_interval": "15s",
- "server": "127.0.0.1:1883",
- "ssl": {
- "enable": false
}, - "username": "foo"
}
{- "clean_start": true,
- "egress": {
- "local": {
- "topic": "emqx/#"
}, - "remote": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": false,
- "topic": "from_emqx/${topic}"
}
}, - "enable": true,
- "ingress": {
- "local": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": "${retain}",
- "topic": "from_aws/${topic}"
}, - "remote": {
- "qos": 1,
- "topic": "aws/#"
}
}, - "keepalive": "300s",
- "max_inflight": 100,
- "name": "mqtt_example",
- "password": "******",
- "proto_ver": "v4",
- "resource_opts": {
- "health_check_interval": "15s",
- "max_buffer_bytes": 104857600,
- "query_mode": "sync"
}, - "retry_interval": "15s",
- "server": "127.0.0.1:1883",
- "ssl": {
- "enable": false
}, - "type": "mqtt",
- "username": "foo"
}
停止或启用所有节点上的桥接
id required | string Example: webhook:webhook_example Bridge ID , 格式为 {type}:{name} |
operation required | string Enum: "start" "stop" "restart" Example: start 集群可用操作:停止、重新启动 |
{- "code": "BAD_REQUEST",
- "message": "string"
}
[- {
- "clean_start": true,
- "egress": {
- "local": {
- "topic": "emqx/#"
}, - "remote": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": false,
- "topic": "from_emqx/${topic}"
}
}, - "enable": true,
- "ingress": {
- "local": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": "${retain}",
- "topic": "from_aws/${topic}"
}, - "remote": {
- "qos": 1,
- "topic": "aws/#"
}
}, - "keepalive": "300s",
- "max_inflight": 100,
- "name": "mqtt_example",
- "password": "******",
- "proto_ver": "v4",
- "resource_opts": {
- "health_check_interval": "15s",
- "max_buffer_bytes": 104857600,
- "query_mode": "sync"
}, - "retry_interval": "15s",
- "server": "127.0.0.1:1883",
- "ssl": {
- "enable": false
}, - "type": "mqtt",
- "username": "foo"
}, - {
- "body": "${payload}",
- "connect_timeout": "15s",
- "enable": true,
- "enable_pipelining": 100,
- "local_topic": "emqx_webhook/#",
- "max_retries": 3,
- "method": "post",
- "name": "webhook_example",
- "pool_size": 4,
- "pool_type": "random",
- "request_timeout": "15s",
- "resource_opts": {
- "health_check_interval": 15000,
- "inflight_window": 100,
- "max_buffer_bytes": 104857600,
- "query_mode": "async",
- "worker_pool_size": 1
}, - "ssl": {
- "enable": false
}, - "type": "webhook",
}
]
通过类型和名字创建 Bridge
type required | string Value: "webhook" The Bridge Type |
name required | string Bridge name, used as a human-readable description of the bridge. |
enable | boolean Default: true Enable or disable this bridge |
object (bridge_webhook.creation_opts) | |
connect_timeout | string Default: "15s" The timeout when connecting to the HTTP server. |
retry_interval | string Deprecated |
pool_type | string Default: "random" Enum: "random" "hash" The type of the pool. Can be one of |
pool_size | integer >= 1 Default: 8 The pool size. |
enable_pipelining | integer >= 1 Default: 100 A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request. |
object (connector-http.request) | |
object (broker.ssl_client_opts) | |
url required | string The URL of the HTTP Bridge. |
direction | string Deprecated Value: "egress" Deprecated, The direction of this bridge, MUST be 'egress' |
local_topic | string The MQTT topic filter to be forwarded to the HTTP server. All MQTT 'PUBLISH' messages with the topic |
method | string Default: "post" Enum: "post" "put" "get" "delete" The method of the HTTP request. All the available methods are: post, put, get, delete. |
headers | object Default: {"accept":"application/json","cache-control":"no-cache","connection":"keep-alive","content-type":"application/json","keep-alive":"timeout=5"} The headers of the HTTP request. |
body | string The body of the HTTP request. |
max_retries | integer >= 0 Default: 2 HTTP request max retry times if failed. |
request_timeout | string Deprecated Default: "15s" HTTP request timeout. |
{- "clean_start": true,
- "egress": {
- "local": {
- "topic": "emqx/#"
}, - "remote": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": false,
- "topic": "from_emqx/${topic}"
}
}, - "enable": true,
- "ingress": {
- "local": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": "${retain}",
- "topic": "from_aws/${topic}"
}, - "remote": {
- "qos": 1,
- "topic": "aws/#"
}
}, - "keepalive": "300s",
- "max_inflight": 100,
- "name": "mqtt_example",
- "password": "******",
- "proto_ver": "v4",
- "resource_opts": {
- "health_check_interval": "15s",
- "max_buffer_bytes": 104857600,
- "query_mode": "sync"
}, - "retry_interval": "15s",
- "server": "127.0.0.1:1883",
- "ssl": {
- "enable": false
}, - "type": "mqtt",
- "username": "foo"
}
{- "clean_start": true,
- "egress": {
- "local": {
- "topic": "emqx/#"
}, - "remote": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": false,
- "topic": "from_emqx/${topic}"
}
}, - "enable": true,
- "ingress": {
- "local": {
- "payload": "${payload}",
- "qos": "${qos}",
- "retain": "${retain}",
- "topic": "from_aws/${topic}"
}, - "remote": {
- "qos": 1,
- "topic": "aws/#"
}
}, - "keepalive": "300s",
- "max_inflight": 100,
- "name": "mqtt_example",
- "password": "******",
- "proto_ver": "v4",
- "resource_opts": {
- "health_check_interval": "15s",
- "max_buffer_bytes": 104857600,
- "query_mode": "sync"
}, - "retry_interval": "15s",
- "server": "127.0.0.1:1883",
- "ssl": {
- "enable": false
}, - "type": "mqtt",
- "username": "foo"
}
节点的健康检查。 返回节点状态的描述信息。
如果 EMQX 应用程序已经启动并运行,返回状态代码 200,否则返回 503。
这个API是在v5.0.10中引入的。
GET /status
端点(没有/api/...
前缀)也是这个端点的一个别名,工作方式相同。 这个别名从v5.0.0开始就有了。
自 v5.0.25 和 e5.0.4 开始,可以通过指定 'format' 参数来得到 JSON 格式的信息。
format | string Default: "text" 指定返回的内容格式。使用 'text'(默认)则返回自由格式的字符串; 'json' 则返回 JSON 格式。 |
列出主题
topic | string Topic Name |
node | string Example: node=emqx@127.0.0.1 Node Name |
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
{- "data": [
- {
- "topic": "string",
- "node": "string"
}
], - "meta": {
- "page": 1,
- "limit": 50,
- "count": 0,
- "hasnext": true
}
}
获取节点上的统计信息,例如主题数量,连接数量等。
node required | string Example: emqx@127.0.0.1 Node name |
{- "channels.count": 0,
- "channels.max": 0,
- "connections.count": 0,
- "connections.max": 0,
- "delayed.count": 0,
- "delayed.max": 0,
- "live_connections.count": 0,
- "live_connections.max": 0,
- "retained.count": 0,
- "retained.max": 0,
- "sessions.count": 0,
- "sessions.max": 0,
- "suboptions.count": 0,
- "suboptions.max": 0,
- "subscribers.count": 0,
- "subscribers.max": 0,
- "subscriptions.count": 0,
- "subscriptions.max": 0,
- "subscriptions.shared.count": 0,
- "subscriptions.shared.max": 0,
- "topics.count": 0,
- "topics.max": 0
}
获取节节点上的运行计数信息,例如消息发送数量,收到或发送字节数,认证和授权成功失败次数等。
node required | string Example: emqx@127.0.0.1 Node name |
{- "node": "string",
- "actions.failure": 0,
- "actions.success": 0,
- "bytes.received": 0,
- "bytes.sent": 0,
- "client.auth.anonymous": 0,
- "client.authenticate": 0,
- "client.check_authz": 0,
- "client.connack": 0,
- "client.connect": 0,
- "client.connected": 0,
- "client.disconnected": 0,
- "client.subscribe": 0,
- "client.unsubscribe": 0,
- "delivery.dropped": 0,
- "delivery.dropped.expired": 0,
- "delivery.dropped.no_local": 0,
- "delivery.dropped.qos0_msg": 0,
- "delivery.dropped.queue_full": 0,
- "delivery.dropped.too_large": 0,
- "messages.acked": 0,
- "messages.delayed": 0,
- "messages.delivered": 0,
- "messages.dropped": 0,
- "messages.dropped.await_pubrel_timeout": 0,
- "messages.dropped.no_subscribers": 0,
- "messages.forward": 0,
- "messages.publish": 0,
- "messages.qos0.received": 0,
- "messages.qos0.sent": 0,
- "messages.qos1.received": 0,
- "messages.qos1.sent": 0,
- "messages.qos2.received": 0,
- "messages.qos2.sent": 0,
- "messages.received": 0,
- "messages.retained": 0,
- "messages.sent": 0,
- "packets.auth.received": 0,
- "packets.auth.sent": 0,
- "packets.connack.auth_error": 0,
- "packets.connack.error": 0,
- "packets.connack.sent": 0,
- "packets.connect.received": 0,
- "packets.disconnect.received": 0,
- "packets.disconnect.sent": 0,
- "packets.pingreq.received": 0,
- "packets.pingresp.sent": 0,
- "packets.puback.inuse": 0,
- "packets.puback.missed": 0,
- "packets.puback.received": 0,
- "packets.puback.sent": 0,
- "packets.pubcomp.inuse": 0,
- "packets.pubcomp.missed": 0,
- "packets.pubcomp.received": 0,
- "packets.pubcomp.sent": 0,
- "packets.publish.auth_error": 0,
- "packets.publish.dropped": 0,
- "packets.publish.error": 0,
- "packets.publish.inuse": 0,
- "packets.publish.received": 0,
- "packets.publish.sent": 0,
- "packets.pubrec.inuse": 0,
- "packets.pubrec.missed": 0,
- "packets.pubrec.received": 0,
- "packets.pubrec.sent": 0,
- "packets.pubrel.missed": 0,
- "packets.pubrel.received": 0,
- "packets.pubrel.sent": 0,
- "packets.received": 0,
- "packets.sent": 0,
- "packets.suback.sent": 0,
- "packets.subscribe.auth_error": 0,
- "packets.subscribe.error": 0,
- "packets.subscribe.received": 0,
- "packets.unsuback.sent": 0,
- "packets.unsubscribe.error": 0,
- "packets.unsubscribe.received": 0,
- "rules.matched": 0,
- "session.created": 0,
- "session.discarded": 0,
- "session.resumed": 0,
- "session.takenover": 0,
- "session.terminated": 0
}
获取节点信息
node required | string Example: emqx@127.0.0.1 Node name |
{- "node": "emqx@127.0.0.1",
- "connections": 0,
- "live_connections": 0,
- "load1": 2.66,
- "load5": 2.66,
- "load15": 2.66,
- "max_fds": 1024,
- "memory_total": "512.00M",
- "memory_used": "256.00M",
- "node_status": "running",
- "otp_release": "24.2/12.2",
- "process_available": 2097152,
- "process_used": 1024,
- "uptime": 5120000,
- "version": "5.0.0",
- "edition": "Opensource",
- "sys_path": "path/to/emqx",
- "log_path": "path/to/log | The log path is not yet set",
- "role": "core"
}
[- {
- "node": "emqx@127.0.0.1",
- "connections": 0,
- "live_connections": 0,
- "load1": 2.66,
- "load5": 2.66,
- "load15": 2.66,
- "max_fds": 1024,
- "memory_total": "512.00M",
- "memory_used": "256.00M",
- "node_status": "running",
- "otp_release": "24.2/12.2",
- "process_available": 2097152,
- "process_used": 1024,
- "uptime": 5120000,
- "version": "5.0.0",
- "edition": "Opensource",
- "sys_path": "path/to/emqx",
- "log_path": "path/to/log | The log path is not yet set",
- "role": "core"
}
]
查看 Exhook 服务器详细信息
name required | string Example: default Exhook 服务器的名称 |
{- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}, - "node_metrics": [
- {
- "node": "string",
- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}
}
], - "node_status": [
- {
- "node": "string",
- "status": "connected"
}
], - "hooks": [
- {
- "name": "string",
- "params": {
- "$name": "string"
}
}
], - "name": "default",
- "enable": true,
- "request_timeout": "12m",
- "failed_action": "deny",
- "ssl": {
- "cacertfile": "string",
- "cacerts": false,
- "certfile": "string",
- "keyfile": "string",
- "verify": "verify_peer",
- "reuse_sessions": true,
- "depth": 10,
- "password": "",
- "versions": [
- "tlsv1.3",
- "tlsv1.2"
], - "ciphers": [ ],
- "secure_renegotiate": true,
- "log_level": "emergency",
- "hibernate_after": "12m",
- "enable": false,
- "server_name_indication": "disable"
}, - "socket_options": {
- "keepalive": true,
- "nodelay": true,
- "recbuf": "64KB",
- "sndbuf": "16KB"
}, - "auto_reconnect": "60s",
- "pool_size": 8
}
更新 Exhook 服务器
name required | string Example: default Exhook 服务器的名称 |
name required | string ExHook 服务器名称 |
enable | boolean Default: true 开启这个 Exhook 服务器 |
url required | string gRPC 服务器地址 |
request_timeout | string Default: "5s" gRPC 服务器请求超时时间 |
failed_action | string Default: "deny" Enum: "deny" "ignore" 当 gRPC 请求失败后的操作 |
object (exhook.ssl_conf) | |
object (exhook.socket_options) | |
string or string Default: "60s" 自动重连到 gRPC 服务器的设置。 | |
pool_size | integer >= 1 Default: 8 gRPC 客户端进程池大小 |
{- "auto_reconnect": "60s",
- "enable": true,
- "failed_action": "deny",
- "name": "default",
- "pool_size": 8,
- "request_timeout": "5s",
- "ssl": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "enable": false,
- "keyfile": "/etc/emqx/certs/key.pem"
},
}
{- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}, - "node_metrics": [
- {
- "node": "string",
- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}
}
], - "node_status": [
- {
- "node": "string",
- "status": "connected"
}
], - "hooks": [
- {
- "name": "string",
- "params": {
- "$name": "string"
}
}
], - "name": "default",
- "enable": true,
- "request_timeout": "12m",
- "failed_action": "deny",
- "ssl": {
- "cacertfile": "string",
- "cacerts": false,
- "certfile": "string",
- "keyfile": "string",
- "verify": "verify_peer",
- "reuse_sessions": true,
- "depth": 10,
- "password": "",
- "versions": [
- "tlsv1.3",
- "tlsv1.2"
], - "ciphers": [ ],
- "secure_renegotiate": true,
- "log_level": "emergency",
- "hibernate_after": "12m",
- "enable": false,
- "server_name_indication": "disable"
}, - "socket_options": {
- "keepalive": true,
- "nodelay": true,
- "recbuf": "64KB",
- "sndbuf": "16KB"
}, - "auto_reconnect": "60s",
- "pool_size": 8
}
移动 Exhook 服务器顺序。
注意: 移动的参数只能是:front | rear | before:{name} | after:{name}
name required | string Example: default Exhook 服务器的名称 |
position required | string 移动的方向 |
{- "position": "front"
}
{- "code": "BAD_REQUEST",
- "message": "string"
}
[- {
- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}, - "node_metrics": [
- {
- "node": "string",
- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}
}
], - "node_status": [
- {
- "node": "string",
- "status": "connected"
}
], - "hooks": [
- {
- "name": "string",
- "params": {
- "$name": "string"
}
}
], - "name": "default",
- "enable": true,
- "request_timeout": "12m",
- "failed_action": "deny",
- "ssl": {
- "cacertfile": "string",
- "cacerts": false,
- "certfile": "string",
- "keyfile": "string",
- "verify": "verify_peer",
- "reuse_sessions": true,
- "depth": 10,
- "password": "",
- "versions": [
- "tlsv1.3",
- "tlsv1.2"
], - "ciphers": [ ],
- "secure_renegotiate": true,
- "log_level": "emergency",
- "hibernate_after": "12m",
- "enable": false,
- "server_name_indication": "disable"
}, - "socket_options": {
- "keepalive": true,
- "nodelay": true,
- "recbuf": "64KB",
- "sndbuf": "16KB"
}, - "auto_reconnect": "60s",
- "pool_size": 8
}
]
添加 ExHook 服务器
name required | string ExHook 服务器名称 |
enable | boolean Default: true 开启这个 Exhook 服务器 |
url required | string gRPC 服务器地址 |
request_timeout | string Default: "5s" gRPC 服务器请求超时时间 |
failed_action | string Default: "deny" Enum: "deny" "ignore" 当 gRPC 请求失败后的操作 |
object (exhook.ssl_conf) | |
object (exhook.socket_options) | |
string or string Default: "60s" 自动重连到 gRPC 服务器的设置。 | |
pool_size | integer >= 1 Default: 8 gRPC 客户端进程池大小 |
{- "auto_reconnect": "60s",
- "enable": true,
- "failed_action": "deny",
- "name": "default",
- "pool_size": 8,
- "request_timeout": "5s",
- "ssl": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "enable": false,
- "keyfile": "/etc/emqx/certs/key.pem"
},
}
{- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}, - "node_metrics": [
- {
- "node": "string",
- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}
}
], - "node_status": [
- {
- "node": "string",
- "status": "connected"
}
], - "hooks": [
- {
- "name": "string",
- "params": {
- "$name": "string"
}
}
], - "name": "default",
- "enable": true,
- "request_timeout": "12m",
- "failed_action": "deny",
- "ssl": {
- "cacertfile": "string",
- "cacerts": false,
- "certfile": "string",
- "keyfile": "string",
- "verify": "verify_peer",
- "reuse_sessions": true,
- "depth": 10,
- "password": "",
- "versions": [
- "tlsv1.3",
- "tlsv1.2"
], - "ciphers": [ ],
- "secure_renegotiate": true,
- "log_level": "emergency",
- "hibernate_after": "12m",
- "enable": false,
- "server_name_indication": "disable"
}, - "socket_options": {
- "keepalive": true,
- "nodelay": true,
- "recbuf": "64KB",
- "sndbuf": "16KB"
}, - "auto_reconnect": "60s",
- "pool_size": 8
}
获取 Exhook 服务器的钩子信息
name required | string Example: default Exhook 服务器的名称 |
[- {
- "name": "string",
- "params": {
- "$name": "string"
}, - "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}, - "node_metrics": [
- {
- "node": "string",
- "metrics": {
- "succeed": 0,
- "failed": 0,
- "rate": 0,
- "max_rate": 0
}
}
]
}
]
{- "enable": true,
- "headers": {
- "header-name": "header-value"
}, - "interval": "15s",
- "job_name": "${name}/instance/${name}~${host}",
}
Update Prometheus config
push_gateway_server required | string Default: "http://127.0.0.1:9091" Prometheus 服务器地址 |
interval required | string Default: "15s" 数据推送间隔 |
headers | Array of objects Default: {} 推送到 Push Gateway 的 HTTP Headers 列表。 |
job_name required | string Default: "${name}/instance/${name}~${host}" 推送到 Push Gateway 的 Job 名称。可用变量为: |
enable required | boolean Default: false 开启或关闭 Prometheus 数据推送 |
vm_dist_collector required | string Default: "disabled" Enum: "disabled" "enabled" 开启或关闭 VM 分布采集器,收集 Erlang 分布机制中涉及的套接字和进程的信息。 |
mnesia_collector required | string Default: "disabled" Enum: "enabled" "disabled" 开启或关闭 Mnesia 采集器, 使用 mnesia:system_info/1 收集 Mnesia 相关指标 |
vm_statistics_collector required | string Default: "disabled" Enum: "enabled" "disabled" 开启或关闭 VM 统计采集器, 使用 erlang:statistics/1 收集 Erlang VM 相关指标 |
vm_system_info_collector required | string Default: "disabled" Enum: "enabled" "disabled" 开启或关闭 VM 系统信息采集器, 使用 erlang:system_info/1 收集 Erlang VM 相关指标 |
vm_memory_collector required | string Default: "disabled" Enum: "enabled" "disabled" 开启或关闭 VM 内存采集器, 使用 erlang:memory/0 收集 Erlang 虚拟机动态分配的内存信息,同时提供基本的 (D)ETS 统计信息 |
vm_msacc_collector required | string Default: "disabled" Enum: "enabled" "disabled" 开启或关闭 VM msacc 采集器, 使用 erlang:statistics(microstate_accounting) 收集微状态计数指标 |
{- "enable": true,
- "headers": {
- "header-name": "header-value"
}, - "interval": "15s",
- "job_name": "${name}/instance/${name}~${host}",
}
{- "enable": true,
- "headers": {
- "header-name": "header-value"
}, - "interval": "15s",
- "job_name": "${name}/instance/${name}~${host}",
}
Update opentelmetry configuration
object (opentelemetry.exporter) | |
enable required | boolean Default: false Enable or disable open telemetry metrics |
{- "enable": true,
}
{- "enable": true,
}
更新自动订阅主题列表
topic required | string 订阅标识符,支持使用占位符,例如 client/${clientid}/username/${username}/host/${host}/port/${port} |
qos | integer [ 0 .. 2 ] Default: 0 缺省值为 0,服务质量, |
rh | integer [ 0 .. 2 ] Default: 0 指定订阅建立时服务端是否向客户端发送保留消息, |
rap | integer [ 0 .. 1 ] Default: 0 缺省值为 0,这一选项用来指定服务端向客户端转发消息时是否要保留其中的 RETAIN 标识,注意这一选项不会影响保留消息中的 RETAIN 标识。因此当 Retain As Publish 选项被设置为 0 时,客户端直接依靠消息中的 RETAIN 标识来区分这是一个正常的转发消息还是一个保留消息,而不是去判断消息是否是自己订阅后收到的第一个消息(转发消息甚至可能会先于保留消息被发送,视不同 Broker 的具体实现而定)。 |
nl | integer [ 0 .. 1 ] Default: 0 缺省值为0, |
[- {
- "topic": "/clientid/${clientid}/username/${username}/host/${host}/port/${port}",
- "qos": 0,
- "rh": 0,
- "rap": 0,
- "nl": 0
}
]
[- {
- "topic": "/clientid/${clientid}/username/${username}/host/${host}/port/${port}",
- "qos": 0,
- "rh": 0,
- "rap": 0,
- "nl": 0
}
]
移除指定监听器的认证器。
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
{- "code": "BAD_REQUEST",
- "message": "string"
}
获取监听器的认证器配置。
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
为指定监听器开启认证器以实现客户端认证的能力。
当某一监听器开启认证后,所有连接到该监听器的客户端会使用该认证器进行认证。
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
use_jwks required | string Value: true 是否使用 JWKS。 |
endpoint required | string JWKS 端点, 它是一个以 JWKS 格式返回服务端的公钥集的只读端点。 |
pool_size | integer >= 1 Default: 8 桥接远端服务时使用的连接池大小。 |
refresh_interval | integer Default: 300 JWKS 刷新间隔。 |
object (broker.ssl_client_opts) | |
mechanism required | string Value: "jwt" 认证机制。 |
acl_claim_name | string Default: "acl" JWT claim name to use for getting ACL rules. |
verify_claims | Array of strings Default: [] 需要验证的自定义声明列表,它是一个名称/值对列表。 |
from | string Default: "password" Enum: "username" "password" 指定客户端连接请求中 JWT 的位置;可选值: password、 username(分别对应于 MQTT 客户端 CONNECT 报文中的 Password 和 Username 字段) |
enable | boolean Default: true 设为 |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
更新指定监听器的认证器配置,或停用/启用该认证器。
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
use_jwks required | string Value: true 是否使用 JWKS。 |
endpoint required | string JWKS 端点, 它是一个以 JWKS 格式返回服务端的公钥集的只读端点。 |
pool_size | integer >= 1 Default: 8 桥接远端服务时使用的连接池大小。 |
refresh_interval | integer Default: 300 JWKS 刷新间隔。 |
object (broker.ssl_client_opts) | |
mechanism required | string Value: "jwt" 认证机制。 |
acl_claim_name | string Default: "acl" JWT claim name to use for getting ACL rules. |
verify_claims | Array of strings Default: [] 需要验证的自定义声明列表,它是一个名称/值对列表。 |
from | string Default: "password" Enum: "username" "password" 指定客户端连接请求中 JWT 的位置;可选值: password、 username(分别对应于 MQTT 客户端 CONNECT 报文中的 Password 和 Username 字段) |
enable | boolean Default: true 设为 |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
获取网关监听器列表。该接口会返回监听器所有的配置(包括该监听器上的认证器),同时也会返回该监听器在集群中运行的状态。
name required | string Example: stomp 网关名称. |
[- {
- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "22213",
- "dtls_options": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "fail_if_no_peer_cert": false,
- "keyfile": "/etc/emqx/certs/key.pem",
- "verify": "verify_none",
- "versions": [
- "dtlsv1.2",
- "dtlsv1"
]
}, - "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "dtls-def",
- "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}
}
], - "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}, - "type": "dtls",
- "udp_options": {
- "active_n": 100,
- "backlog": 1024
}
}, - {
- "acceptors": 16,
- "bind": "22214",
- "dtls_options": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "ciphers": "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384,RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256,RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA",
- "fail_if_no_peer_cert": false,
- "keyfile": "/etc/emqx/certs/key.pem",
- "user_lookup_fun": "emqx_tls_psk:lookup",
- "verify": "verify_none",
- "versions": [
- "dtlsv1.2",
- "dtlsv1"
]
}, - "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "dtls-psk",
- "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}
}
], - "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}, - "type": "dtls"
}, - {
- "acceptors": 16,
- "authentication": {
- "backend": "built_in_database",
- "mechanism": "password_based",
- "password_hash_algorithm": {
- "name": "sha256"
}, - "user_id_type": "username"
}, - "bind": "22215",
- "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "tcp-with-authn",
- "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}
}
], - "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}, - "type": "tcp"
}, - {
- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "22211",
- "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "ssl-def",
- "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}
}
], - "ssl_options": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "fail_if_no_peer_cert": false,
- "keyfile": "/etc/emqx/certs/key.pem",
- "verify": "verify_none",
- "versions": [
- "tlsv1.3",
- "tlsv1.2",
- "tlsv1.1",
- "tlsv1"
]
}, - "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}, - "tcp_options": {
- "active_n": 100,
- "backlog": 1024
}, - "type": "ssl"
}, - {
- "acceptors": 16,
- "bind": "22210",
- "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "tcp-def",
- "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}
}
], - "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}, - "tcp_options": {
- "active_n": 100,
- "backlog": 1024,
- "buffer": "10KB",
- "high_watermark": "1MB",
- "keepalive": "none",
- "nodelay": false,
- "recbuf": "10KB",
- "reuseaddr": true,
- "send_timeout": "15s",
- "send_timeout_close": true,
- "sndbuf": "10KB"
}, - "type": "tcp"
}, - {
- "bind": "22212",
- "name": "udp-def",
- "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}
}
], - "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}, - "type": "udp",
- "udp_options": {
- "active_n": 100,
- "buffer": "10KB",
- "recbuf": "10KB",
- "reuseaddr": true,
- "sndbuf": "10KB"
}
}
]
为指定网关添加监听器。
注:对于某网关不支持的监听器类型,该接口会返回 400: BAD_REQUEST
。
name required | string Example: stomp 网关名称. |
id | string 监听器 ID |
type | string Value: "dtls" 监听器类型 |
name | string 监听器名称 |
running | boolean 监听器运行状态 |
acceptors | integer Default: 16 Acceptor 进程池大小。 |
object (gateway.udp_opts) | |
enable | boolean Default: true 是否启用该监听器。 |
bind | string 监听器绑定的 IP 地址或端口。 |
string or integer Default: 1024 监听器支持的最大连接数。 | |
max_conn_rate | integer Default: 1000 监听器支持的最大连接速率。 |
enable_authn | boolean Default: true 配置 |
mountpoint | string 发布或订阅时,在所有主题前增加前缀字符串。 |
access_rules | |
object (gateway.dtls_opts) |
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "22213",
- "dtls_options": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "fail_if_no_peer_cert": false,
- "keyfile": "/etc/emqx/certs/key.pem",
- "verify": "verify_none",
- "versions": [
- "dtlsv1.2",
- "dtlsv1"
]
}, - "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "dtls-def",
- "type": "dtls",
- "udp_options": {
- "active_n": 100,
- "backlog": 1024
}
}
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "22213",
- "dtls_options": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "fail_if_no_peer_cert": false,
- "keyfile": "/etc/emqx/certs/key.pem",
- "verify": "verify_none",
- "versions": [
- "dtlsv1.2",
- "dtlsv1"
]
}, - "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "dtls-def",
- "type": "dtls",
- "udp_options": {
- "active_n": 100,
- "backlog": 1024
}
}
获取指定网关监听器的配置。
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "22213",
- "dtls_options": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "fail_if_no_peer_cert": false,
- "keyfile": "/etc/emqx/certs/key.pem",
- "verify": "verify_none",
- "versions": [
- "dtlsv1.2",
- "dtlsv1"
]
}, - "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "dtls-def",
- "type": "dtls",
- "udp_options": {
- "active_n": 100,
- "backlog": 1024
}
}
更新某网关监听器的配置。被更新的监听器会执行重启,所有已连接到该监听器上的客户端都会被断开。
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
id | string 监听器 ID |
type | string Value: "dtls" 监听器类型 |
name | string 监听器名称 |
running | boolean 监听器运行状态 |
acceptors | integer Default: 16 Acceptor 进程池大小。 |
object (gateway.udp_opts) | |
enable | boolean Default: true 是否启用该监听器。 |
bind | string 监听器绑定的 IP 地址或端口。 |
string or integer Default: 1024 监听器支持的最大连接数。 | |
max_conn_rate | integer Default: 1000 监听器支持的最大连接速率。 |
enable_authn | boolean Default: true 配置 |
mountpoint | string 发布或订阅时,在所有主题前增加前缀字符串。 |
access_rules | |
object (gateway.dtls_opts) |
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "22213",
- "dtls_options": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "fail_if_no_peer_cert": false,
- "keyfile": "/etc/emqx/certs/key.pem",
- "verify": "verify_none",
- "versions": [
- "dtlsv1.2",
- "dtlsv1"
]
}, - "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "dtls-def",
- "type": "dtls",
- "udp_options": {
- "active_n": 100,
- "backlog": 1024
}
}
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "22213",
- "dtls_options": {
- "cacertfile": "/etc/emqx/certs/cacert.pem",
- "certfile": "/etc/emqx/certs/cert.pem",
- "fail_if_no_peer_cert": false,
- "keyfile": "/etc/emqx/certs/key.pem",
- "verify": "verify_none",
- "versions": [
- "dtlsv1.2",
- "dtlsv1"
]
}, - "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "dtls-def",
- "type": "dtls",
- "udp_options": {
- "active_n": 100,
- "backlog": 1024
}
}
删除用户(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
uid required | string 用户 ID |
{- "code": "BAD_REQUEST",
- "message": "string"
}
获取用户信息(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
uid required | string 用户 ID |
{- "regular_user": {
- "summary": "Regular user",
- "value": {
- "user_id": "user1"
}
}, - "super_user": {
- "summary": "Superuser",
- "value": {
- "is_superuser": true,
- "user_id": "user2"
}
}
}
更新用户信息(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
uid required | string 用户 ID |
password required | string |
is_superuser | boolean Default: false |
{- "password": "******"
}
{- "regular_user": {
- "summary": "Regular user",
- "value": {
- "user_id": "user1"
}
}, - "super_user": {
- "summary": "Superuser",
- "value": {
- "is_superuser": true,
- "user_id": "user2"
}
}
}
获取用户列表(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
{- "regular_user": {
- "summary": "Regular user",
- "value": {
- "user_id": "user1"
}
}, - "super_user": {
- "summary": "Superuser",
- "value": {
- "is_superuser": true,
- "user_id": "user2"
}
}
}
添加用户(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
id required | string 监听器 ID |
user_id required | string |
password required | string |
is_superuser | boolean Default: false |
{- "password": "******",
- "user_id": "user1"
}
{- "regular_user": {
- "summary": "Regular user",
- "value": {
- "user_id": "user1"
}
}, - "super_user": {
- "summary": "Superuser",
- "value": {
- "is_superuser": true,
- "user_id": "user2"
}
}
}
Get the sub-configurations under sys_topics
{- "sys_msg_interval": "1m",
- "sys_heartbeat_interval": "30s",
- "sys_event_messages": {
- "client_connected": true,
- "client_disconnected": true,
- "client_subscribed": false,
- "client_unsubscribed": false
}
}
Update the sub-configurations under sys_topics
string or string Default: "1m" 发送 | |
string or string Default: "30s" 发送心跳系统消息的间隔时间,它包括: | |
object (broker.event_names) |
{- "sys_msg_interval": "1m",
- "sys_heartbeat_interval": "30s",
- "sys_event_messages": {
- "client_connected": true,
- "client_disconnected": true,
- "client_subscribed": false,
- "client_unsubscribed": false
}
}
{- "sys_msg_interval": "1m",
- "sys_heartbeat_interval": "30s",
- "sys_event_messages": {
- "client_connected": true,
- "client_disconnected": true,
- "client_subscribed": false,
- "client_unsubscribed": false
}
}
Get the sub-configurations under sysmon
{- "vm": {
- "process_check_interval": "12m",
- "process_high_watermark": "12%",
- "process_low_watermark": "12%",
- "long_gc": "disabled",
- "long_schedule": "240ms",
- "large_heap": "32MB",
- "busy_dist_port": true,
- "busy_port": true
}, - "os": {
- "cpu_check_interval": "12m",
- "cpu_high_watermark": "12%",
- "cpu_low_watermark": "12%",
- "mem_check_interval": "disabled",
- "sysmem_high_watermark": "12%",
- "procmem_high_watermark": "12%"
}
}
Update the sub-configurations under sysmon
object (broker.sysmon_vm) | |
object (broker.sysmon_os) |
{- "vm": {
- "process_check_interval": "12m",
- "process_high_watermark": "12%",
- "process_low_watermark": "12%",
- "long_gc": "disabled",
- "long_schedule": "240ms",
- "large_heap": "32MB",
- "busy_dist_port": true,
- "busy_port": true
}, - "os": {
- "cpu_check_interval": "12m",
- "cpu_high_watermark": "12%",
- "cpu_low_watermark": "12%",
- "mem_check_interval": "disabled",
- "sysmem_high_watermark": "12%",
- "procmem_high_watermark": "12%"
}
}
{- "vm": {
- "process_check_interval": "12m",
- "process_high_watermark": "12%",
- "process_low_watermark": "12%",
- "long_gc": "disabled",
- "long_schedule": "240ms",
- "large_heap": "32MB",
- "busy_dist_port": true,
- "busy_port": true
}, - "os": {
- "cpu_check_interval": "12m",
- "cpu_high_watermark": "12%",
- "cpu_low_watermark": "12%",
- "mem_check_interval": "disabled",
- "sysmem_high_watermark": "12%",
- "procmem_high_watermark": "12%"
}
}
{- "mqtt": {
- "idle_timeout": "15s",
- "max_packet_size": "32MB",
- "max_clientid_len": 65535,
- "max_topic_levels": 128,
- "max_topic_alias": 65535,
- "retain_available": true,
- "wildcard_subscription": true,
- "shared_subscription": true,
- "shared_subscription_strategy": "random",
- "exclusive_subscription": false,
- "ignore_loop_deliver": false,
- "strict_mode": false,
- "response_information": "",
- "server_keepalive": "disabled",
- "keepalive_multiplier": 1.5,
- "retry_interval": "12m",
- "use_username_as_clientid": false,
- "peer_cert_as_username": "disabled",
- "peer_cert_as_clientid": "disabled",
- "session_expiry_interval": "12m",
- "max_awaiting_rel": 100,
- "max_qos_allowed": 0,
- "mqueue_priorities": "disabled",
- "mqueue_default_priority": "highest",
- "mqueue_store_qos0": true,
- "max_mqueue_len": 1000,
- "max_inflight": 32,
- "max_subscriptions": "infinity",
- "upgrade_qos": false,
- "await_rel_timeout": "12m"
}, - "flapping_detect": {
- "enable": false,
- "window_time": "12m",
- "max_count": 15,
- "ban_time": "12m"
}, - "force_shutdown": {
- "enable": true,
- "max_mailbox_size": 1000,
- "max_heap_size": "1024KB"
}, - "force_gc": {
- "enable": true,
- "count": 16000,
- "bytes": "32MB"
}
}
更新全局默认 zone 的配置
object (broker.mqtt) | |
object (broker.flapping_detect) | |
object (broker.force_shutdown) | |
object (broker.force_gc) |
{- "mqtt": {
- "idle_timeout": "15s",
- "max_packet_size": "32MB",
- "max_clientid_len": 65535,
- "max_topic_levels": 128,
- "max_topic_alias": 65535,
- "retain_available": true,
- "wildcard_subscription": true,
- "shared_subscription": true,
- "shared_subscription_strategy": "random",
- "exclusive_subscription": false,
- "ignore_loop_deliver": false,
- "strict_mode": false,
- "response_information": "",
- "server_keepalive": "disabled",
- "keepalive_multiplier": 1.5,
- "retry_interval": "12m",
- "use_username_as_clientid": false,
- "peer_cert_as_username": "disabled",
- "peer_cert_as_clientid": "disabled",
- "session_expiry_interval": "12m",
- "max_awaiting_rel": 100,
- "max_qos_allowed": 0,
- "mqueue_priorities": "disabled",
- "mqueue_default_priority": "highest",
- "mqueue_store_qos0": true,
- "max_mqueue_len": 1000,
- "max_inflight": 32,
- "max_subscriptions": "infinity",
- "upgrade_qos": false,
- "await_rel_timeout": "12m"
}, - "flapping_detect": {
- "enable": false,
- "window_time": "12m",
- "max_count": 15,
- "ban_time": "12m"
}, - "force_shutdown": {
- "enable": true,
- "max_mailbox_size": 1000,
- "max_heap_size": "1024KB"
}, - "force_gc": {
- "enable": true,
- "count": 16000,
- "bytes": "32MB"
}
}
{- "mqtt": {
- "idle_timeout": "15s",
- "max_packet_size": "32MB",
- "max_clientid_len": 65535,
- "max_topic_levels": 128,
- "max_topic_alias": 65535,
- "retain_available": true,
- "wildcard_subscription": true,
- "shared_subscription": true,
- "shared_subscription_strategy": "random",
- "exclusive_subscription": false,
- "ignore_loop_deliver": false,
- "strict_mode": false,
- "response_information": "",
- "server_keepalive": "disabled",
- "keepalive_multiplier": 1.5,
- "retry_interval": "12m",
- "use_username_as_clientid": false,
- "peer_cert_as_username": "disabled",
- "peer_cert_as_clientid": "disabled",
- "session_expiry_interval": "12m",
- "max_awaiting_rel": 100,
- "max_qos_allowed": 0,
- "mqueue_priorities": "disabled",
- "mqueue_default_priority": "highest",
- "mqueue_store_qos0": true,
- "max_mqueue_len": 1000,
- "max_inflight": 32,
- "max_subscriptions": "infinity",
- "upgrade_qos": false,
- "await_rel_timeout": "12m"
}, - "flapping_detect": {
- "enable": false,
- "window_time": "12m",
- "max_count": 15,
- "ban_time": "12m"
}, - "force_shutdown": {
- "enable": true,
- "max_mailbox_size": 1000,
- "max_heap_size": "1024KB"
}, - "force_gc": {
- "enable": true,
- "count": 16000,
- "bytes": "32MB"
}
}
Update the sub-configurations under alarm
actions | Array of strings Default: ["log","publish"] 警报激活时触发的动作。 |
size_limit | integer [ 1 .. 3000 ] Default: 1000 要保留为历史记录的已停用报警的最大总数。当超过此限制时,将删除最旧的停用报警,以限制总数。 |
validity_period | string Default: "24h" 停用报警的保留时间。报警在停用时不会立即删除,而是在保留时间之后删除。 |
{- "actions": [
- "log",
- "publish"
], - "size_limit": 1000,
- "validity_period": "24h"
}
{- "actions": [
- "log",
- "publish"
], - "size_limit": 1000,
- "validity_period": "24h"
}
Get the sub-configurations under dashboard
{- "listeners": {
- "http": {
- "bind": "0.0.0.0:18083",
- "num_acceptors": 8,
- "max_connections": 512,
- "backlog": 1024,
- "send_timeout": "12m",
- "inet6": false,
- "ipv6_v6only": false,
- "proxy_header": false
}, - "https": {
- "bind": "0.0.0.0:18084",
- "ssl_options": {
- "cacertfile": "${EMQX_ETC_DIR}/certs/cacert.pem",
- "cacerts": false,
- "certfile": "${EMQX_ETC_DIR}/certs/cert.pem",
- "keyfile": "${EMQX_ETC_DIR}/certs/key.pem",
- "verify": "verify_peer",
- "reuse_sessions": true,
- "depth": 10,
- "password": "",
- "versions": [
- "tlsv1.3",
- "tlsv1.2"
], - "ciphers": [ ],
- "secure_renegotiate": true,
- "log_level": "emergency",
- "hibernate_after": "12m",
- "dhfile": "string",
- "honor_cipher_order": true,
- "client_renegotiation": true,
- "handshake_timeout": "12m"
}, - "num_acceptors": 8,
- "max_connections": 512,
- "backlog": 1024,
- "send_timeout": "12m",
- "inet6": false,
- "ipv6_v6only": false,
- "proxy_header": false
}
}, - "token_expired_time": "12m",
- "cors": false
}
Update the sub-configurations under dashboard
object (dashboard.listeners) | |
token_expired_time | string Default: "60m" JWT token 过期时间。默认设置为 60 分钟。 |
cors | boolean Default: false 支持跨域资源共享(CORS), |
{- "listeners": {
- "http": {
- "bind": "0.0.0.0:18083",
- "num_acceptors": 8,
- "max_connections": 512,
- "backlog": 1024,
- "send_timeout": "12m",
- "inet6": false,
- "ipv6_v6only": false,
- "proxy_header": false
}, - "https": {
- "bind": "0.0.0.0:18084",
- "ssl_options": {
- "cacertfile": "${EMQX_ETC_DIR}/certs/cacert.pem",
- "cacerts": false,
- "certfile": "${EMQX_ETC_DIR}/certs/cert.pem",
- "keyfile": "${EMQX_ETC_DIR}/certs/key.pem",
- "verify": "verify_peer",
- "reuse_sessions": true,
- "depth": 10,
- "password": "",
- "versions": [
- "tlsv1.3",
- "tlsv1.2"
], - "ciphers": [ ],
- "secure_renegotiate": true,
- "log_level": "emergency",
- "hibernate_after": "12m",
- "dhfile": "string",
- "honor_cipher_order": true,
- "client_renegotiation": true,
- "handshake_timeout": "12m"
}, - "num_acceptors": 8,
- "max_connections": 512,
- "backlog": 1024,
- "send_timeout": "12m",
- "inet6": false,
- "ipv6_v6only": false,
- "proxy_header": false
}
}, - "token_expired_time": "12m",
- "cors": false
}
{- "listeners": {
- "http": {
- "bind": "0.0.0.0:18083",
- "num_acceptors": 8,
- "max_connections": 512,
- "backlog": 1024,
- "send_timeout": "12m",
- "inet6": false,
- "ipv6_v6only": false,
- "proxy_header": false
}, - "https": {
- "bind": "0.0.0.0:18084",
- "ssl_options": {
- "cacertfile": "${EMQX_ETC_DIR}/certs/cacert.pem",
- "cacerts": false,
- "certfile": "${EMQX_ETC_DIR}/certs/cert.pem",
- "keyfile": "${EMQX_ETC_DIR}/certs/key.pem",
- "verify": "verify_peer",
- "reuse_sessions": true,
- "depth": 10,
- "password": "",
- "versions": [
- "tlsv1.3",
- "tlsv1.2"
], - "ciphers": [ ],
- "secure_renegotiate": true,
- "log_level": "emergency",
- "hibernate_after": "12m",
- "dhfile": "string",
- "honor_cipher_order": true,
- "client_renegotiation": true,
- "handshake_timeout": "12m"
}, - "num_acceptors": 8,
- "max_connections": 512,
- "backlog": 1024,
- "send_timeout": "12m",
- "inet6": false,
- "ipv6_v6only": false,
- "proxy_header": false
}
}, - "token_expired_time": "12m",
- "cors": false
}
重置(使用 conf_path
参数)指定的配置路径下的值
- 若指定路径的配置有默认值,则使用默认值;
- 若指定路径的配置没有默认值,则返回 HTTP 状态码 400。
rootname required | string Enum: "log" "sysmon" "sys_topics" "alarm" "dashboard" Example: sysmon |
conf_path | string Example: conf_path=os.sysmem_high_watermark The config path separated by '.' character |
{- "code": "NO_DEFAULT_VALUE",
- "message": "string"
}
Get all the configurations of the specified keys, including hot and non-hot updatable items.
key | string Enum: "alarm" "api_key" "authentication" "authorization" "auto_subscribe" "bridges" "cluster" "conn_congestion" "crl_cache" "dashboard" "delayed" "exhook" "flapping_detect" "force_gc" "force_shutdown" "gateway" "limiter" "listeners" "log" "mqtt" "node" "opentelemetry" "overload_protection" "prometheus" "psk_authentication" "retainer" "rewrite" "rpc" "rule_engine" "slow_subs" "sys_topics" "sysmon" "telemetry" "topic_metrics" Example: key=sysmon |
node | string 指定节点名称。如果未指定,则返回收到这个HTTP请求的节点的配置。 |
Update the configurations of the specified keys.
mode | string Default: "merge" Enum: "replace" "merge" |
{- "code": "UPDATE_FAILED",
- "message": "string"
}
Update the sub-configurations under log
object (emqx_conf_schema.console_handler) | |
object or emqx_conf_schema.log_file_handler (object) Default: {"level":"warning"} 输出到文件的日志处理进程列表 |
{- "console": {
- "level": "debug",
- "enable": true,
- "formatter": "text",
- "time_offset": "system"
}, - "file": {
- "level": "warning"
}
}
{- "console": {
- "level": "debug",
- "enable": true,
- "formatter": "text",
- "time_offset": "system"
}, - "file": {
- "level": "warning"
}
}
获取指定客户端的详细信息
clientid required | string |
{- "awaiting_rel_cnt": 0,
- "awaiting_rel_max": 0,
- "clean_start": true,
- "clientid": "string",
- "connected": true,
- "connected_at": 1640995200000,
- "created_at": 1640995200000,
- "disconnected_at": 1640995200000,
- "expiry_interval": 0,
- "heap_size": 0,
- "inflight_cnt": 0,
- "inflight_max": 0,
- "ip_address": "string",
- "is_bridge": true,
- "keepalive": 0,
- "mailbox_len": 0,
- "mqueue_dropped": 0,
- "mqueue_len": 0,
- "mqueue_max": 0,
- "node": "string",
- "port": 0,
- "proto_name": "string",
- "proto_ver": 0,
- "recv_cnt": 0,
- "recv_msg": 0,
- "recv_msg.dropped": 0,
- "recv_msg.dropped.await_pubrel_timeout": 0,
- "recv_msg.qos0": 0,
- "recv_msg.qos1": 0,
- "recv_msg.qos2": 0,
- "recv_oct": 0,
- "recv_pkt": 0,
- "reductions": 0,
- "send_cnt": 0,
- "send_msg": 0,
- "send_msg.dropped": 0,
- "send_msg.dropped.expired": 0,
- "send_msg.dropped.queue_full": 0,
- "send_msg.dropped.too_large": 0,
- "send_msg.qos0": 0,
- "send_msg.qos1": 0,
- "send_msg.qos2": 0,
- "send_oct": 0,
- "send_pkt": 0,
- "subscriptions_cnt": 0,
- "subscriptions_max": 0,
- "username": "string",
- "mountpoint": "string"
}
批量取消订阅
clientid required | string |
topic | string Topic |
[- {
- "topic": "testtopic/#"
}
]
{- "code": "CLIENTID_NOT_FOUND",
- "message": "string"
}
批量订阅
clientid required | string |
topic required | string Topic |
qos | integer [ 0 .. 2 ] Default: 0 QoS |
nl | integer Default: 0 No Local |
rap | integer Default: 0 Retain as Published |
rh | integer Default: 0 Retain Handling |
[- {
- "topic": "testtopic/#",
- "qos": 0,
- "nl": 0,
- "rap": 0,
- "rh": 0
}
]
[- {
- "node": "emqx@127.0.0.1",
- "topic": "testtopic/1",
- "clientid": "emqx_clientid_xx128cdhfc",
- "qos": 0,
- "nl": 0,
- "rap": 0,
- "rh": 0
}
]
订阅
clientid required | string |
topic required | string Topic |
qos | integer [ 0 .. 2 ] Default: 0 QoS |
nl | integer Default: 0 No Local |
rap | integer Default: 0 Retain as Published |
rh | integer Default: 0 Retain Handling |
{- "topic": "testtopic/#",
- "qos": 0,
- "nl": 0,
- "rap": 0,
- "rh": 0
}
{- "node": "emqx@127.0.0.1",
- "topic": "testtopic/1",
- "clientid": "emqx_clientid_xx128cdhfc",
- "qos": 0,
- "nl": 0,
- "rap": 0,
- "rh": 0
}
取消订阅
clientid required | string |
topic | string Topic |
{- "topic": "testtopic/#"
}
{- "code": "CLIENTID_NOT_FOUND",
- "message": "string"
}
列出客户端
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
node | string Example: node=emqx@127.0.0.1 Node name |
username | string User name |
ip_address | string Example: ip_address=127.0.0.1 Client's IP address |
conn_state | string Enum: "connected" "idle" "disconnected" The current connection status of the client, the possible values are connected,idle,disconnected |
clean_start | boolean Whether the client uses a new session |
proto_ver | string Client protocol version |
like_clientid | string Fuzzy search |
like_username | string Fuzzy search |
integer or string Search client session creation time by greater than or equal method, rfc3339 or timestamp(millisecond) | |
integer or string Search client session creation time by less than or equal method, rfc3339 or timestamp(millisecond) | |
integer or string Search client connection creation time by greater than or equal method, rfc3339 or timestamp(epoch millisecond) | |
integer or string Search client connection creation time by less than or equal method, rfc3339 or timestamp(millisecond) |
{- "data": [
- {
- "awaiting_rel_cnt": 0,
- "awaiting_rel_max": 0,
- "clean_start": true,
- "clientid": "string",
- "connected": true,
- "connected_at": 1640995200000,
- "created_at": 1640995200000,
- "disconnected_at": 1640995200000,
- "expiry_interval": 0,
- "heap_size": 0,
- "inflight_cnt": 0,
- "inflight_max": 0,
- "ip_address": "string",
- "is_bridge": true,
- "keepalive": 0,
- "mailbox_len": 0,
- "mqueue_dropped": 0,
- "mqueue_len": 0,
- "mqueue_max": 0,
- "node": "string",
- "port": 0,
- "proto_name": "string",
- "proto_ver": 0,
- "recv_cnt": 0,
- "recv_msg": 0,
- "recv_msg.dropped": 0,
- "recv_msg.dropped.await_pubrel_timeout": 0,
- "recv_msg.qos0": 0,
- "recv_msg.qos1": 0,
- "recv_msg.qos2": 0,
- "recv_oct": 0,
- "recv_pkt": 0,
- "reductions": 0,
- "send_cnt": 0,
- "send_msg": 0,
- "send_msg.dropped": 0,
- "send_msg.dropped.expired": 0,
- "send_msg.dropped.queue_full": 0,
- "send_msg.dropped.too_large": 0,
- "send_msg.qos0": 0,
- "send_msg.qos1": 0,
- "send_msg.qos2": 0,
- "send_oct": 0,
- "send_pkt": 0,
- "subscriptions_cnt": 0,
- "subscriptions_max": 0,
- "username": "string",
- "mountpoint": "string"
}
], - "meta": {
- "page": 1,
- "limit": 50,
- "count": 0,
- "hasnext": true
}
}
{- "emqx_version": "5.0.0-beta.3-32d1547c",
- "license": {
- "edition": "opensource"
}, - "os_name": "Linux",
- "os_version": "20.04",
- "otp_version": "24",
- "up_time": 20220113,
- "uuid": "AAAAAAAA-BBBB-CCCC-2022-DDDDEEEEFFF",
- "nodes_uuid": [
- "AAAAAAAA-BBBB-CCCC-2022-DDDDEEEEFFF",
- "ZZZZZZZZ-CCCC-BBBB-2022-DDDDEEEEFFF"
], - "active_plugins": [
- "Plugin A",
- "Plugin B"
], - "active_modules": [
- "Module A",
- "Module B"
], - "num_clients": 20220113,
- "messages_received": 2022,
- "messages_sent": 2022
}
Get RLOG cluster topology: connections between core and replicant nodes.
[- {
- "core_node": "emqx-core@127.0.0.1",
- "replicant_nodes": [
- {
- "node": "emqx-replicant@127.0.0.2",
- "streams": "10"
}
]
}
]
获取客户端信息
clientid required | string 客户端 ID |
name required | string 网关名称 |
{- "awaiting_rel_cnt": 0,
- "recv_cnt": 1,
- "recv_pkt": 1,
- "recv_msg": 0,
- "connected": true,
- "awaiting_rel_max": "infinity",
- "expiry_interval": 0,
- "is_bridge": false,
- "created_at": "2021-12-07T10:44:02.721+08:00",
- "inflight_cnt": 0,
- "mqueue_len": 0,
- "ip_address": "127.0.0.1",
- "reductions": 72022,
- "proto_name": "STOMP",
- "mqueue_dropped": 0,
- "proto_ver": "1.0",
- "username": "guest",
- "subscriptions_cnt": 0,
- "send_pkt": 1,
- "connected_at": "2021-12-07T10:44:02.721+08:00",
- "clientid": "MzAyMzEzNTUwNzk1NDA1MzYyMzIwNzUxNjQwMTY1NzQ0NjE",
- "recv_oct": 56,
- "send_oct": 61,
- "disconnected_at": null,
- "keepalive": 0,
- "inflight_max": "infinity",
- "clean_start": true,
- "subscriptions_max": "infinity",
- "mailbox_len": 0,
- "node": "emqx@127.0.0.1",
- "send_msg": 0,
- "mqueue_max": "infinity",
- "heap_size": 4185,
- "port": 50675,
- "send_cnt": 1
}
为某客户端新增订阅关系
clientid required | string 客户端 ID |
name required | string 网关名称 |
topic | string 主题过滤器或主题名称 |
qos | integer QoS 等级,枚举:0,1,2 |
nl | integer No Local 选项,枚举:0,1 |
rap | integer Retain as Published 选项,枚举:0,1 |
rh | integer Retain Handling 选项,枚举:0,1,2 |
object (emqx_gateway_api_clients.extra_sub_props) |
{- "nl": 0,
- "qos": 1,
- "rap": 0,
- "rh": 0,
- "topic": "test/topic"
}
{- "nl": 0,
- "qos": 1,
- "rap": 0,
- "rh": 0,
- "topic": "test/topic"
}
获取指定网关的客户端列表
name required | string 网关名称 |
node | string 匹配客户端的节点名称 |
clientid | string 匹配客户端 ID |
username | string 匹配客户端 Username |
ip_address | string 匹配客户端 IP 地址 |
conn_state | string 匹配客户端连接状态 |
proto_ver | string 匹配客户端协议版本 |
clean_start | boolean 匹配客户端 |
like_clientid | string 子串匹配客户端 ID |
like_username | string 子串匹配 客户端 Username |
integer or string 匹配会话创建时间大于等于指定值的客户端 | |
integer or string 匹配会话创建时间小于等于指定值的客户端 | |
integer or string 匹配连接创建时间大于等于指定值的客户端 | |
integer or string 匹配连接创建时间小于等于指定值的客户端 | |
endpoint_name | string 匹配 LwM2M 客户端 Endpoint Name |
like_endpoint_name | string 子串匹配 LwM2M 客户端 Endpoint Name |
gte_lifetime | string 匹配心跳时间大于等于指定值的 LwM2M 客户端 |
lte_lifetime | string 匹配心跳时间小于等于指定值的 LwM2M 客户端 |
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
{- "data": [
- {
- "node": "string",
- "clientid": "string",
- "username": "string",
- "mountpoint": "string",
- "proto_name": "string",
- "proto_ver": "string",
- "ip_address": "string",
- "port": 0,
- "is_bridge": true,
- "connected_at": 1640995200000,
- "disconnected_at": 1640995200000,
- "connected": true,
- "keepalive": 0,
- "clean_start": true,
- "expiry_interval": 0,
- "created_at": 1640995200000,
- "subscriptions_cnt": 0,
- "subscriptions_max": 0,
- "inflight_cnt": 0,
- "inflight_max": 0,
- "mqueue_len": 0,
- "mqueue_max": 0,
- "mqueue_dropped": 0,
- "awaiting_rel_cnt": 0,
- "awaiting_rel_max": 0,
- "recv_oct": 0,
- "recv_cnt": 0,
- "recv_pkt": 0,
- "recv_msg": 0,
- "send_oct": 0,
- "send_cnt": 0,
- "send_pkt": 0,
- "send_msg": 0,
- "mailbox_len": 0,
- "heap_size": 0,
- "reductions": 0
}
], - "meta": {
- "page": 1,
- "limit": 50,
- "count": 0,
- "hasnext": true
}
}
批量发布一组消息。
可能的 HTTP 状态码如下:
200: 所有的消息都被成功发送到至少一个订阅。
202: 至少有一个消息没有匹配到任何订阅。
400: 至少有一个消息编码错误,如非法主题,或 QoS 超出范围等。
503: 至少有一个小因为服务重启的原因导致转发失败。
请求的 Body 或者 Body 中包含的某个消息无法通过 API 规范的类型检查时,HTTP 响应的消息与发布单个消息的 API
/publish
是一样的。
如果所有的消息都是合法的,那么 HTTP 返回的内容是一个 JSON 数组,每个元素代表了该消息转发的状态。
payload_encoding | string Default: "plain" Enum: "plain" "base64" MQTT 消息体的编码方式,可以是 |
topic required | string 主题名称 |
qos | integer [ 0 .. 2 ] Default: 0 MQTT 消息的 QoS |
clientid | string Deprecated |
payload required | string MQTT 消息体。 |
object (emqx_mgmt_api_publish.message_properties) | |
retain | boolean Default: false 布尔型字段,用于表示该消息是否保留消息。 |
[- {
- "payload_encoding": "plain",
- "topic": "api/example/topic",
- "qos": 0,
- "clientid": "string",
- "payload": "hello emqx api",
- "properties": {
- "payload_format_indicator": 0,
- "message_expiry_interval": 0,
- "response_topic": "some_other_topic",
- "correlation_data": "string",
- "user_properties": {
- "foo": "bar"
}, - "content_type": "text/plain"
}, - "retain": false
}
]
[- {
- "id": "string"
}
]
发布一个消息。
可能的 HTTP 状态码如下:
200: 消息被成功发送到至少一个订阅。
202: 没有匹配到任何订阅。
400: 消息编码错误,如非法主题,或 QoS 超出范围等。
503: 服务重启等过程中导致转发失败。
payload_encoding | string Default: "plain" Enum: "plain" "base64" MQTT 消息体的编码方式,可以是 |
topic required | string 主题名称 |
qos | integer [ 0 .. 2 ] Default: 0 MQTT 消息的 QoS |
clientid | string Deprecated |
payload required | string MQTT 消息体。 |
object (emqx_mgmt_api_publish.message_properties) | |
retain | boolean Default: false 布尔型字段,用于表示该消息是否保留消息。 |
{- "payload_encoding": "plain",
- "topic": "api/example/topic",
- "qos": 0,
- "clientid": "string",
- "payload": "hello emqx api",
- "properties": {
- "payload_format_indicator": 0,
- "message_expiry_interval": 0,
- "response_topic": "some_other_topic",
- "correlation_data": "string",
- "user_properties": {
- "foo": "bar"
}, - "content_type": "text/plain"
}, - "retain": false
}
{- "id": "string"
}
测试一个规则
emqx_rule_api_schema.ctx_delivery_dropped (object) or emqx_rule_api_schema.ctx_bridge_mqtt (object) or emqx_rule_api_schema.ctx_check_authz_complete (object) or emqx_rule_api_schema.ctx_connack (object) or emqx_rule_api_schema.ctx_disconnected (object) or emqx_rule_api_schema.ctx_connected (object) or emqx_rule_api_schema.ctx_dropped (object) or emqx_rule_api_schema.ctx_acked (object) or emqx_rule_api_schema.ctx_delivered (object) or emqx_rule_api_schema.ctx_unsub (object) or emqx_rule_api_schema.ctx_sub (object) or emqx_rule_api_schema.ctx_pub (object) Default: {} 测试事件的上下文 | |
sql required | string 测试的 SQL |
{- "context": { },
- "sql": "string"
}
{- "code": "BAD_REQUEST",
- "message": "string"
}
列出所有规则
enable | boolean 根据规则是否开启条件过滤 |
from | string 根据规则来源 Topic 过滤, 需要完全匹配 |
like_id | string 根据规则 id 过滤, 使用子串模糊匹配 |
like_from | string 根据规则来源 Topic 过滤, 使用子串模糊匹配 |
like_description | string 根据规则描述过滤, 使用子串模糊匹配 |
match_from | string 根据规则来源 Topic 过滤, 使用 MQTT Topic 匹配 |
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
{- "data": [
- {
- "id": "293fb66f",
- "from": "t/#",
- "created_at": "2021-12-01T15:00:43.153+08:00",
- "name": "foo",
- "sql": "SELECT * FROM \"test/topic\" WHERE payload.x = 1",
- "actions": [
- "webhook:my_webhook",
- {
- "args": {
- "payload": "${payload}",
- "topic": "t/1"
}, - "function": "republish"
}, - {
- "function": "console"
}
], - "enable": true,
- "description": "Some description",
- "metadata": { }
}
], - "meta": {
- "page": 1,
- "limit": 50,
- "count": 0,
- "hasnext": true
}
}
通过指定 ID 创建规则
name | string Default: "" 规则名字 |
sql required | string 用于处理消息的 SQL 。 |
Array of rule_engine.user_provided_function (object) or rule_engine.builtin_action_console (object) or rule_engine.builtin_action_republish (object) or strings Default: [] 规则的动作列表。 | |
enable | boolean Default: true 启用或禁用规则引擎 |
description | string Default: "" 规则的描述 |
metadata | object 规则的元数据,不要手动修改 |
{- "name": "foo",
- "sql": "SELECT * FROM \"test/topic\" WHERE payload.x = 1",
- "actions": [
- "webhook:my_webhook",
- {
- "args": {
- "payload": "${payload}",
- "topic": "t/1"
}, - "function": "republish"
}, - {
- "function": "console"
}
], - "enable": true,
- "description": "Some description",
- "metadata": { }
}
{- "id": "293fb66f",
- "from": "t/#",
- "created_at": "2021-12-01T15:00:43.153+08:00",
- "name": "foo",
- "sql": "SELECT * FROM \"test/topic\" WHERE payload.x = 1",
- "actions": [
- "webhook:my_webhook",
- {
- "args": {
- "payload": "${payload}",
- "topic": "t/1"
}, - "function": "republish"
}, - {
- "function": "console"
}
], - "enable": true,
- "description": "Some description",
- "metadata": { }
}
通过给定的 Id 获得规则的指标数据
id required | string Example: my_rule_id |
{- "id": "293fb66f",
- "metrics": {
- "matched": 0,
- "matched.rate": 0,
- "matched.rate.max": 0,
- "matched.rate.last5m": 0,
- "passed": 0,
- "failed": 0,
- "failed.exception": 0,
- "failed.unknown": 0,
- "actions.total": 0,
- "actions.success": 0,
- "actions.failed": 0,
- "actions.failed.out_of_service": 0,
- "actions.failed.unknown": 0
}, - "node_metrics": [
- {
- "node": "emqx@127.0.0.1",
- "matched": 0,
- "matched.rate": 0,
- "matched.rate.max": 0,
- "matched.rate.last5m": 0,
- "passed": 0,
- "failed": 0,
- "failed.exception": 0,
- "failed.unknown": 0,
- "actions.total": 0,
- "actions.success": 0,
- "actions.failed": 0,
- "actions.failed.out_of_service": 0,
- "actions.failed.unknown": 0
}
]
}
通过 ID 查询规则
id required | string Example: my_rule_id |
{- "id": "293fb66f",
- "from": "t/#",
- "created_at": "2021-12-01T15:00:43.153+08:00",
- "name": "foo",
- "sql": "SELECT * FROM \"test/topic\" WHERE payload.x = 1",
- "actions": [
- "webhook:my_webhook",
- {
- "args": {
- "payload": "${payload}",
- "topic": "t/1"
}, - "function": "republish"
}, - {
- "function": "console"
}
], - "enable": true,
- "description": "Some description",
- "metadata": { }
}
通过 ID 更新集群里所有节点上的规则
id required | string Example: my_rule_id |
name | string Default: "" 规则名字 |
sql required | string 用于处理消息的 SQL 。 |
Array of rule_engine.user_provided_function (object) or rule_engine.builtin_action_console (object) or rule_engine.builtin_action_republish (object) or strings Default: [] 规则的动作列表。 | |
enable | boolean Default: true 启用或禁用规则引擎 |
description | string Default: "" 规则的描述 |
metadata | object 规则的元数据,不要手动修改 |
{- "name": "foo",
- "sql": "SELECT * FROM \"test/topic\" WHERE payload.x = 1",
- "actions": [
- "webhook:my_webhook",
- {
- "args": {
- "payload": "${payload}",
- "topic": "t/1"
}, - "function": "republish"
}, - {
- "function": "console"
}
], - "enable": true,
- "description": "Some description",
- "metadata": { }
}
{- "id": "293fb66f",
- "from": "t/#",
- "created_at": "2021-12-01T15:00:43.153+08:00",
- "name": "foo",
- "sql": "SELECT * FROM \"test/topic\" WHERE payload.x = 1",
- "actions": [
- "webhook:my_webhook",
- {
- "args": {
- "payload": "${payload}",
- "topic": "t/1"
}, - "function": "republish"
}, - {
- "function": "console"
}
], - "enable": true,
- "description": "Some description",
- "metadata": { }
}
更新规则引擎配置。
ignore_sys_message | boolean Default: true 当设置为“true”(默认)时,规则引擎将忽略发布到 $SYS 主题的消息。 |
jq_function_default_timeout | string Default: "10s" 规则引擎内建函数 |
{- "ignore_sys_message": true,
- "jq_function_default_timeout": "32s"
}
{- "ignore_sys_message": true,
- "jq_function_default_timeout": "32s"
}
更新指定网关的基础配置、和启用的状态。
注:认证、和监听器的配置更新需参考对应的 API 接口。
name required | string Example: stomp 网关名称. |
enable required | boolean Example: true 是否开启此网关 |
{- "code": "NOT_FOUND",
- "message": "string"
}
该接口会返回指定或所有网关的概览状态,
包括当前状态、连接数、监听器状态等。
status | string Enum: "running" "stopped" "unloaded" Example: status=running 通过网关状态筛选 |
[- {
- "name": "coap",
- "status": "unloaded"
}, - {
- "name": "exproto",
- "status": "unloaded"
}, - {
- "created_at": "2021-12-08T14:41:26.171+08:00",
- "current_connections": 0,
- "listeners": [
- {
- "id": "lwm2m:udp:default",
- "name": "default",
- "running": true,
- "type": "udp"
}
], - "max_connections": 1024000,
- "name": "lwm2m",
- "node_status": [
- {
- "current_connections": 0,
- "max_connections": 1024000,
- "node": "node@127.0.0.1",
- "status": "running"
}
], - "started_at": "2021-12-08T14:41:26.202+08:00",
- "status": "running"
}, - {
- "created_at": "2021-12-08T14:41:45.071+08:00",
- "current_connections": 0,
- "listeners": [
- {
- "id": "mqttsn:udp:default",
- "name": "default",
- "running": false,
- "type": "udp"
}
], - "max_connections": 1024000,
- "name": "mqttsn",
- "node_status": [
- {
- "current_connections": 0,
- "max_connections": 1024000,
- "node": "node@127.0.0.1",
- "status": "running"
}
], - "status": "stopped",
- "stopped_at": "2021-12-08T14:56:35.576+08:00"
}, - {
- "created_at": "2021-12-08T14:42:15.272+08:00",
- "current_connections": 0,
- "listeners": [
- {
- "id": "stomp:tcp:default",
- "name": "default",
- "running": true,
- "type": "tcp"
}
], - "max_connections": 1024000,
- "name": "stomp",
- "node_status": [
- {
- "current_connections": 0,
- "max_connections": 1024000,
- "node": "node@127.0.0.1",
- "status": "running"
}
], - "started_at": "2021-12-08T14:42:15.274+08:00",
- "status": "running"
}
]
获取网关配置详情
name required | string Example: stomp 网关名称. |
{- "connection_required": false,
- "enable": true,
- "enable_stats": true,
- "heartbeat": "30s",
- "idle_timeout": "30s",
- "listeners": [
- {
- "bind": "5683",
- "max_conn_rate": 1000,
- "max_connections": 1024000,
- "name": "default",
- "type": "udp"
}
], - "mountpoint": "coap/",
- "name": "coap",
- "notify_type": "qos",
- "publish_qos": "coap",
- "subscribe_qos": "coap"
}
更新指定网关的基础配置、和启用的状态。
注:认证、和监听器的配置更新需参考对应的 API 接口。
name required | string Example: stomp 网关名称. |
required | object (emqx_exproto_schema.exproto_grpc_server) |
required | object (emqx_exproto_schema.exproto_grpc_handler) |
mountpoint | string Default: "" 发布或订阅时,在所有主题前增加前缀字符串。 |
enable | boolean Default: true 是否启用该网关 |
enable_stats | boolean Default: true 是否开启客户端统计 |
idle_timeout | string Default: "30s" 客户端连接过程的空闲时间。该配置用于: |
object (gateway.clientinfo_override) |
{- "connection_required": false,
- "enable": true,
- "enable_stats": true,
- "heartbeat": "30s",
- "idle_timeout": "30s",
- "mountpoint": "coap2/",
- "notify_type": "qos",
- "publish_qos": "coap",
- "subscribe_qos": "coap"
}
{- "code": "BAD_REQUEST",
- "message": "string"
}
下载指定 trace 的日志文件
name required | string Example: EMQX-TRACE-1 [a-zA-Z0-9-_] |
node | string Example: node=emqx@127.0.0.1 指定从哪个节点获取 trace 文件内容。 |
{- "code": "NOT_FOUND",
- "message": "string"
}
[- {
- "name": "EMQX-TRACE-1",
- "type": "clientid",
- "topic": "/dev/#",
- "clientid": "dev-001",
- "ip_address": "127.0.0.1",
- "status": "running",
- "payload_encode": "hex",
- "start_at": "2021-11-04T18:17:38+08:00",
- "end_at": "2021-11-05T18:17:38+08:00",
- "log_size": [
- {
- "node": "emqx@127.0.0.1",
- "size": 1024
}
]
}
]
创建 trace
name required | string Unique name of the trace. Only ascii letters in a-z, A-Z, 0-9 and underscore '_' are allowed. |
type required | string Enum: "clientid" "topic" "ip_address" 过滤器类型 |
topic | string 如果过滤器类型为 'topic' 则该字段可以指定用于匹配的 MQTT 主题或主题过滤器。 |
clientid | string 如果过滤器类型为 'clientid' 则该字段可以指定用于匹配的 MQTT 客户端 ID。 |
ip_address | string 如果过滤器类型为 'ip_address' 则该字段可以指定用于匹配的客户端 IP 地址。 |
payload_encode | string Default: "text" Enum: "hex" "text" "hidden" Determine the format of the payload format in the trace file. |
integer or string 时间戳格式,rfc3339 或者 epoch second | |
integer or string 时间戳格式,rfc3339 或者 epoch second |
{- "name": "EMQX-TRACE-1",
- "type": "clientid",
- "topic": "/dev/#",
- "clientid": "dev-001",
- "ip_address": "127.0.0.1",
- "payload_encode": "hex",
- "start_at": "2021-11-04T18:17:38+08:00",
- "end_at": "2021-11-05T18:17:38+08:00"
}
{- "name": "EMQX-TRACE-1",
- "type": "clientid",
- "topic": "/dev/#",
- "clientid": "dev-001",
- "ip_address": "127.0.0.1",
- "status": "running",
- "payload_encode": "hex",
- "start_at": "2021-11-04T18:17:38+08:00",
- "end_at": "2021-11-05T18:17:38+08:00",
- "log_size": [
- {
- "node": "emqx@127.0.0.1",
- "size": 1024
}
]
}
查看 trace
name required | string Example: EMQX-TRACE-1 [a-zA-Z0-9-_] |
bytes | integer [ 0 .. 2147483647 ] Default: 1000 单个 HTTP 相应中包含 trace 日志的字节数。 |
position | integer Default: 0 指定从该偏移量开始读取指定的 trace 日志文件。 |
node | string Example: node=emqx@127.0.0.1 指定从哪个节点获取 trace 文件内容。 |
{- "items": "TEXT-LOG-ITEMS",
- "meta": {
- "bytes": 1000,
- "position": 0
}
}
停止指定的 trace
name required | string Example: EMQX-TRACE-1 [a-zA-Z0-9-_] |
{- "name": "EMQX-TRACE-1",
- "type": "clientid",
- "topic": "/dev/#",
- "clientid": "dev-001",
- "ip_address": "127.0.0.1",
- "status": "running",
- "payload_encode": "hex",
- "start_at": "2021-11-04T18:17:38+08:00",
- "end_at": "2021-11-05T18:17:38+08:00",
- "log_size": [
- {
- "node": "emqx@127.0.0.1",
- "size": 1024
}
]
}
创建 Dashboard 用户
username | string <= 100 characters Dashboard 用户名 |
password | string <= 100 characters Dashboard 密码 |
description | string Dashboard 用户描述 |
{- "username": "admin",
- "password": "public",
- "description": "administrator"
}
{- "username": "admin",
- "description": "administrator"
}
获取 Dashboard 认证 Token。
username | string <= 100 characters Dashboard 用户名 |
password | string <= 100 characters Dashboard 密码 |
{- "username": "admin",
- "password": "public"
}
{- "token": "string",
- "version": "5.0.0",
- "license": {
- "edition": "opensource"
}
}
更新 Dashboard 用户描述
username required | string Example: admin Dashboard 用户名 |
description | string Dashboard 用户描述 |
{- "description": "administrator"
}
{- "username": "admin",
- "description": "administrator"
}
更改 Dashboard 用户密码
username required | string Example: admin Dashboard 用户名 |
old_pwd | string 旧密码 |
new_pwd | string 新密码 |
{- "old_pwd": "string",
- "new_pwd": "string"
}
{- "code": "BAD_REQUEST",
- "message": "string"
}
Dashboard 用户登出
username | string <= 100 characters Dashboard 用户名 |
{- "username": "admin"
}
{- "code": "BAD_USERNAME_OR_PWD",
- "message": "string"
}
列出所有节点上的指定类型的监听器
type | string Enum: "tcp" "ssl" "ws" "wss" "quic" Example: type=tcp Listener type |
[- {
- "acceptors": 16,
- "bind": "0.0.0.0:1884",
- "enable": true,
- "id": "tcp:demo",
- "name": "demo",
- "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 100,
- "max_connections": 1024000,
- "running": true
}
}, - {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 101,
- "max_connections": 1024000,
- "running": true
}
}
], - "number": 2,
- "status": {
- "current_connections": 201,
- "max_connections": 2048000,
- "running": true
}, - "type": "tcp"
}, - {
- "acceptors": 32,
- "bind": "0.0.0.0:1883",
- "enable": true,
- "id": "tcp:default",
- "name": "default",
- "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 200,
- "max_connections": "infinity",
- "running": true
}
}, - {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 301,
- "max_connections": "infinity",
- "running": true
}
}
], - "number": 2,
- "status": {
- "current_connections": 501,
- "max_connections": "infinity",
- "running": true
}, - "type": "tcp"
}
]
在所有节点上创建指定的监听器
type required | string Value: "quic" Listener type |
running | boolean Listener status |
name required | string Listener name |
current_connections | integer >= 0 Current connections |
ciphers | Array of strings Default: ["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256","TLS_CHACHA20_POLY1305_SHA256"] 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 |
object (broker.listener_quic_ssl_opts) | |
enable | boolean Default: true 启停监听器。 |
bind required | string Default: 14567 监听套接字的 IP 地址和端口。 |
acceptors | integer >= 1 Default: 16 监听器接收池的大小。 |
integer or string Default: "infinity" 监听器允许的最大并发连接数。 | |
mountpoint | string Default: "" 发布或订阅时,请在所有主题前面加上 mountpoint 字符串。 |
enable_authn | string Default: true Enum: true false "quick_deny_anonymous" 配置 |
max_conn_rate | string Maximum connection rate. |
messages_rate | string Messages publish rate. |
bytes_rate | string Data publish rate. |
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "0.0.0.0:1884",
- "current_connections": 10240,
- "max_connections": 204800,
- "mountpoint": "/",
- "name": "demo",
- "proxy_protocol": false,
- "proxy_protocol_timeout": "3s",
- "running": true,
- "tcp_options": {
- "active_n": 100,
- "backlog": 1024,
- "buffer": "4KB",
- "high_watermark": "1MB",
- "nodelay": false,
- "reuseaddr": true,
- "send_timeout": "15s",
- "send_timeout_close": true
}, - "type": "tcp"
}
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "0.0.0.0:1884",
- "current_connections": 10240,
- "id": "tcp:demo",
- "max_connections": 204800,
- "mountpoint": "/",
- "proxy_protocol": false,
- "proxy_protocol_timeout": "3s",
- "running": true,
- "tcp_options": {
- "active_n": 100,
- "backlog": 1024,
- "buffer": "4KB",
- "high_watermark": "1MB",
- "nodelay": false,
- "reuseaddr": true,
- "send_timeout": "15s",
- "send_timeout_close": true
}, - "type": "tcp"
}
获取指定ID的监听器
id required | string Example: tcp:demo Listener id |
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "0.0.0.0:1884",
- "current_connections": 10240,
- "id": "tcp:demo",
- "max_connections": 204800,
- "mountpoint": "/",
- "proxy_protocol": false,
- "proxy_protocol_timeout": "3s",
- "running": true,
- "tcp_options": {
- "active_n": 100,
- "backlog": 1024,
- "buffer": "4KB",
- "high_watermark": "1MB",
- "nodelay": false,
- "reuseaddr": true,
- "send_timeout": "15s",
- "send_timeout_close": true
}, - "type": "tcp"
}
为集群中所有的节点更新指定ID的监听器
id required | string Example: tcp:demo Listener id |
type required | string Value: "wss" Listener type |
running | boolean Listener status |
id required | string Listener id |
current_connections | integer >= 0 Current connections |
bind | string Default: 8084 监听套接字的 IP 地址和端口。 |
enable | boolean Default: true 启停监听器。 |
acceptors | integer >= 1 Default: 16 监听器接收池的大小。 |
integer or string Default: "infinity" 监听器允许的最大并发连接数。 | |
mountpoint | string Default: "" 发布或订阅时,请在所有主题前面加上 mountpoint 字符串。 |
enable_authn | string Default: true Enum: true false "quick_deny_anonymous" 配置 |
max_conn_rate | string Maximum connection rate. |
messages_rate | string Messages publish rate. |
bytes_rate | string Data publish rate. |
access_rules | Array of strings Default: ["allow all"] 此监听器的访问控制规则。 |
proxy_protocol | boolean Default: false 如果EMQX集群部署在 HAProxy 或 Nginx 之后,请启用代理协议 V1/2 |
proxy_protocol_timeout | string Default: "3s" 代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX将关闭TCP连接。 |
Array of authn.scram (object) or authn.jwt_jwks (object) or authn.jwt_public_key (object) or authn.jwt_hmac (object) or authn.http_post (object) or authn.http_get (object) or authn.redis_sentinel (object) or authn.redis_cluster (object) or authn.redis_single (object) or authn.mongo_sharded (object) or authn.mongo_rs (object) or authn.mongo_single (object) or authn.postgresql (object) or authn.mysql (object) or authn.builtin_db (object) Default: [] Default authentication configs for all MQTT listeners.
When a chain is configured, the login credentials are checked against the backends per the configured order, until an 'allow' or 'deny' decision can be made. If there is no decision after a full chain exhaustion, the login is rejected. | |
object (broker.tcp_opts) | |
object (broker.listener_wss_opts) | |
object (broker.ws_opts) |
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "0.0.0.0:1884",
- "current_connections": 10240,
- "id": "tcp:demo",
- "max_connections": 204800,
- "mountpoint": "/",
- "proxy_protocol": false,
- "proxy_protocol_timeout": "3s",
- "running": true,
- "tcp_options": {
- "active_n": 100,
- "backlog": 1024,
- "buffer": "4KB",
- "high_watermark": "1MB",
- "nodelay": false,
- "reuseaddr": true,
- "send_timeout": "15s",
- "send_timeout_close": true
}, - "type": "tcp"
}
{- "acceptors": 16,
- "access_rules": [
- "allow all"
], - "bind": "0.0.0.0:1884",
- "current_connections": 10240,
- "id": "tcp:demo",
- "max_connections": 204800,
- "mountpoint": "/",
- "proxy_protocol": false,
- "proxy_protocol_timeout": "3s",
- "running": true,
- "tcp_options": {
- "active_n": 100,
- "backlog": 1024,
- "buffer": "4KB",
- "high_watermark": "1MB",
- "nodelay": false,
- "reuseaddr": true,
- "send_timeout": "15s",
- "send_timeout_close": true
}, - "type": "tcp"
}
[- {
- "enable": false,
- "ids": [
- "tcp:demo"
], - "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 11,
- "max_connections": 1024000,
- "running": true
}
}, - {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 10,
- "max_connections": 1024000,
- "running": true
}
}
], - "status": {
- "current_connections": 21,
- "max_connections": 2048000,
- "running": true
}, - "type": "tcp"
}, - {
- "enable": false,
- "ids": [
- "ssl:default"
], - "node_status": [
- {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 31,
- "max_connections": "infinity",
- "running": true
}
}, - {
- "node": "emqx@127.0.0.1",
- "status": {
- "current_connections": 40,
- "max_connections": "infinity",
- "running": true
}
}
], - "status": {
- "current_connections": 71,
- "max_connections": "infinity",
- "running": true
}, - "type": "ssl"
}
]
获取指定网关认证器的配置
当网关或认证未启用时,返回 404。
name required | string Example: stomp 网关名称. |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
为指定网关开启认证器实现客户端认证的功能。
当未配置认证器或关闭认证器时,则认为允许所有客户端的连接。
注:在网关中仅支持添加一个认证器,而不是像 MQTT 一样允许配置多个认证器构成认证链。
name required | string Example: stomp 网关名称. |
use_jwks required | string Value: true 是否使用 JWKS。 |
endpoint required | string JWKS 端点, 它是一个以 JWKS 格式返回服务端的公钥集的只读端点。 |
pool_size | integer >= 1 Default: 8 桥接远端服务时使用的连接池大小。 |
refresh_interval | integer Default: 300 JWKS 刷新间隔。 |
object (broker.ssl_client_opts) | |
mechanism required | string Value: "jwt" 认证机制。 |
acl_claim_name | string Default: "acl" JWT claim name to use for getting ACL rules. |
verify_claims | Array of strings Default: [] 需要验证的自定义声明列表,它是一个名称/值对列表。 |
from | string Default: "password" Enum: "username" "password" 指定客户端连接请求中 JWT 的位置;可选值: password、 username(分别对应于 MQTT 客户端 CONNECT 报文中的 Password 和 Username 字段) |
enable | boolean Default: true 设为 |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
更新指定网关认证器的配置,或停用认证器。
name required | string Example: stomp 网关名称. |
use_jwks required | string Value: true 是否使用 JWKS。 |
endpoint required | string JWKS 端点, 它是一个以 JWKS 格式返回服务端的公钥集的只读端点。 |
pool_size | integer >= 1 Default: 8 桥接远端服务时使用的连接池大小。 |
refresh_interval | integer Default: 300 JWKS 刷新间隔。 |
object (broker.ssl_client_opts) | |
mechanism required | string Value: "jwt" 认证机制。 |
acl_claim_name | string Default: "acl" JWT claim name to use for getting ACL rules. |
verify_claims | Array of strings Default: [] 需要验证的自定义声明列表,它是一个名称/值对列表。 |
from | string Default: "password" Enum: "username" "password" 指定客户端连接请求中 JWT 的位置;可选值: password、 username(分别对应于 MQTT 客户端 CONNECT 报文中的 Password 和 Username 字段) |
enable | boolean Default: true 设为 |
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
{- "algorithm": "hmac-based",
- "mechanism": "jwt",
- "secret": "mysecret",
- "secret_base64_encoded": false,
- "use_jwks": false,
- "verify_claims": {
- "username": "${username}"
}
}
导入用户(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
filename | string <binary> |
{- "code": "BAD_REQUEST",
- "message": "string"
}
获取用户列表(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
like_user_id | string Example: like_user_id=test_ 使用用户 ID (username 或 clientid)模糊搜索,仅支持按子串的方式进行搜索。 |
is_superuser | boolean 是否是超级用户 |
{- "data": [
- {
- "user_id": "user1"
}, - {
- "is_superuser": true,
- "user_id": "user2"
}
], - "meta": {
- "count": 300,
- "limit": 20,
- "page": 0
}
}
添加用户(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
user_id required | string |
password required | string |
is_superuser | boolean Default: false |
{- "password": "******",
- "user_id": "user1"
}
{- "regular_user": {
- "summary": "Regular user",
- "value": {
- "user_id": "user1"
}
}, - "super_user": {
- "summary": "Superuser",
- "value": {
- "is_superuser": true,
- "user_id": "user2"
}
}
}
删除用户(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
uid required | string Example: test_username 用户 ID |
{- "code": "BAD_REQUEST",
- "message": "string"
}
获取用户信息(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
uid required | string Example: test_username 用户 ID |
{- "regular_user": {
- "summary": "Regular user",
- "value": {
- "user_id": "user1"
}
}, - "super_user": {
- "summary": "Superuser",
- "value": {
- "is_superuser": true,
- "user_id": "user2"
}
}
}
更新用户信息(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
uid required | string Example: test_username 用户 ID |
password required | string |
is_superuser | boolean Default: false |
{- "password": "******"
}
{- "regular_user": {
- "summary": "Regular user",
- "value": {
- "user_id": "user1"
}
}, - "super_user": {
- "summary": "Superuser",
- "value": {
- "is_superuser": true,
- "user_id": "user2"
}
}
}
导入用户(仅支持 built_in_database 类型的认证器)
name required | string Example: stomp 网关名称. |
id required | string Example: stomp:tcp:def 监听器 ID |
filename | string <binary> |
{- "code": "BAD_REQUEST",
- "message": "string"
}
发送 CoAP 消息到指定客户端
clientid required | string |
token | string 消息 Token, 可以为空 |
method | string Enum: "get" "put" "post" "delete" 请求 Method 类型 |
timeout | string 请求超时时间 |
content_type | string Enum: "text/plain" "application/json" "application/octet-stream" Payload 类型 |
payload | string Payload 内容 |
{- "token": "string",
- "method": "get",
- "timeout": "32s",
- "content_type": "text/plain",
- "payload": "string"
}
{- "id": 0,
- "token": "string",
- "method": "string",
- "payload": "string"
}
查看保留消息列表
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
{- "data": [
- {
- "msgid": "string",
- "topic": "string",
- "qos": 0,
- "publish_at": "string",
- "from_clientid": "string",
- "from_username": "string"
}
], - "meta": {
- "page": 1,
- "limit": 50,
- "count": 0,
- "hasnext": true
}
}
通过不带通配符的主题查看对应的保留消息
topic required | string 主题 |
{- "payload": "string",
- "msgid": "string",
- "topic": "string",
- "qos": 0,
- "publish_at": "string",
- "from_clientid": "string",
- "from_username": "string"
}
{- "enable": true,
- "msg_expiry_interval": "32s",
- "msg_clear_interval": "32s",
- "max_payload_size": "32MB",
- "stop_publish_clear_msg": false,
- "delivery_rate": "1000/s",
- "backend": {
- "type": "built_in_database",
- "storage_type": "ram",
- "max_retained_messages": 0,
- "index_specs": [
- [
- 2,
- 4
], - [
- 1,
- 3
]
]
}
}
更新配置
enable | boolean Default: true 是否开启消息保留功能 |
msg_expiry_interval | string Default: "0s" 消息保留时间。0 代表永久保留 |
msg_clear_interval | string Default: "0s" 消息清理间隔。0 代表不进行清理 |
max_payload_size | string Default: "1MB" 消息大小最大值 |
stop_publish_clear_msg | boolean Default: false 是否不发送保留消息的清理消息,在 MQTT 5.0 中如果一条保留消息的消息体为空,则会清除掉之前存储 |
delivery_rate | string The maximum rate of delivering retained messages |
object (retainer.mnesia_config) |
{- "enable": true,
- "msg_expiry_interval": "32s",
- "msg_clear_interval": "32s",
- "max_payload_size": "32MB",
- "stop_publish_clear_msg": false,
- "delivery_rate": "1000/s",
- "backend": {
- "type": "built_in_database",
- "storage_type": "ram",
- "max_retained_messages": 0,
- "index_specs": [
- [
- 2,
- 4
], - [
- 1,
- 3
]
]
}
}
{- "enable": true,
- "msg_expiry_interval": "32s",
- "msg_clear_interval": "32s",
- "max_payload_size": "32MB",
- "stop_publish_clear_msg": false,
- "delivery_rate": "1000/s",
- "backend": {
- "type": "built_in_database",
- "storage_type": "ram",
- "max_retained_messages": 0,
- "index_specs": [
- [
- 2,
- 4
], - [
- 1,
- 3
]
]
}
}
列出当前激活的告警或历史告警,由查询参数决定。
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
activated | boolean 用于指定查询的告警类型, |
{- "data": [
- {
- "node": "emqx@127.0.0.1",
- "name": "high_system_memory_usage",
- "message": "System memory usage is higher than 70%",
- "details": {
- "high_watermark": 70
}, - "duration": 297056,
- "activate_at": "2021-10-25T11:52:52.548+08:00",
- "deactivate_at": "2021-10-31T10:52:52.548+08:00"
}
], - "meta": {
- "page": 1,
- "limit": 50,
- "count": 0,
- "hasnext": true
}
}
列出订阅
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
node | string Example: node=emqx@127.0.0.1 Node name |
clientid | string Client ID |
qos | integer [ 0 .. 2 ] Example: qos=0 QoS |
topic | string Topic, url encoding |
match_topic | string Match topic string, url encoding |
share_group | string Shared subscription group name |
[- {
- "node": "emqx@127.0.0.1",
- "topic": "testtopic/1",
- "clientid": "emqx_clientid_xx128cdhfc",
- "qos": 0,
- "nl": 0,
- "rap": 0,
- "rh": 0
}
]
API 错误码
code required | string Enum: "BAD_USERNAME_OR_PWD" "BAD_API_KEY_OR_SECRET" "BAD_REQUEST" "NOT_MATCH" "ALREADY_EXISTS" "BAD_CONFIG_SCHEMA" "BAD_LISTENER_ID" "BAD_NODE_NAME" "BAD_RPC" "BAD_TOPIC" "EXCEED_LIMIT" "INVALID_PARAMETER" "CONFLICT" "NO_DEFAULT_VALUE" "DEPENDENCY_EXISTS" "MESSAGE_ID_SCHEMA_ERROR" "INVALID_ID" "MESSAGE_ID_NOT_FOUND" "NOT_FOUND" "CLIENTID_NOT_FOUND" "CLIENT_NOT_FOUND" "RESOURCE_NOT_FOUND" "TOPIC_NOT_FOUND" "USER_NOT_FOUND" "INTERNAL_ERROR" "SERVICE_UNAVAILABLE" "SOURCE_ERROR" "UPDATE_FAILED" "REST_FAILED" "CLIENT_NOT_RESPONSE" Example: BAD_USERNAME_OR_PWD API Error Codes |
{- "code": "string",
- "description": "string"
}
更新配置
enable | boolean Default: false 开启慢订阅 |
threshold | string Default: "500ms" 慢订阅统计的阈值 |
expire_interval | string Default: "300s" 慢订阅记录的有效时间 |
top_k_num | integer >= 1 Default: 10 慢订阅统计表的记录数量上限 |
stats_type | string Default: "whole" Enum: "whole" "internal" "response" 慢订阅的统计类型 |
{- "enable": false,
- "threshold": "32s",
- "expire_interval": "32s",
- "top_k_num": 10,
- "stats_type": "whole"
}
{- "enable": false,
- "threshold": "32s",
- "expire_interval": "32s",
- "top_k_num": 10,
- "stats_type": "whole"
}
查看慢订阅的统计数据
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
{- "data": [
- {
- "clientid": "string",
- "node": "string",
- "topic": "string",
- "timespan": 0,
- "last_update_time": 0
}
]
}
{- "name": "EMQX-API-KEY-1",
- "api_key": "a4697a5c75a769f6",
- "expired_at": "2021-12-05T02:01:34.186Z",
- "created_at": "2021-12-01T00:00:00.000Z",
- "desc": "Note",
- "enable": true,
- "expired": true
}
Create new api_key
name | string Unique and format by [a-zA-Z0-9-_] |
(integer or string) or string Default: "infinity" No longer valid datetime | |
desc | string |
enable | boolean Enable/Disable |
expired | boolean Expired |
{- "name": "EMQX-API-KEY-1",
- "expired_at": "2021-12-05T02:01:34.186Z",
- "desc": "Note",
- "enable": true,
- "expired": true
}
{- "name": "EMQX-API-KEY-1",
- "api_key": "a4697a5c75a769f6",
- "api_secret": "MzAyMjk3ODMwMDk0NjIzOTUxNjcwNzQ0NzQ3MTE2NDYyMDI",
- "expired_at": "2021-12-05T02:01:34.186Z",
- "created_at": "2021-12-01T00:00:00.000Z",
- "desc": "Note",
- "enable": true,
- "expired": true
}
Return the specific api_key
name required | string Example: EMQX-API-KEY-1 ^[A-Za-z]+[A-Za-z0-9-_]*$ |
{- "name": "EMQX-API-KEY-1",
- "api_key": "a4697a5c75a769f6",
- "expired_at": "2021-12-05T02:01:34.186Z",
- "created_at": "2021-12-01T00:00:00.000Z",
- "desc": "Note",
- "enable": true,
- "expired": true
}
Update the specific api_key
name required | string Example: EMQX-API-KEY-1 ^[A-Za-z]+[A-Za-z0-9-_]*$ |
(integer or string) or string Default: "infinity" No longer valid datetime | |
desc | string |
enable | boolean Enable/Disable |
expired | boolean Expired |
{- "expired_at": "2021-12-05T02:01:34.186Z",
- "desc": "Note",
- "enable": true,
- "expired": true
}
{- "name": "EMQX-API-KEY-1",
- "api_key": "a4697a5c75a769f6",
- "expired_at": "2021-12-05T02:01:34.186Z",
- "created_at": "2021-12-01T00:00:00.000Z",
- "desc": "Note",
- "enable": true,
- "expired": true
}
列出目前所有被封禁的客户端 ID、用户名和 IP 地址。
page | integer >= 1 Default: 1 Example: page=1 Page number of the results to fetch. |
limit | integer [ 1 .. 1000 ] Default: 100 Example: limit=50 Results per page(max 1000) |
{- "data": [
- {
- "as": "username",
- "who": "Banned name",
- "by": "mgmt_api",
- "reason": "Too many requests",
- "at": "2021-10-25T21:48:47+08:00",
- "until": "2021-10-25T21:53:47+08:00"
}
], - "meta": {
- "page": 1,
- "limit": 50,
- "count": 0,
- "hasnext": true
}
}
添加一个客户端 ID、用户名或者 IP 地址到黑名单。
as required | string Enum: "clientid" "username" "peerhost" 封禁方式,可以通过客户端 ID、用户名或者 IP 地址等方式进行封禁。 |
who required | string 封禁对象,具体的客户端 ID、用户名或者 IP 地址。 |
by | string 封禁的发起者。 |
reason | string 封禁原因,记录当前对象被封禁的原因。 |
integer or string 封禁的起始时间,格式为 rfc3339,默认为发起操作的时间。 | |
integer or string 封禁的结束时间,格式为 rfc3339,默认值为发起操作的时间 + 1 年。 |
{- "as": "username",
- "who": "Banned name",
- "by": "mgmt_api",
- "reason": "Too many requests",
- "at": "2021-10-25T21:48:47+08:00",
- "until": "2021-10-25T21:53:47+08:00"
}
{- "data": [
- {
- "as": "username",
- "who": "Banned name",
- "by": "mgmt_api",
- "reason": "Too many requests",
- "at": "2021-10-25T21:48:47+08:00",
- "until": "2021-10-25T21:53:47+08:00"
}
]
}
将一个客户端 ID、用户名或者 IP 地址从黑名单中删除。
as required | string Enum: "clientid" "username" "peerhost" Example: username 封禁方式,可以通过客户端 ID、用户名或者 IP 地址等方式进行封禁。 |
who required | string Example: Badass 封禁对象,具体的客户端 ID、用户名或者 IP 地址。 |
{- "code": "NOT_FOUND",
- "message": "string"
}