diff --git a/apps/emqx_dashboard/src/emqx_dashboard.app.src b/apps/emqx_dashboard/src/emqx_dashboard.app.src index bd022f226..02fbdfb74 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard.app.src +++ b/apps/emqx_dashboard/src/emqx_dashboard.app.src @@ -2,7 +2,7 @@ {application, emqx_dashboard, [ {description, "EMQX Web Dashboard"}, % strict semver, bump manually! - {vsn, "5.0.20"}, + {vsn, "5.0.21"}, {modules, []}, {registered, [emqx_dashboard_sup]}, {applications, [kernel, stdlib, mnesia, minirest, emqx, emqx_ctl]}, diff --git a/apps/emqx_dashboard/src/emqx_dashboard_error_code_api.erl b/apps/emqx_dashboard/src/emqx_dashboard_error_code_api.erl index 131b08313..47ba02ebf 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_error_code_api.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_error_code_api.erl @@ -20,6 +20,7 @@ -include_lib("emqx/include/http_api.hrl"). -include("emqx_dashboard.hrl"). -include_lib("typerefl/include/types.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). -export([ api_spec/0, @@ -50,7 +51,7 @@ schema("/error_codes") -> 'operationId' => error_codes, get => #{ security => [], - description => <<"API Error Codes">>, + description => ?DESC(error_codes), tags => [<<"Error Codes">>], responses => #{ 200 => hoconsc:array(hoconsc:ref(?MODULE, error_code)) @@ -62,7 +63,7 @@ schema("/error_codes/:code") -> 'operationId' => error_code, get => #{ security => [], - description => <<"API Error Codes">>, + description => ?DESC(error_codes_u), tags => [<<"Error Codes">>], parameters => [ {code, diff --git a/apps/emqx_dashboard/src/emqx_dashboard_monitor_api.erl b/apps/emqx_dashboard/src/emqx_dashboard_monitor_api.erl index c0e162b62..d86dffba0 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_monitor_api.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_monitor_api.erl @@ -6,6 +6,7 @@ -include("emqx_dashboard.hrl"). -include_lib("typerefl/include/types.hrl"). +-include_lib("hocon/include/hocon_types.hrl"). -behaviour(minirest_api). @@ -38,7 +39,7 @@ schema("/monitor") -> 'operationId' => monitor, get => #{ tags => [<<"Metrics">>], - desc => <<"List monitor data.">>, + description => ?DESC(list_monitor), parameters => [parameter_latest()], responses => #{ 200 => hoconsc:mk(hoconsc:array(hoconsc:ref(sampler)), #{}), @@ -51,7 +52,7 @@ schema("/monitor/nodes/:node") -> 'operationId' => monitor, get => #{ tags => [<<"Metrics">>], - desc => <<"List the monitor data on the node.">>, + description => ?DESC(list_monitor_node), parameters => [parameter_node(), parameter_latest()], responses => #{ 200 => hoconsc:mk(hoconsc:array(hoconsc:ref(sampler)), #{}), @@ -64,7 +65,7 @@ schema("/monitor_current") -> 'operationId' => monitor_current, get => #{ tags => [<<"Metrics">>], - desc => <<"Current status. Gauge and rate.">>, + description => ?DESC(current_status), responses => #{ 200 => hoconsc:mk(hoconsc:ref(sampler_current), #{}) } @@ -75,7 +76,7 @@ schema("/monitor_current/nodes/:node") -> 'operationId' => monitor_current, get => #{ tags => [<<"Metrics">>], - desc => <<"Node current status. Gauge and rate.">>, + description => ?DESC(current_status_node), parameters => [parameter_node()], responses => #{ 200 => hoconsc:mk(hoconsc:ref(sampler_current), #{}), diff --git a/apps/emqx_management/src/emqx_management.app.src b/apps/emqx_management/src/emqx_management.app.src index 34f3dd1fe..f51a83923 100644 --- a/apps/emqx_management/src/emqx_management.app.src +++ b/apps/emqx_management/src/emqx_management.app.src @@ -2,7 +2,7 @@ {application, emqx_management, [ {description, "EMQX Management API and CLI"}, % strict semver, bump manually! - {vsn, "5.0.21"}, + {vsn, "5.0.22"}, {modules, []}, {registered, [emqx_management_sup]}, {applications, [kernel, stdlib, emqx_plugins, minirest, emqx, emqx_ctl]}, diff --git a/apps/emqx_management/src/emqx_mgmt_api_api_keys.erl b/apps/emqx_management/src/emqx_mgmt_api_api_keys.erl index c39b11273..ba21adaa5 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_api_keys.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_api_keys.erl @@ -18,6 +18,7 @@ -behaviour(minirest_api). -include_lib("typerefl/include/types.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). -export([api_spec/0, fields/1, paths/0, schema/1, namespace/0]). -export([api_key/2, api_key_by_name/2]). @@ -36,14 +37,14 @@ schema("/api_key") -> #{ 'operationId' => api_key, get => #{ - description => "Return api_key list", + description => ?DESC(api_key_list), tags => ?TAGS, responses => #{ 200 => delete([api_secret], fields(app)) } }, post => #{ - description => "Create new api_key", + description => ?DESC(create_new_api_key), tags => ?TAGS, 'requestBody' => delete([created_at, api_key, api_secret], fields(app)), responses => #{ @@ -56,7 +57,7 @@ schema("/api_key/:name") -> #{ 'operationId' => api_key_by_name, get => #{ - description => "Return the specific api_key", + description => ?DESC(get_api_key), tags => ?TAGS, parameters => [hoconsc:ref(name)], responses => #{ @@ -65,7 +66,7 @@ schema("/api_key/:name") -> } }, put => #{ - description => "Update the specific api_key", + description => ?DESC(update_api_key), tags => ?TAGS, parameters => [hoconsc:ref(name)], 'requestBody' => delete([created_at, api_key, api_secret, name], fields(app)), @@ -75,7 +76,7 @@ schema("/api_key/:name") -> } }, delete => #{ - description => "Delete the specific api_key", + description => ?DESC(delete_api_key), tags => ?TAGS, parameters => [hoconsc:ref(name)], responses => #{ diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index 681c851bf..27dc8c492 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -20,6 +20,7 @@ -include_lib("typerefl/include/types.hrl"). -include_lib("emqx/include/emqx.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). -include_lib("emqx/include/logger.hrl"). @@ -101,7 +102,7 @@ schema("/clients") -> #{ 'operationId' => clients, get => #{ - description => <<"List clients">>, + description => ?DESC(list_clients), tags => ?TAGS, parameters => [ hoconsc:ref(emqx_dashboard_swagger, page), @@ -214,7 +215,7 @@ schema("/clients/:clientid") -> #{ 'operationId' => client, get => #{ - description => <<"Get clients info by client ID">>, + description => ?DESC(clients_info_from_id), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], responses => #{ @@ -225,7 +226,7 @@ schema("/clients/:clientid") -> } }, delete => #{ - description => <<"Kick out client by client ID">>, + description => ?DESC(kick_client_id), tags => ?TAGS, parameters => [ {clientid, hoconsc:mk(binary(), #{in => path})} @@ -242,7 +243,7 @@ schema("/clients/:clientid/authorization/cache") -> #{ 'operationId' => authz_cache, get => #{ - description => <<"Get client authz cache in the cluster.">>, + description => ?DESC(get_authz_cache), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], responses => #{ @@ -253,7 +254,7 @@ schema("/clients/:clientid/authorization/cache") -> } }, delete => #{ - description => <<"Clean client authz cache in the cluster.">>, + description => ?DESC(clean_authz_cache), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], responses => #{ @@ -268,7 +269,7 @@ schema("/clients/:clientid/subscriptions") -> #{ 'operationId' => subscriptions, get => #{ - description => <<"Get client subscriptions">>, + description => ?DESC(get_client_subs), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], responses => #{ @@ -285,7 +286,7 @@ schema("/clients/:clientid/subscribe") -> #{ 'operationId' => subscribe, post => #{ - description => <<"Subscribe">>, + description => ?DESC(subscribe), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], 'requestBody' => hoconsc:mk(hoconsc:ref(?MODULE, subscribe)), @@ -301,7 +302,7 @@ schema("/clients/:clientid/subscribe/bulk") -> #{ 'operationId' => subscribe_batch, post => #{ - description => <<"Subscribe">>, + description => ?DESC(subscribe_g), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], 'requestBody' => hoconsc:mk(hoconsc:array(hoconsc:ref(?MODULE, subscribe))), @@ -317,7 +318,7 @@ schema("/clients/:clientid/unsubscribe") -> #{ 'operationId' => unsubscribe, post => #{ - description => <<"Unsubscribe">>, + description => ?DESC(unsubscribe), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], 'requestBody' => hoconsc:mk(hoconsc:ref(?MODULE, unsubscribe)), @@ -333,7 +334,7 @@ schema("/clients/:clientid/unsubscribe/bulk") -> #{ 'operationId' => unsubscribe_batch, post => #{ - description => <<"Unsubscribe">>, + description => ?DESC(unsubscribe_g), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], 'requestBody' => hoconsc:mk(hoconsc:array(hoconsc:ref(?MODULE, unsubscribe))), @@ -349,7 +350,7 @@ schema("/clients/:clientid/keepalive") -> #{ 'operationId' => set_keepalive, put => #{ - description => <<"Set the online client keepalive by seconds">>, + description => ?DESC(set_keepalive_seconds), tags => ?TAGS, parameters => [{clientid, hoconsc:mk(binary(), #{in => path})}], 'requestBody' => hoconsc:mk(hoconsc:ref(?MODULE, keepalive)), diff --git a/apps/emqx_management/src/emqx_mgmt_api_cluster.erl b/apps/emqx_management/src/emqx_mgmt_api_cluster.erl index e74b6c362..ba185e369 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_cluster.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_cluster.erl @@ -39,7 +39,7 @@ schema("/cluster") -> #{ 'operationId' => cluster_info, get => #{ - description => "Get cluster info", + desc => ?DESC(get_cluster_info), tags => [<<"Cluster">>], responses => #{ 200 => [ @@ -54,7 +54,7 @@ schema("/cluster/:node/invite") -> #{ 'operationId' => invite_node, put => #{ - description => "Invite node to cluster", + desc => ?DESC(invite_node), tags => [<<"Cluster">>], parameters => [hoconsc:ref(node)], responses => #{ @@ -67,7 +67,7 @@ schema("/cluster/:node/force_leave") -> #{ 'operationId' => force_leave, delete => #{ - description => "Force leave node from cluster", + desc => ?DESC(force_remove_node), tags => [<<"Cluster">>], parameters => [hoconsc:ref(node)], responses => #{ diff --git a/apps/emqx_management/src/emqx_mgmt_api_configs.erl b/apps/emqx_management/src/emqx_mgmt_api_configs.erl index 1d691c536..14fb07497 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_configs.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_configs.erl @@ -67,8 +67,7 @@ schema("/configs") -> 'operationId' => configs, get => #{ tags => ?TAGS, - description => - <<"Get all the configurations of the specified node, including hot and non-hot updatable items.">>, + description => ?DESC(get_conf_node), parameters => [ {node, hoconsc:mk( @@ -77,8 +76,7 @@ schema("/configs") -> in => query, required => false, example => <<"emqx@127.0.0.1">>, - desc => - <<"Node's name: If you do not fill in the fields, this node will be used by default.">> + description => ?DESC(node_name) } )} ], @@ -95,12 +93,7 @@ schema("/configs_reset/:rootname") -> 'operationId' => config_reset, post => #{ tags => ?TAGS, - description => - << - "Reset the config entry specified by the query string parameter `conf_path`.
" - "- For a config entry that has default value, this resets it to the default value;\n" - "- For a config entry that has no default value, an error 400 will be returned" - >>, + description => ?DESC(rest_conf_query), %% We only return "200" rather than the new configs that has been changed, as %% the schema of the changed configs is depends on the request parameter %% `conf_path`, it cannot be defined here. @@ -134,12 +127,12 @@ schema("/configs/global_zone") -> 'operationId' => global_zone_configs, get => #{ tags => ?TAGS, - description => <<"Get the global zone configs">>, + description => ?DESC(get_global_zone_configs), responses => #{200 => Schema} }, put => #{ tags => ?TAGS, - description => <<"Update globbal zone configs">>, + description => ?DESC(update_globar_zone_configs), 'requestBody' => Schema, responses => #{ 200 => Schema, @@ -153,7 +146,7 @@ schema("/configs/limiter") -> 'operationId' => limiter, get => #{ tags => ?TAGS, - description => <<"Get the node-level limiter configs">>, + description => ?DESC(get_node_level_limiter_congigs), responses => #{ 200 => hoconsc:mk(hoconsc:ref(emqx_limiter_schema, limiter)), 404 => emqx_dashboard_swagger:error_codes(['NOT_FOUND'], <<"config not found">>) @@ -161,7 +154,7 @@ schema("/configs/limiter") -> }, put => #{ tags => ?TAGS, - description => <<"Update the node-level limiter configs">>, + description => ?DESC(update_node_level_limiter_congigs), 'requestBody' => hoconsc:mk(hoconsc:ref(emqx_limiter_schema, limiter)), responses => #{ 200 => hoconsc:mk(hoconsc:ref(emqx_limiter_schema, limiter)), @@ -172,15 +165,22 @@ schema("/configs/limiter") -> }; schema(Path) -> {RootKey, {_Root, Schema}} = find_schema(Path), + GetDesc = iolist_to_binary([ + <<"Get the sub-configurations under *">>, + RootKey, + <<"*">> + ]), + PutDesc = iolist_to_binary([ + <<"Update the sub-configurations under *">>, + RootKey, + <<"*">> + ]), #{ 'operationId' => config, get => #{ tags => ?TAGS, - description => iolist_to_binary([ - <<"Get the sub-configurations under *">>, - RootKey, - <<"*">> - ]), + desc => GetDesc, + summary => GetDesc, responses => #{ 200 => Schema, 404 => emqx_dashboard_swagger:error_codes(['NOT_FOUND'], <<"config not found">>) @@ -188,11 +188,8 @@ schema(Path) -> }, put => #{ tags => ?TAGS, - description => iolist_to_binary([ - <<"Update the sub-configurations under *">>, - RootKey, - <<"*">> - ]), + desc => PutDesc, + summary => PutDesc, 'requestBody' => Schema, responses => #{ 200 => Schema, diff --git a/apps/emqx_management/src/emqx_mgmt_api_listeners.erl b/apps/emqx_management/src/emqx_mgmt_api_listeners.erl index 152ccc599..1f1dda5f2 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_listeners.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_listeners.erl @@ -66,7 +66,7 @@ schema("/listeners_status") -> 'operationId' => listener_type_status, get => #{ tags => [<<"listeners">>], - desc => <<"List all running node's listeners live status. group by listener type">>, + description => ?DESC(list_node_live_statuses), responses => #{ 200 => emqx_dashboard_swagger:schema_with_example( @@ -81,7 +81,7 @@ schema("/listeners") -> 'operationId' => list_listeners, get => #{ tags => [<<"listeners">>], - desc => <<"List all running node's listeners for the specified type.">>, + description => ?DESC(list_listeners), parameters => [ {type, ?HOCON( @@ -99,7 +99,7 @@ schema("/listeners") -> }, post => #{ tags => [<<"listeners">>], - desc => <<"Create the specified listener on all nodes.">>, + description => ?DESC(create_on_all_nodes), parameters => [], 'requestBody' => create_listener_schema(#{bind => true}), responses => #{ @@ -113,7 +113,7 @@ schema("/listeners/:id") -> 'operationId' => crud_listeners_by_id, get => #{ tags => [<<"listeners">>], - desc => <<"List all running node's listeners for the specified id.">>, + description => ?DESC(list_by_id), parameters => [?R_REF(listener_id)], responses => #{ 200 => listener_schema(#{bind => true}), @@ -122,7 +122,7 @@ schema("/listeners/:id") -> }, put => #{ tags => [<<"listeners">>], - desc => <<"Update the specified listener on all nodes.">>, + description => ?DESC(update_lisener), parameters => [?R_REF(listener_id)], 'requestBody' => listener_schema(#{bind => false}), responses => #{ @@ -133,7 +133,7 @@ schema("/listeners/:id") -> }, post => #{ tags => [<<"listeners">>], - desc => <<"Create the specified listener on all nodes.">>, + description => ?DESC(create_on_all_nodes), parameters => [?R_REF(listener_id)], 'requestBody' => listener_schema(#{bind => true}), responses => #{ @@ -144,7 +144,7 @@ schema("/listeners/:id") -> }, delete => #{ tags => [<<"listeners">>], - desc => <<"Delete the specified listener on all nodes.">>, + description => ?DESC(delete_on_all_nodes), parameters => [?R_REF(listener_id)], responses => #{ 204 => <<"Listener deleted">>, @@ -157,7 +157,7 @@ schema("/listeners/:id/start") -> 'operationId' => start_listeners_by_id, post => #{ tags => [<<"listeners">>], - desc => <<"Start the listener on all nodes.">>, + description => ?DESC(start_on_all_nodes), parameters => [ ?R_REF(listener_id) ], @@ -172,7 +172,7 @@ schema("/listeners/:id/stop") -> 'operationId' => stop_listeners_by_id, post => #{ tags => [<<"listeners">>], - desc => <<"Stop the listener on all nodes.">>, + description => ?DESC(stop_on_all_nodes), parameters => [ ?R_REF(listener_id) ], @@ -187,7 +187,7 @@ schema("/listeners/:id/restart") -> 'operationId' => restart_listeners_by_id, post => #{ tags => [<<"listeners">>], - desc => <<"Restart listeners on all nodes.">>, + description => ?DESC(restart_on_all_nodes), parameters => [ ?R_REF(listener_id) ], diff --git a/apps/emqx_management/src/emqx_mgmt_api_metrics.erl b/apps/emqx_management/src/emqx_mgmt_api_metrics.erl index 0fcc45d8e..7ad0777c7 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_metrics.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_metrics.erl @@ -19,6 +19,7 @@ -behaviour(minirest_api). -include_lib("typerefl/include/types.hrl"). +-include_lib("hocon/include/hocon_types.hrl"). -import(hoconsc, [mk/2, ref/2]). @@ -73,7 +74,7 @@ schema("/metrics") -> 'operationId' => metrics, get => #{ - description => <<"EMQX metrics">>, + description => ?DESC(emqx_metrics), tags => [<<"Metrics">>], parameters => [ diff --git a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl index ecf465f43..827fea44a 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl @@ -18,6 +18,7 @@ -behaviour(minirest_api). -include_lib("typerefl/include/types.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). -import(hoconsc, [mk/2, ref/1, ref/2, enum/1, array/1]). @@ -60,7 +61,7 @@ schema("/nodes") -> 'operationId' => nodes, get => #{ - description => <<"List EMQX nodes">>, + description => ?DESC(list_nodes), tags => [<<"Nodes">>], responses => #{ @@ -76,7 +77,7 @@ schema("/nodes/:node") -> 'operationId' => node, get => #{ - description => <<"Get node info">>, + description => ?DESC(get_node_info), tags => [<<"Nodes">>], parameters => [ref(node_name)], responses => @@ -94,7 +95,7 @@ schema("/nodes/:node/metrics") -> 'operationId' => node_metrics, get => #{ - description => <<"Get node metrics">>, + description => ?DESC(get_node_metrics), tags => [<<"Nodes">>], parameters => [ref(node_name)], responses => @@ -112,7 +113,7 @@ schema("/nodes/:node/stats") -> 'operationId' => node_stats, get => #{ - description => <<"Get node stats">>, + description => ?DESC(get_node_stats), tags => [<<"Nodes">>], parameters => [ref(node_name)], responses => diff --git a/apps/emqx_management/src/emqx_mgmt_api_stats.erl b/apps/emqx_management/src/emqx_mgmt_api_stats.erl index 5f4bbce65..b57565671 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_stats.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_stats.erl @@ -18,6 +18,7 @@ -behaviour(minirest_api). -include_lib("typerefl/include/types.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). -import( hoconsc, @@ -49,7 +50,7 @@ schema("/stats") -> 'operationId' => list, get => #{ - description => <<"EMQX stats">>, + description => ?DESC(emqx_stats), tags => [<<"Metrics">>], parameters => [ref(aggregate)], responses => diff --git a/apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl b/apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl index 1b69835f9..08a90e623 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl @@ -21,6 +21,7 @@ -include_lib("typerefl/include/types.hrl"). -include_lib("emqx/include/emqx.hrl"). -include_lib("emqx/include/emqx_mqtt.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). -export([ api_spec/0, @@ -58,7 +59,7 @@ schema("/subscriptions") -> #{ 'operationId' => subscriptions, get => #{ - description => <<"List subscriptions">>, + description => ?DESC(list_subs), tags => [<<"Subscriptions">>], parameters => parameters(), responses => #{ diff --git a/apps/emqx_management/src/emqx_mgmt_api_topics.erl b/apps/emqx_management/src/emqx_mgmt_api_topics.erl index 4100269e5..6b0e1f622 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_topics.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_topics.erl @@ -18,6 +18,7 @@ -include_lib("emqx/include/emqx.hrl"). -include_lib("typerefl/include/types.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). %% API -behaviour(minirest_api). @@ -51,7 +52,7 @@ schema("/topics") -> #{ 'operationId' => topics, get => #{ - description => <<"Topics list">>, + description => ?DESC(topic_list), tags => ?TAGS, parameters => [ topic_param(query), @@ -71,7 +72,7 @@ schema("/topics/:topic") -> #{ 'operationId' => topic, get => #{ - description => <<"Lookup topic info by name">>, + description => ?DESC(topic_info_by_name), tags => ?TAGS, parameters => [topic_param(path)], responses => #{ diff --git a/apps/emqx_management/src/emqx_mgmt_api_trace.erl b/apps/emqx_management/src/emqx_mgmt_api_trace.erl index 25cc2734f..331c62681 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_trace.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_trace.erl @@ -21,6 +21,7 @@ -include_lib("typerefl/include/types.hrl"). -include_lib("emqx/include/logger.hrl"). -include_lib("snabbkaffe/include/snabbkaffe.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). -export([ api_spec/0, @@ -73,14 +74,14 @@ schema("/trace") -> #{ 'operationId' => trace, get => #{ - description => "List all trace", + description => ?DESC(list_all), tags => ?TAGS, responses => #{ 200 => hoconsc:array(hoconsc:ref(trace)) } }, post => #{ - description => "Create new trace", + description => ?DESC(create_new), tags => ?TAGS, 'requestBody' => delete([status, log_size], fields(trace)), responses => #{ @@ -102,7 +103,7 @@ schema("/trace") -> } }, delete => #{ - description => "Clear all traces", + description => ?DESC(clear_all), tags => ?TAGS, responses => #{ 204 => <<"No Content">> @@ -113,7 +114,7 @@ schema("/trace/:name") -> #{ 'operationId' => delete_trace, delete => #{ - description => "Delete specified trace", + description => ?DESC(delete_trace), tags => ?TAGS, parameters => [hoconsc:ref(name)], responses => #{ @@ -126,7 +127,7 @@ schema("/trace/:name/stop") -> #{ 'operationId' => update_trace, put => #{ - description => "Stop trace by name", + description => ?DESC(stop_trace), tags => ?TAGS, parameters => [hoconsc:ref(name)], responses => #{ @@ -139,7 +140,7 @@ schema("/trace/:name/download") -> #{ 'operationId' => download_trace_log, get => #{ - description => "Download trace log by name", + description => ?DESC(download_log_by_name), tags => ?TAGS, parameters => [hoconsc:ref(name), hoconsc:ref(node)], responses => #{ @@ -161,7 +162,7 @@ schema("/trace/:name/log_detail") -> #{ 'operationId' => log_file_detail, get => #{ - description => "get trace log file's metadata, such as size, last update time", + description => ?DESC(get_trace_file_metadata), tags => ?TAGS, parameters => [hoconsc:ref(name)], responses => #{ @@ -174,7 +175,7 @@ schema("/trace/:name/log") -> #{ 'operationId' => stream_log_file, get => #{ - description => "view trace log", + description => ?DESC(view_trace_log), tags => ?TAGS, parameters => [ hoconsc:ref(name), @@ -204,9 +205,8 @@ schema("/trace/:name/log") -> fields(log_file_detail) -> fields(node) ++ [ - {size, hoconsc:mk(integer(), #{desc => "file size"})}, - {mtime, - hoconsc:mk(integer(), #{desc => "the modification and last access times of a file"})} + {size, hoconsc:mk(integer(), #{description => ?DESC(file_size)})}, + {mtime, hoconsc:mk(integer(), #{description => ?DESC(modification_date)})} ]; fields(trace) -> [ @@ -214,7 +214,7 @@ fields(trace) -> hoconsc:mk( binary(), #{ - desc => "Unique and format by [a-zA-Z0-9-_]", + description => ?DESC(format), validator => fun ?MODULE:validate_name/1, required => true, example => <<"EMQX-TRACE-1">> @@ -224,7 +224,7 @@ fields(trace) -> hoconsc:mk( hoconsc:enum([clientid, topic, ip_address]), #{ - desc => "" "Filter type" "", + description => ?DESC(filter_type), required => true, example => <<"clientid">> } @@ -233,7 +233,7 @@ fields(trace) -> hoconsc:mk( binary(), #{ - desc => "" "support mqtt wildcard topic." "", + description => ?DESC(support_wildcard), required => false, example => <<"/dev/#">> } @@ -242,7 +242,7 @@ fields(trace) -> hoconsc:mk( binary(), #{ - desc => "" "mqtt clientid." "", + description => ?DESC(mqtt_clientid), required => false, example => <<"dev-001">> } @@ -252,7 +252,7 @@ fields(trace) -> hoconsc:mk( binary(), #{ - desc => "client ip address", + description => ?DESC(client_ip_addess), required => false, example => <<"127.0.0.1">> } @@ -261,7 +261,7 @@ fields(trace) -> hoconsc:mk( hoconsc:enum([running, stopped, waiting]), #{ - desc => "trace status", + description => ?DESC(trace_status), required => false, example => running } @@ -283,7 +283,7 @@ fields(trace) -> hoconsc:mk( emqx_datetime:epoch_second(), #{ - desc => "rfc3339 timestamp or epoch second", + description => ?DESC(time_format), required => false, example => <<"2021-11-04T18:17:38+08:00">> } @@ -292,7 +292,7 @@ fields(trace) -> hoconsc:mk( emqx_datetime:epoch_second(), #{ - desc => "rfc3339 timestamp or epoch second", + description => ?DESC(time_format), required => false, example => <<"2021-11-05T18:17:38+08:00">> } @@ -301,7 +301,7 @@ fields(trace) -> hoconsc:mk( hoconsc:array(map()), #{ - desc => "trace log size", + description => ?DESC(trace_log_size), example => [#{<<"node">> => <<"emqx@127.0.0.1">>, <<"size">> => 1024}], required => false } @@ -326,7 +326,7 @@ fields(node) -> hoconsc:mk( binary(), #{ - desc => "Node name", + description => ?DESC(node_name), in => query, required => false, example => "emqx@127.0.0.1" @@ -341,7 +341,7 @@ fields(bytes) -> %% across different OS range(0, ?MAX_SINT32), #{ - desc => "Maximum number of bytes to send in response", + description => ?DESC(max_response_bytes), in => query, required => false, default => 1000, @@ -356,7 +356,7 @@ fields(position) -> hoconsc:mk( integer(), #{ - desc => "Offset from the current trace position.", + description => ?DESC(current_trace_offset), in => query, required => false, default => 0 diff --git a/apps/emqx_prometheus/src/emqx_prometheus.app.src b/apps/emqx_prometheus/src/emqx_prometheus.app.src index f94b22d81..a0d4dee04 100644 --- a/apps/emqx_prometheus/src/emqx_prometheus.app.src +++ b/apps/emqx_prometheus/src/emqx_prometheus.app.src @@ -2,7 +2,7 @@ {application, emqx_prometheus, [ {description, "Prometheus for EMQX"}, % strict semver, bump manually! - {vsn, "5.0.10"}, + {vsn, "5.0.11"}, {modules, []}, {registered, [emqx_prometheus_sup]}, {applications, [kernel, stdlib, prometheus, emqx, emqx_management]}, diff --git a/apps/emqx_prometheus/src/emqx_prometheus_api.erl b/apps/emqx_prometheus/src/emqx_prometheus_api.erl index d3bfc0224..6fb57483d 100644 --- a/apps/emqx_prometheus/src/emqx_prometheus_api.erl +++ b/apps/emqx_prometheus/src/emqx_prometheus_api.erl @@ -19,6 +19,7 @@ -behaviour(minirest_api). -include("emqx_prometheus.hrl"). +-include_lib("hocon/include/hoconsc.hrl"). -import(hoconsc, [ref/2]). @@ -50,14 +51,14 @@ schema("/prometheus") -> 'operationId' => prometheus, get => #{ - description => <<"Get Prometheus config info">>, + description => ?DESC(get_prom_conf_info), tags => ?TAGS, responses => #{200 => prometheus_config_schema()} }, put => #{ - description => <<"Update Prometheus config">>, + description => ?DESC(update_prom_conf_info), tags => ?TAGS, 'requestBody' => prometheus_config_schema(), responses => @@ -69,7 +70,7 @@ schema("/prometheus/stats") -> 'operationId' => stats, get => #{ - description => <<"Get Prometheus Data">>, + description => ?DESC(get_prom_data), tags => ?TAGS, security => [], responses => diff --git a/changes/ce/fix-10724.en.md b/changes/ce/fix-10724.en.md new file mode 100644 index 000000000..a38a9e842 --- /dev/null +++ b/changes/ce/fix-10724.en.md @@ -0,0 +1 @@ +A summary has been added for all endpoints in the HTTP API documentation (accessible at "http://emqx_host_name:18083/api-docs"). diff --git a/rel/i18n/emqx_authn_api.hocon b/rel/i18n/emqx_authn_api.hocon index 07f9c6c3e..90240c4f4 100644 --- a/rel/i18n/emqx_authn_api.hocon +++ b/rel/i18n/emqx_authn_api.hocon @@ -2,42 +2,68 @@ emqx_authn_api { authentication_get.desc: """List authenticators for global authentication.""" +authentication_get.label: +"""List authenticators""" authentication_id_delete.desc: """Delete authenticator from global authentication chain.""" +authentication_id_delete.label: +"""Delete authenticator""" authentication_id_get.desc: """Get authenticator from global authentication chain.""" +authentication_id_get.label: +"""Get authenticator""" authentication_id_position_put.desc: """Move authenticator in global authentication chain.""" +authentication_id_position_put.label: +"""Move authenticator""" authentication_id_put.desc: """Update authenticator from global authentication chain.""" +authentication_id_put.label: +"""Update authenticator""" authentication_id_status_get.desc: """Get authenticator status from global authentication chain.""" +authentication_id_status_get.label: +"""Get authenticator status""" authentication_id_users_get.desc: """List users in authenticator in global authentication chain.""" +authentication_id_users_get.label: +"""List users in authenticator""" authentication_id_users_post.desc: """Create users for authenticator in global authentication chain.""" +authentication_id_users_post.label: +"""Create users for authenticator""" authentication_id_users_user_id_delete.desc: """Delete user in authenticator in global authentication chain.""" +authentication_id_users_user_id_delete.label: +"""Delete user in authenticator""" authentication_id_users_user_id_get.desc: """Get user from authenticator in global authentication chain.""" +authentication_id_users_user_id_get.label: +"""Get user from authenticator""" authentication_id_users_user_id_put.desc: """Update user in authenticator in global authentication chain.""" +authentication_id_users_user_id_put.label: +"""Update user in authenticator""" authentication_post.desc: """Create authenticator for global authentication.""" +authentication_post.label: +"""Create authenticator""" is_superuser.desc: """Is superuser""" +is_superuser.label: +"""Is superuser""" like_user_id.desc: """Fuzzy search user_id (username or clientid).""" @@ -47,50 +73,82 @@ like_user_id.label: listeners_listener_id_authentication_get.desc: """List authenticators for listener authentication.""" +listeners_listener_id_authentication_get.label: +"""List authenticators for listener""" listeners_listener_id_authentication_id_delete.desc: """Delete authenticator from listener authentication chain.""" +listeners_listener_id_authentication_id_delete.label: +"""Delete authenticator from listener""" listeners_listener_id_authentication_id_get.desc: """Get authenticator from listener authentication chain.""" +listeners_listener_id_authentication_id_get.label: +"""Get authenticator from listener""" listeners_listener_id_authentication_id_position_put.desc: """Move authenticator in listener authentication chain.""" +listeners_listener_id_authentication_id_position_put.label: +"""Move authenticator in listener""" listeners_listener_id_authentication_id_put.desc: """Update authenticator from listener authentication chain.""" +listeners_listener_id_authentication_id_put.label: +"""Update authenticator from listener""" listeners_listener_id_authentication_id_status_get.desc: """Get authenticator status from listener authentication chain.""" +listeners_listener_id_authentication_id_status_get.label: +"""Get authenticator status from listener""" listeners_listener_id_authentication_id_users_get.desc: """List users in authenticator in listener authentication chain.""" +listeners_listener_id_authentication_id_users_get.label: +"""List users in authenticator in listener""" listeners_listener_id_authentication_id_users_post.desc: """Create users for authenticator in listener authentication chain.""" +listeners_listener_id_authentication_id_users_post.label: +"""Create users for authenticator in listener""" listeners_listener_id_authentication_id_users_user_id_delete.desc: """Delete user in authenticator in listener authentication chain.""" +listeners_listener_id_authentication_id_users_user_id_delete.label: +"""Delete user in authenticator in listener""" listeners_listener_id_authentication_id_users_user_id_get.desc: """Get user from authenticator in listener authentication chain.""" +listeners_listener_id_authentication_id_users_user_id_get.label: +"""Get user from authenticator in listener""" listeners_listener_id_authentication_id_users_user_id_put.desc: """Update user in authenticator in listener authentication chain.""" +listeners_listener_id_authentication_id_users_user_id_put.label: +"""Update user in authenticator in listener""" listeners_listener_id_authentication_post.desc: """Create authenticator for listener authentication.""" +listeners_listener_id_authentication_post.label: +"""Create authenticator for listener""" param_auth_id.desc: """Authenticator ID.""" +param_auth_id.label: +"""Authenticator ID""" param_listener_id.desc: """Listener ID.""" +param_listener_id.label: +"""Listener ID""" param_position.desc: """Position of authenticator in chain. Possible values are 'front', 'rear', 'before:{other_authenticator}', 'after:{other_authenticator}'.""" +param_position.label: +"""Position of authenticator""" param_user_id.desc: """User ID.""" +param_user_id.label: +"""User ID""" } diff --git a/rel/i18n/emqx_authn_user_import_api.hocon b/rel/i18n/emqx_authn_user_import_api.hocon index f8fb1757c..3a97823df 100644 --- a/rel/i18n/emqx_authn_user_import_api.hocon +++ b/rel/i18n/emqx_authn_user_import_api.hocon @@ -2,8 +2,12 @@ emqx_authn_user_import_api { authentication_id_import_users_post.desc: """Import users into authenticator in global authentication chain.""" +authentication_id_import_users_post.label: +"""Global import users into authenticator""" listeners_listener_id_authentication_id_import_users_post.desc: """Import users into authenticator in listener authentication chain.""" +listeners_listener_id_authentication_id_import_users_post.label: +"""Import users into authenticator in listener""" } diff --git a/rel/i18n/emqx_authz_api_cache.hocon b/rel/i18n/emqx_authz_api_cache.hocon index 0789c1e71..f3e933d4b 100644 --- a/rel/i18n/emqx_authz_api_cache.hocon +++ b/rel/i18n/emqx_authz_api_cache.hocon @@ -2,5 +2,7 @@ emqx_authz_api_cache { authorization_cache_delete.desc: """Clean all authorization cache in the cluster.""" +authorization_cache_delete.label: +"""Clean authorization cache in cluster""" } diff --git a/rel/i18n/emqx_authz_api_mnesia.hocon b/rel/i18n/emqx_authz_api_mnesia.hocon index 4cfed2970..d0021c6a5 100644 --- a/rel/i18n/emqx_authz_api_mnesia.hocon +++ b/rel/i18n/emqx_authz_api_mnesia.hocon @@ -2,13 +2,11 @@ emqx_authz_api_mnesia { action.desc: """Authorized action (pub/sub/all)""" - action.label: """action""" clientid.desc: """ClientID""" - clientid.label: """clientid""" @@ -26,62 +24,87 @@ fuzzy_username.label: permission.desc: """Permission""" - permission.label: """permission""" rules_all_delete.desc: """Delete rules for 'all'""" +rules_all_delete.label: +"""Delete rules for 'all'""" rules_all_get.desc: """Show the list of rules for 'all'""" +rules_all_get.label: +"""Show rules for 'all'""" rules_all_post.desc: """Create/Update the list of rules for 'all'.""" +rules_all_post.label: +"""Update rules for 'all'""" rules_delete.desc: """Delete all rules for all 'users', 'clients' and 'all'""" +rules_delete.label: +"""Delete all rules""" topic.desc: """Rule on specific topic""" - topic.label: """topic""" user_clientid_delete.desc: """Delete rule for 'clientid'""" +user_clientid_delete.label: +"""Delete rule for 'clientid'""" user_clientid_get.desc: """Get rule for 'clientid'""" +user_clientid_get.label: +"""Get rule for 'clientid'""" user_clientid_put.desc: """Set rule for 'clientid'""" +user_clientid_put.label: +"""Set rule for 'clientid'""" user_username_delete.desc: """Delete rule for 'username'""" +user_username_delete.label: +"""Delete rule for 'username'""" user_username_get.desc: """Get rule for 'username'""" +user_username_get.label: +"""Get rule for 'username'""" user_username_put.desc: """Set rule for 'username'""" +user_username_put.label: +"""Set rule for 'username'""" username.desc: """Username""" - username.label: """username""" users_clientid_get.desc: """Show the list of rules for clients""" +users_clientid_get.label: +"""Show rules for clients""" users_clientid_post.desc: """Add new rule for 'clientid'""" +users_clientid_post.label: +"""Add rule for 'clientid'""" users_username_get.desc: """Show the list of rules for users""" +users_username_get.label: +"""Show rules for users""" users_username_post.desc: """Add new rule for 'username'""" +users_username_post.label: +"""Add rule for 'username'""" } diff --git a/rel/i18n/emqx_authz_api_sources.hocon b/rel/i18n/emqx_authz_api_sources.hocon index 5d2dda69e..1257d9eb8 100644 --- a/rel/i18n/emqx_authz_api_sources.hocon +++ b/rel/i18n/emqx_authz_api_sources.hocon @@ -2,46 +2,56 @@ emqx_authz_api_sources { authorization_sources_get.desc: """List all authorization sources""" +authorization_sources_get.label: +"""List all authorization sources""" authorization_sources_post.desc: """Add a new source""" +authorization_sources_post.label: +"""Add a new source""" authorization_sources_type_delete.desc: """Delete source""" +authorization_sources_type_delete.label: +"""Delete source""" authorization_sources_type_get.desc: """Get a authorization source""" +authorization_sources_type_get.label: +"""Get a authorization source""" authorization_sources_type_move_post.desc: """Change the exection order of sources""" +authorization_sources_type_move_post.label: +"""Change order of sources""" authorization_sources_type_put.desc: """Update source""" +authorization_sources_type_put.label: +"""Update source""" authorization_sources_type_status_get.desc: """Get a authorization source""" +authorization_sources_type_status_get.label: +"""Get a authorization source""" source.desc: """Authorization source""" - source.label: """source""" source_config.desc: """Source config""" - source_config.label: """source_config""" source_type.desc: """Authorization type""" - source_type.label: """source_type""" sources.desc: """Authorization sources""" - sources.label: """sources""" diff --git a/rel/i18n/emqx_auto_subscribe_api.hocon b/rel/i18n/emqx_auto_subscribe_api.hocon index df8e87e1a..518878a50 100644 --- a/rel/i18n/emqx_auto_subscribe_api.hocon +++ b/rel/i18n/emqx_auto_subscribe_api.hocon @@ -2,11 +2,17 @@ emqx_auto_subscribe_api { list_auto_subscribe_api.desc: """Get auto subscribe topic list""" +list_auto_subscribe_api.label: +"""Get auto subscribe topics""" update_auto_subscribe_api.desc: """Update auto subscribe topic list""" +update_auto_subscribe_api.label: +"""Update auto subscribe topics""" update_auto_subscribe_api_response409.desc: """Auto Subscribe topics max limit""" +update_auto_subscribe_api_response409.label: +"""Auto Subscribe topics max limit""" } diff --git a/rel/i18n/emqx_dashboard_api.hocon b/rel/i18n/emqx_dashboard_api.hocon index 3e5bb6239..01fc6eb16 100644 --- a/rel/i18n/emqx_dashboard_api.hocon +++ b/rel/i18n/emqx_dashboard_api.hocon @@ -2,24 +2,36 @@ emqx_dashboard_api { change_pwd_api.desc: """Change dashboard user password""" +change_pwd_api.label: +"""Change dashboard user password""" create_user_api.desc: """Create dashboard user""" +create_user_api.label: +"""Create dashboard user""" create_user_api_success.desc: """Create dashboard user success""" +create_user_api_success.label: +"""Create dashboard user success""" delete_user_api.desc: """Delete dashboard user""" +delete_user_api.label: +"""Delete dashboard user""" license.desc: """EMQX License. opensource or enterprise""" list_users_api.desc: """Dashboard list users""" +list_users_api.label: +"""Dashboard list users""" login_api.desc: """Get Dashboard Auth Token.""" +login_api.label: +"""Get Dashboard Auth Token.""" login_failed401.desc: """Login failed. Bad username or password""" @@ -32,6 +44,8 @@ login_success.desc: logout_api.desc: """Dashboard user logout""" +logout_api.label: +"""Dashboard user logout""" new_pwd.desc: """New password""" @@ -47,6 +61,8 @@ token.desc: update_user_api.desc: """Update dashboard user description""" +update_user_api.label: +"""Update dashboard user description""" update_user_api200.desc: """Update dashboard user success""" diff --git a/rel/i18n/emqx_dashboard_error_code_api.hocon b/rel/i18n/emqx_dashboard_error_code_api.hocon new file mode 100644 index 000000000..835f200ab --- /dev/null +++ b/rel/i18n/emqx_dashboard_error_code_api.hocon @@ -0,0 +1,13 @@ +emqx_dashboard_error_code_api { + +error_codes.desc: +"""API Error Codes""" +error_codes.label: +"""API Error Codes""" + +error_codes_u.desc: +"""API Error Codes""" +error_codes_u.label: +"""API Error Codes""" + +} diff --git a/rel/i18n/emqx_dashboard_monitor_api.hocon b/rel/i18n/emqx_dashboard_monitor_api.hocon new file mode 100644 index 000000000..1d45c45ae --- /dev/null +++ b/rel/i18n/emqx_dashboard_monitor_api.hocon @@ -0,0 +1,23 @@ +emqx_dashboard_monitor_api { + +list_monitor.desc: +"""List monitor data.""" +list_monitor.label: +"""List monitor data.""" + +list_monitor_node.desc: +"""List the monitor data on the node.""" +list_monitor_node.label: +"""List the monitor data on the node.""" + +current_status.desc: +"""Current status. Gauge and rate.""" +current_status.label: +"""Current status. Gauge and rate.""" + +current_status_node.desc: +"""Node current status. Gauge and rate.""" +current_status_node.label: +"""Node current status. Gauge and rate.""" + +} diff --git a/rel/i18n/emqx_delayed_api.hocon b/rel/i18n/emqx_delayed_api.hocon index 62e0fd775..b891c618c 100644 --- a/rel/i18n/emqx_delayed_api.hocon +++ b/rel/i18n/emqx_delayed_api.hocon @@ -2,71 +2,117 @@ emqx_delayed_api { bad_msgid_format.desc: """Bad Message ID format""" +bad_msgid_format.label: +"""Bad Message ID format""" count.desc: """Count of delayed messages""" +count.label: +"""Count of delayed messages""" delayed_interval.desc: """Delayed interval(second)""" +delayed_interval.label: +"""Delayed interval""" delayed_remaining.desc: """Delayed remaining(second)""" +delayed_remaining.label: +"""Delayed remaining""" delete_api.desc: """Delete delayed message""" +delete_api.label: +"""Delete delayed message""" expected_at.desc: """Expect publish time, in RFC 3339 format""" +expected_at.label: +"""Expect publish time""" from_clientid.desc: """From ClientID""" +from_clientid.label: +"""From ClientID""" from_username.desc: """From Username""" +from_username.label: +"""From Username""" get_message_api.desc: """View delayed message""" +get_message_api.label: +"""View delayed message""" illegality_limit.desc: """Max limit illegality""" +illegality_limit.label: +"""Max limit illegality""" list_api.desc: """List delayed messages""" +list_api.label: +"""List delayed messages""" msgid.desc: """Delayed Message ID""" +msgid.label: +"""Delayed Message ID""" msgid_not_found.desc: """Message ID not found""" +msgid_not_found.label: +"""Message ID not found""" node.desc: """The node where message from""" +node.label: +"""Node where message from""" payload.desc: """Payload, base64 encoded. Payload will be set to 'PAYLOAD_TO_LARGE' if its length is larger than 2048 bytes""" +payload.label: +"""Payload""" publish_at.desc: """Clinet publish message time, in RFC 3339 format""" +publish_at.label: +"""Client publish message time""" qos.desc: """QoS""" +qos.label: +"""QoS""" topic.desc: """Topic""" +topic.label: +"""Topic""" update_api.desc: """Enable or disable delayed, set max delayed messages""" +update_api.label: +"""Enable or disable delayed""" update_success.desc: """Enable or disable delayed successfully""" +update_success.label: +"""Enable or disable delayed successfully""" view_limit.desc: """Page limit""" +view_limit.label: +"""Page limit""" view_page.desc: """View page""" +view_page.label: +"""View page""" view_status_api.desc: """Get delayed status""" +view_status_api.label: +"""Get delayed status""" } diff --git a/rel/i18n/emqx_exhook_api.hocon b/rel/i18n/emqx_exhook_api.hocon index 9cb7177c1..dabf89364 100644 --- a/rel/i18n/emqx_exhook_api.hocon +++ b/rel/i18n/emqx_exhook_api.hocon @@ -2,70 +2,109 @@ emqx_exhook_api { add_server.desc: """Add a server""" +add_server.label: +"""Add a server""" delete_server.desc: """Delete the server""" +delete_server.label: +"""Delete the server""" get_detail.desc: """Get the detail information of Exhook server""" +get_detail.label: +"""Get server details""" get_hooks.desc: """Get the hooks information of server""" +get_hooks.label: +"""Get server hooks information""" hook_metrics.desc: """Metrics information of this hook in the current node""" +hook_metrics.label: +"""Hook metrics""" hook_name.desc: """The hook's name""" +hook_name.label: +"""Hook name""" hook_params.desc: """The parameters used when the hook is registered""" +hook_params.label: +"""Hook parameters""" list_all_servers.desc: """List all servers""" +list_all_servers.label: +"""List servers""" metric_failed.desc: """The number of times the hook execution failed""" +metric_failed.label: +"""Failed executions count""" metric_max_rate.desc: """Maximum call rate of hooks""" +metric_max_rate.label: +"""Max hook call rate""" metric_rate.desc: """The call rate of hooks""" +metric_rate.label: +"""Hook call rate""" metric_succeed.desc: """The number of times the hooks execution successful""" +metric_succeed.label: +"""Successful executions count""" metrics.desc: """Metrics information""" +metrics.label: +"""Metrics information""" move_api.desc: """Move the server. NOTE: The position should be "front | rear | before:{name} | after:{name}""" - move_api.label: """Change order of execution for registered Exhook server""" move_position.desc: """The target position to be moved""" +move_position.label: +"""Target position""" node.desc: """Node name""" +node.label: +"""Node name""" node_hook_metrics.desc: """Metrics information of this hook in all nodes""" +node_hook_metrics.label: +"""Node-wise hook metrics""" node_metrics.desc: """Metrics information of this server in all nodes""" +node_metrics.label: +"""Node-wise server metrics""" node_status.desc: """status of this server in all nodes""" +node_status.label: +"""Node-wise server status""" server_metrics.desc: """Metrics information of this server in the current node""" +server_metrics.label: +"""Server metrics""" server_name.desc: """The Exhook server name""" +server_name.label: +"""Server name""" status.desc: """The status of Exhook server.
@@ -74,8 +113,12 @@ connecting: connection failed, reconnecting
disconnected: failed to connect and didn't reconnect
disabled: this server is disabled
error: failed to view the status of this server""" +status.label: +"""Server status""" update_server.desc: """Update the server""" +update_server.label: +"""Update the server""" } diff --git a/rel/i18n/emqx_mgmt_api_alarms.hocon b/rel/i18n/emqx_mgmt_api_alarms.hocon index 0327fffcd..b9c289114 100644 --- a/rel/i18n/emqx_mgmt_api_alarms.hocon +++ b/rel/i18n/emqx_mgmt_api_alarms.hocon @@ -8,6 +8,8 @@ deactivate_at.desc: delete_alarms_api.desc: """Remove all historical alarms.""" +delete_alarms_api.label: +"""Remove all historical alarms.""" delete_alarms_api_response204.desc: """Historical alarms have been cleared successfully.""" @@ -26,6 +28,8 @@ The default is false.""" list_alarms_api.desc: """List currently activated alarms or historical alarms, determined by query parameters.""" +list_alarms_api.label: +"""List alarms""" message.desc: """Alarm message, which describes the alarm content in a human-readable format.""" diff --git a/rel/i18n/emqx_mgmt_api_api_keys.hocon b/rel/i18n/emqx_mgmt_api_api_keys.hocon new file mode 100644 index 000000000..85d5c4ec7 --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_api_keys.hocon @@ -0,0 +1,33 @@ +emqx_mgmt_api_api_keys { + +api_key_list.desc: +"""Return api_key list""" +api_key_list.label: +"""Return api_key list""" + +create_new_api_key.desc: +"""Create new api_key""" +create_new_api_key.label: +"""Create new api_key""" + +get_api_key.desc: +"""Return the specific api_key""" +get_api_key.label: +"""Return the specific api_key""" + +update_api_key.desc: +"""Update the specific api_key""" +update_api_key.label: +"""Update the specific api_key""" + +delete_api_key.desc: +"""Delete the specific api_key""" +delete_api_key.label: +"""Delete the specific api_key""" + +format.desc: +"""Unique and format by [a-zA-Z0-9-_]""" +format.label: +"""Unique and format by [a-zA-Z0-9-_]""" + +} diff --git a/rel/i18n/emqx_mgmt_api_banned.hocon b/rel/i18n/emqx_mgmt_api_banned.hocon index 1a9700641..0a5439402 100644 --- a/rel/i18n/emqx_mgmt_api_banned.hocon +++ b/rel/i18n/emqx_mgmt_api_banned.hocon @@ -20,18 +20,24 @@ by.label: create_banned_api.desc: """Add a client ID, username or IP address to the blacklist.""" +create_banned_api.label: +"""Ban client ID, username or IP address""" create_banned_api_response400.desc: """Bad request, possibly due to wrong parameters or the existence of a banned object.""" delete_banned_api.desc: """Remove a client ID, username or IP address from the blacklist.""" +delete_banned_api.label: +"""Unban a client ID, username or IP address""" delete_banned_api_response404.desc: """The banned object was not found in the blacklist.""" list_banned_api.desc: """List all currently banned client IDs, usernames and IP addresses.""" +list_banned_api.label: +"""List all banned client IDs""" reason.desc: """Ban reason, record the reason why the current object was banned.""" diff --git a/rel/i18n/emqx_mgmt_api_clients.hocon b/rel/i18n/emqx_mgmt_api_clients.hocon new file mode 100644 index 000000000..d82642b1e --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_clients.hocon @@ -0,0 +1,58 @@ +emqx_mgmt_api_clients { + +list_clients.desc: +"""List clients""" +list_clients.label: +"""List clients""" + +clients_info_from_id.desc: +"""Get clients info by client ID""" +clients_info_from_id.label: +"""Get clients info by client ID""" + +kick_client_id.desc: +"""Kick out client by client ID""" +kick_client_id.label: +"""Kick out client by client ID""" + +get_authz_cache.desc: +"""Get client authz cache in the cluster.""" +get_authz_cache.label: +"""Get client authz cache in the cluster.""" + +clean_authz_cache.desc: +"""Clean client authz cache in the cluster.""" +clean_authz_cache.label: +"""Clean client authz cache in the cluster.""" + +get_client_subs.desc: +"""Get client subscriptions""" +get_client_subs.label: +"""Get client subscriptions""" + +subscribe.desc: +"""Subscribe""" +subscribe.label: +"""Subscribe""" + +subscribe_g.desc: +"""Subscribe bulk""" +subscribe_g.label: +"""Subscribe bulk""" + +unsubscribe.desc: +"""Unsubscribe""" +unsubscribe.label: +"""Unsubscribe""" + +unsubscribe_g.desc: +"""Unsubscribe bulk""" +unsubscribe_g.label: +"""Unsubscribe bulk""" + +set_keepalive_seconds.desc: +"""Set the online client keepalive by seconds""" +set_keepalive_seconds.label: +"""Set the online client keepalive by seconds""" + +} diff --git a/rel/i18n/emqx_mgmt_api_cluster.hocon b/rel/i18n/emqx_mgmt_api_cluster.hocon new file mode 100644 index 000000000..f8b6de1a4 --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_cluster.hocon @@ -0,0 +1,18 @@ +emqx_mgmt_api_cluster { + +get_cluster_info.desc: +"""Get cluster info""" +get_cluster_info.label: +"""Get cluster info""" + +invite_node.desc: +"""Invite node to cluster""" +invite_node.label: +"""Invite node to cluster""" + +force_remove_node.desc: +"""Force leave node from cluster""" +force_remove_node.label: +"""Force leave node from cluster""" + +} diff --git a/rel/i18n/emqx_mgmt_api_configs.hocon b/rel/i18n/emqx_mgmt_api_configs.hocon new file mode 100644 index 000000000..42bda7899 --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_configs.hocon @@ -0,0 +1,40 @@ +emqx_mgmt_api_configs { + +get_conf_node.desc: +"""Get all the configurations of the specified node, including hot and non-hot updatable items.""" +get_conf_node.label: +"""Get all the configurations for node.""" + +node_name.desc: +"""Node's name: If you do not fill in the fields, this node will be used by default.""" +node_name.label: +"""Node's name.""" + +rest_conf_query.desc: +"""Reset the config entry specified by the query string parameter `conf_path`.
+- For a config entry that has default value, this resets it to the default value; +- For a config entry that has no default value, an error 400 will be returned""" +rest_conf_query.label: +"""Reset the config entry with query""" + +get_global_zone_configs.desc: +"""Get the global zone configs""" +get_global_zone_configs.label: +"""Get the global zone configs""" + +update_globar_zone_configs.desc: +"""Update globbal zone configs""" +update_globar_zone_configs.label: +"""Update globbal zone configs""" + +get_node_level_limiter_congigs.desc: +"""Get the node-level limiter configs""" +get_node_level_limiter_congigs.label: +"""Get the node-level limiter configs""" + +update_node_level_limiter_congigs.desc: +"""Update the node-level limiter configs""" +update_node_level_limiter_congigs.label: +"""Update the node-level limiter configs""" + +} diff --git a/rel/i18n/emqx_mgmt_api_listeners.hocon b/rel/i18n/emqx_mgmt_api_listeners.hocon new file mode 100644 index 000000000..b45f55977 --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_listeners.hocon @@ -0,0 +1,59 @@ +emqx_mgmt_api_listeners { + +list_node_live_statuses.desc: +"""List all running node's listeners live status. group by listener type""" +list_node_live_statuses.label: +"""List all running node's listeners live status. group by listener type""" + +list_listeners.desc: +"""List all running node's listeners for the specified type.""" +list_listeners.label: +"""List all running node's listeners for the specified type.""" + +listener_type.desc: +"""Listener type""" +listener_type.label: +"""Listener type""" + +create_on_all_nodes.desc: +"""Create the specified listener on all nodes.""" +create_on_all_nodes.label: +"""Create the specified listener on all nodes.""" + +list_by_id.desc: +"""List all running node's listeners for the specified id.""" +list_by_id.label: +"""List all running node's listeners for the specified id.""" + +update_lisener.desc: +"""Update the specified listener on all nodes.""" +update_lisener.label: +"""Update the specified listener on all nodes.""" + +create_on_all_nodes_2.desc: +"""Create the specified listener on all nodes.""" +create_on_all_nodes_2.label: +"""Create the specified listener on all nodes.""" + +delete_on_all_nodes.desc: +"""Delete the specified listener on all nodes.""" +delete_on_all_nodes.label: +"""Delete the specified listener on all nodes.""" + +start_on_all_nodes.desc: +"""Start the listener on all nodes.""" +start_on_all_nodes.label: +"""Start the listener on all nodes.""" + +stop_on_all_nodes.desc: +"""Stop the listener on all nodes.""" +stop_on_all_nodes.label: +"""Stop the listener on all nodes.""" + +restart_on_all_nodes.desc: +"""Restart listeners on all nodes.""" +restart_on_all_nodes.label: +"""Restart listeners on all nodes.""" + + +} diff --git a/rel/i18n/emqx_mgmt_api_metrics.hocon b/rel/i18n/emqx_mgmt_api_metrics.hocon new file mode 100644 index 000000000..de1e7f20c --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_metrics.hocon @@ -0,0 +1,8 @@ +emqx_mgmt_api_metrics { + +emqx_metrics.desc: +"""EMQX metrics""" +emqx_metrics.label: +"""EMQX metrics""" + +} diff --git a/rel/i18n/emqx_mgmt_api_nodes.hocon b/rel/i18n/emqx_mgmt_api_nodes.hocon new file mode 100644 index 000000000..e875b0dcc --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_nodes.hocon @@ -0,0 +1,23 @@ +emqx_mgmt_api_nodes { + +list_nodes.desc: +"""List EMQX nodes""" +list_nodes.label: +"""List EMQX nodes""" + +get_node_info.desc: +"""Get node info""" +get_node_info.label: +"""Get node info""" + +get_node_metrics.desc: +"""Get node metrics""" +get_node_metrics.label: +"""Get node metrics""" + +get_node_stats.desc: +"""Get node stats""" +get_node_stats.label: +"""Get node stats""" + +} diff --git a/rel/i18n/emqx_mgmt_api_stats.hocon b/rel/i18n/emqx_mgmt_api_stats.hocon new file mode 100644 index 000000000..d3c57d6e8 --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_stats.hocon @@ -0,0 +1,8 @@ +emqx_mgmt_api_stats { + +emqx_stats.desc: +"""EMQX stats""" +emqx_stats.label: +"""EMQX stats""" + +} diff --git a/rel/i18n/emqx_mgmt_api_subscriptions.hocon b/rel/i18n/emqx_mgmt_api_subscriptions.hocon new file mode 100644 index 000000000..a0c8a7a01 --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_subscriptions.hocon @@ -0,0 +1,8 @@ +emqx_mgmt_api_subscriptions { + +list_subs.desc: +"""List subscriptions""" +list_subs.label: +"""List subscriptions""" + +} diff --git a/rel/i18n/emqx_mgmt_api_topics.hocon b/rel/i18n/emqx_mgmt_api_topics.hocon new file mode 100644 index 000000000..5b65af95a --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_topics.hocon @@ -0,0 +1,13 @@ +emqx_mgmt_api_topics { + +topic_list.desc: +"""Topics list""" +topic_list.label: +"""Topics list""" + +topic_info_by_name.desc: +"""Lookup topic info by name""" +topic_info_by_name.label: +"""Lookup topic info by name""" + +} diff --git a/rel/i18n/emqx_mgmt_api_trace.hocon b/rel/i18n/emqx_mgmt_api_trace.hocon new file mode 100644 index 000000000..4af68a460 --- /dev/null +++ b/rel/i18n/emqx_mgmt_api_trace.hocon @@ -0,0 +1,118 @@ +emqx_mgmt_api_trace { + +list_all.desc: +"""List all trace""" +list_all.label: +"""List all trace""" + +create_new.desc: +"""Create new trace""" +create_new.label: +"""Create new trace""" + +clear_all.desc: +"""Clear all traces""" +clear_all.label: +"""Clear all traces""" + +delete_trace.desc: +"""Delete specified trace""" +delete_trace.label: +"""Delete specified trace""" + +stop_trace.desc: +"""Stop trace by name""" +stop_trace.label: +"""Stop trace by name""" + +download_log_by_name.desc: +"""Download trace log by name""" +download_log_by_name.label: +"""Download trace log by name""" + +trace_zip_file.desc: +"""A trace zip file""" +trace_zip_file.label: +"""A trace zip file""" + +get_trace_file_metadata.desc: +"""get trace log file's metadata, such as size, last update time""" +get_trace_file_metadata.label: +"""get trace log file's metadata""" + +view_trace_log.desc: +"""view trace log""" +view_trace_log.label: +"""view trace log""" + +file_size.desc: +"""file size""" +file_size.label: +"""file size""" + +modification_date.desc: +"""the modification and last access times of a file""" +modification_date.label: +"""last access time""" + +format.desc: +"""Unique and format by [a-zA-Z0-9-_]""" +format.label: +"""Unique and format by [a-zA-Z0-9-_]""" + +filter_type.desc: +"""Filter type""" +filter_type.label: +"""Filter type""" + +support_wildcard.desc: +"""support mqtt wildcard topic.""" +support_wildcard.label: +"""support mqtt wildcard topic""" + +mqtt_clientid.desc: +"""mqtt clientid.""" +mqtt_clientid.label: +"""mqtt clientid""" + +client_ip_addess.desc: +"""client ip address""" +client_ip_addess.label: +"""client ip address""" + +trace_status.desc: +"""trace status""" +trace_status.label: +"""trace status""" + +time_format.desc: +"""rfc3339 timestamp or epoch second""" +time_format.label: +"""rfc3339 timestamp or epoch second""" + +time_format_g.desc: +"""rfc3339 timestamp or epoch second""" +time_format_g.label: +"""rfc3339 timestamp or epoch second""" + +trace_log_size.desc: +"""trace log size""" +trace_log_size.label: +"""trace log size""" + +node_name.desc: +"""Node name""" +node_name.label: +"""Node name""" + +max_response_bytes.desc: +"""Maximum number of bytes to send in response""" +max_response_bytes.label: +"""Maximum response bytes""" + +current_trace_offset.desc: +"""Offset from the current trace position.""" +current_trace_offset.label: +"""Offset from the current trace position.""" + +} diff --git a/rel/i18n/emqx_prometheus_api.hocon b/rel/i18n/emqx_prometheus_api.hocon new file mode 100644 index 000000000..c468ccc2f --- /dev/null +++ b/rel/i18n/emqx_prometheus_api.hocon @@ -0,0 +1,18 @@ +emqx_prometheus_api { + +get_prom_conf_info.desc: +"""Get Prometheus config info""" +get_prom_conf_info.label: +"""Get Prometheus config info""" + +update_prom_conf_info.desc: +"""Update Prometheus config""" +update_prom_conf_info.label: +"""Update Prometheus config""" + +get_prom_data.desc: +"""Get Prometheus Data""" +get_prom_data.label: +"""Get Prometheus Data""" + +} diff --git a/rel/i18n/emqx_retainer_api.hocon b/rel/i18n/emqx_retainer_api.hocon index 5c7084778..cdb49f8d0 100644 --- a/rel/i18n/emqx_retainer_api.hocon +++ b/rel/i18n/emqx_retainer_api.hocon @@ -8,6 +8,8 @@ config_not_found.desc: delete_matching_api.desc: """Delete matching messages.""" +delete_matching_api.label: +"""Delete matching messages""" from_clientid.desc: """The clientid of publisher.""" @@ -17,12 +19,18 @@ from_username.desc: get_config_api.desc: """View config""" +get_config_api.label: +"""View config""" list_retained_api.desc: """List retained messages.""" +list_retained_api.label: +"""List retained messages.""" lookup_api.desc: """Lookup a message by a topic without wildcards.""" +lookup_api.label: +"""Lookup a message""" message_detail.desc: """Details of the message.""" @@ -59,5 +67,7 @@ update_config_success.desc: update_retainer_api.desc: """Update retainer config.""" +update_retainer_api.label: +"""Update retainer config""" } diff --git a/rel/i18n/emqx_rewrite_api.hocon b/rel/i18n/emqx_rewrite_api.hocon index 7e090e590..1b56cf24d 100644 --- a/rel/i18n/emqx_rewrite_api.hocon +++ b/rel/i18n/emqx_rewrite_api.hocon @@ -2,11 +2,17 @@ emqx_rewrite_api { list_topic_rewrite_api.desc: """List all rewrite rules""" +list_topic_rewrite_api.label: +"""List all rewrite rules""" update_topic_rewrite_api.desc: """Update all rewrite rules""" +update_topic_rewrite_api.label: +"""Update all rewrite rules""" update_topic_rewrite_api_response413.desc: """Rules count exceed max limit""" +update_topic_rewrite_api_response413.label: +"""Rules count exceed limit""" } diff --git a/rel/i18n/emqx_slow_subs_api.hocon b/rel/i18n/emqx_slow_subs_api.hocon index edf473487..f1a31784b 100644 --- a/rel/i18n/emqx_slow_subs_api.hocon +++ b/rel/i18n/emqx_slow_subs_api.hocon @@ -2,15 +2,21 @@ emqx_slow_subs_api { clear_records_api.desc: """Clear current data and re count slow topic""" +clear_records_api.label: +"""Clear current data and re count slow topic""" clientid.desc: """Message clientid""" get_records_api.desc: """View slow topics statistics record data""" +get_records_api.label: +"""View slow topics statistics record data""" get_setting_api.desc: """View slow subs settings""" +get_setting_api.label: +"""View slow subs settings""" last_update_time.desc: """The timestamp of last update""" @@ -26,5 +32,7 @@ topic.desc: update_setting_api.desc: """Update slow subs settings""" +update_setting_api.label: +"""Update slow subs settings""" } diff --git a/rel/i18n/emqx_telemetry_api.hocon b/rel/i18n/emqx_telemetry_api.hocon index 5c61b8d3c..4651cc8a0 100644 --- a/rel/i18n/emqx_telemetry_api.hocon +++ b/rel/i18n/emqx_telemetry_api.hocon @@ -14,9 +14,13 @@ enable.desc: get_telemetry_data_api.desc: """Get telemetry data""" +get_telemetry_data_api.label: +"""Get telemetry data""" get_telemetry_status_api.desc: """Get telemetry status""" +get_telemetry_status_api.label: +"""Get telemetry status""" license.desc: """Get license information""" @@ -47,6 +51,8 @@ up_time.desc: update_telemetry_status_api.desc: """Enable or disable telemetry""" +update_telemetry_status_api.label: +"""Enable or disable telemetry""" uuid.desc: """Get UUID""" diff --git a/rel/i18n/emqx_topic_metrics_api.hocon b/rel/i18n/emqx_topic_metrics_api.hocon index 94c58f0cd..bffd831c3 100644 --- a/rel/i18n/emqx_topic_metrics_api.hocon +++ b/rel/i18n/emqx_topic_metrics_api.hocon @@ -2,104 +2,172 @@ emqx_topic_metrics_api { message_qos1_in_rate.desc: """QoS1 in messages rate""" +message_qos1_in_rate.label: +"""QoS1 in messages rate""" message_out_count.desc: """Out messages count""" +message_out_count.label: +"""Out messages count""" message_qos2_out_rate.desc: """QoS2 out messages rate""" +message_qos2_out_rate.label: +"""QoS2 out messages rate""" message_qos0_in_rate.desc: """QoS0 in messages rate""" +message_qos0_in_rate.label: +"""QoS0 in messages rate""" get_topic_metrics_api.desc: """List topic metrics""" +get_topic_metrics_api.label: +"""List topic metrics""" reset_time.desc: """Reset time. In rfc3339. Nullable if never reset""" +reset_time.label: +"""Reset time""" topic_metrics_api_response400.desc: """Bad request. Already exists or bad topic name""" +topic_metrics_api_response400.label: +"""Bad request""" reset_topic_desc.desc: """Topic Name. If this parameter is not present,all created topic metrics will be reset.""" +reset_topic_desc.label: +"""Topic Name""" topic_metrics_api_response409.desc: """Conflict. Topic metrics exceeded max limit 512""" +topic_metrics_api_response409.label: +"""Conflict""" post_topic_metrics_api.desc: """Create topic metrics""" +post_topic_metrics_api.label: +"""Create topic metrics""" message_dropped_rate.desc: """Dropped messages rate""" +message_dropped_rate.label: +"""Dropped messages rate""" message_qos2_in_rate.desc: """QoS2 in messages rate""" +message_qos2_in_rate.label: +"""QoS2 in messages rate""" message_in_rate.desc: """In messages rate""" +message_in_rate.label: +"""In messages rate""" message_qos0_out_rate.desc: """QoS0 out messages rate""" +message_qos0_out_rate.label: +"""QoS0 out messages rate""" message_qos2_in_count.desc: """QoS2 in messages count""" +message_qos2_in_count.label: +"""QoS2 in messages count""" message_dropped_count.desc: """Dropped messages count""" +message_dropped_count.label: +"""Dropped messages count""" topic_metrics_api_response404.desc: """Not Found. Topic metrics not found""" +topic_metrics_api_response404.label: +"""Not Found""" topic_in_path.desc: """Topic string. Notice: Topic string in url path must be encoded""" +topic_in_path.label: +"""Topic string""" action.desc: """Action. Only support reset""" +action.label: +"""Action""" message_qos0_in_count.desc: """QoS0 in messages count""" +message_qos0_in_count.label: +"""QoS0 in messages count""" message_qos1_out_rate.desc: """QoS1 out messages rate""" +message_qos1_out_rate.label: +"""QoS1 out messages rate""" topic.desc: """Topic""" +topic.label: +"""Topic""" reset_topic_metrics_api.desc: """Reset telemetry status""" +reset_topic_metrics_api.label: +"""Reset telemetry status""" create_time.desc: """Create time""" +create_time.label: +"""Create time""" metrics.desc: """Metrics""" +metrics.label: +"""Metrics""" message_qos1_out_count.desc: """QoS1 out messages count""" +message_qos1_out_count.label: +"""QoS1 out messages count""" gat_topic_metrics_data_api.desc: """Get topic metrics""" +gat_topic_metrics_data_api.label: +"""Get topic metrics""" message_qos1_in_count.desc: """QoS1 in messages count""" +message_qos1_in_count.label: +"""QoS1 in messages count""" delete_topic_metrics_data_api.desc: """Delete topic metrics""" +delete_topic_metrics_data_api.label: +"""Delete topic metrics""" message_qos0_out_count.desc: """QoS0 out messages count""" +message_qos0_out_count.label: +"""QoS0 out messages count""" topic_in_body.desc: """Raw topic string""" +topic_in_body.label: +"""Raw topic string""" message_in_count.desc: """In messages count""" +message_in_count.label: +"""In messages count""" message_qos2_out_count.desc: """QoS2 out messages count""" +message_qos2_out_count.label: +"""QoS2 out messages count""" message_out_rate.desc: """Out messages rate""" +message_out_rate.label: +"""Out messages rate""" }