diff --git a/apps/emqx_modules/include/emqx_modules.hrl b/apps/emqx_modules/include/emqx_modules.hrl index 6bb95eea2..8d505969c 100644 --- a/apps/emqx_modules/include/emqx_modules.hrl +++ b/apps/emqx_modules/include/emqx_modules.hrl @@ -21,3 +21,4 @@ -define(REPORT_INTERVAR, 604800). -define(API_TAG_MQTT, [<<"mqtt">>]). +-define(API_SCHEMA_MODULE, emqx_modules_schema). diff --git a/apps/emqx_modules/src/emqx_event_message_api.erl b/apps/emqx_modules/src/emqx_event_message_api.erl index 55e12f591..65c33c0d7 100644 --- a/apps/emqx_modules/src/emqx_event_message_api.erl +++ b/apps/emqx_modules/src/emqx_event_message_api.erl @@ -17,37 +17,41 @@ -behaviour(minirest_api). --export([api_spec/0]). +-import(hoconsc, [mk/2, ref/2]). +-include("emqx_modules.hrl"). + +-export([ api_spec/0 + , paths/0 + , schema/1 + ]). -export([event_message/2]). --import(emqx_mgmt_util, [ schema/1 - ]). - api_spec() -> - {[event_message_api()], []}. + emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}). -conf_schema() -> - emqx_mgmt_api_configs:gen_schema(emqx:get_config([event_message])). +paths() -> + ["/mqtt/event_message"]. -event_message_api() -> - Path = "/mqtt/event_message", - Metadata = #{ - get => #{ - description => <<"Event Message">>, - responses => #{ - <<"200">> => schema(conf_schema()) +schema("/mqtt/event_message") -> + #{ 'operationId' => event_message + , get => + #{ description => <<"Event Message">> + , tags => ?API_TAG_MQTT + , responses => + #{200 => status_schema(<<"Get Event Message config successfully">>)} } - }, - put => #{ - description => <<"Update Event Message">>, - 'requestBody' => schema(conf_schema()), - responses => #{ - <<"200">> => schema(conf_schema()) + , put => + #{ description => <<"Update Event Message">> + , tags => ?API_TAG_MQTT + , 'requestBody' => status_schema(<<"Update Event Message config">>) + , responses => + #{200 => status_schema(<<"Update Event Message config successfully">>)} } - } - }, - {Path, Metadata, event_message}. + }. + +status_schema(Desc) -> + mk(ref(?API_SCHEMA_MODULE, "event_message"), #{in => body, desc => Desc}). event_message(get, _Params) -> {200, emqx_event_message:list()}; diff --git a/apps/emqx_modules/src/emqx_modules_schema.erl b/apps/emqx_modules/src/emqx_modules_schema.erl index 0c5363e16..99e0b4860 100644 --- a/apps/emqx_modules/src/emqx_modules_schema.erl +++ b/apps/emqx_modules/src/emqx_modules_schema.erl @@ -51,13 +51,27 @@ fields("rewrite") -> fields("event_message") -> - [ {"$event/client_connected", sc(boolean(), #{default => false})} - , {"$event/client_disconnected", sc(boolean(), #{default => false})} - , {"$event/client_subscribed", sc(boolean(), #{default => false})} - , {"$event/client_unsubscribed", sc(boolean(), #{default => false})} - , {"$event/message_delivered", sc(boolean(), #{default => false})} - , {"$event/message_acked", sc(boolean(), #{default => false})} - , {"$event/message_dropped", sc(boolean(), #{default => false})} + [ { '$event/client_connected' + , sc( boolean() + , #{desc => <<"Client connected to EMQ X event">>, default => false})} + , { '$event/client_disconnected' + , sc(boolean() + , #{desc => <<"Client disconnected to EMQ X event">>, default => false})} + , { '$event/client_subscribed' + , sc( boolean() + , #{desc => <<"Client subscribe topic event">>, default => false})} + , { '$event/client_unsubscribed' + , sc( boolean() + , #{desc => <<"Client unsubscribe topic event">>, default => false})} + , { '$event/message_delivered' + , sc( boolean() + , #{desc => <<"Message delivered event">>, default => false})} + , { '$event/message_acked' + , sc( boolean() + , #{desc => <<"Message acked event">>, default => false})} + , { '$event/message_dropped' + , sc( boolean() + , #{desc => <<"Message dropped event">>, default => false})} ]; fields("topic_metrics") ->