diff --git a/apps/emqx_authn/src/emqx_authn_api.erl b/apps/emqx_authn/src/emqx_authn_api.erl index 878e879ed..d1d8cbc6a 100644 --- a/apps/emqx_authn/src/emqx_authn_api.erl +++ b/apps/emqx_authn/src/emqx_authn_api.erl @@ -24,7 +24,7 @@ -include_lib("emqx/include/logger.hrl"). -include_lib("emqx/include/emqx_authentication.hrl"). --import(hoconsc, [mk/2, ref/1]). +-import(hoconsc, [mk/2, ref/1, ref/2]). -import(emqx_dashboard_swagger, [error_codes/2]). -define(BAD_REQUEST, 'BAD_REQUEST'). @@ -146,13 +146,7 @@ fields(response_user) -> {is_superuser, mk(boolean(), #{default => false, required => false})} ]; fields(response_users) -> - paginated_list_type(ref(response_user)); -fields(pagination_meta) -> - [ - {page, pos_integer()}, - {limit, pos_integer()}, - {count, non_neg_integer()} - ]. + paginated_list_type(ref(response_user)). schema("/authentication") -> #{ @@ -1316,7 +1310,7 @@ binfmt(Fmt, Args) -> iolist_to_binary(io_lib:format(Fmt, Args)). paginated_list_type(Type) -> [ {data, hoconsc:array(Type)}, - {meta, ref(pagination_meta)} + {meta, ref(emqx_dashboard_swagger, meta)} ]. authenticator_array_example() -> diff --git a/apps/emqx_authz/src/emqx_authz_api_mnesia.erl b/apps/emqx_authz/src/emqx_authz_api_mnesia.erl index dcdcf6878..addb11584 100644 --- a/apps/emqx_authz/src/emqx_authz_api_mnesia.erl +++ b/apps/emqx_authz/src/emqx_authz_api_mnesia.erl @@ -383,7 +383,7 @@ fields(rules_for_username) -> fields(username_response_data) -> [ {data, mk(array(ref(rules_for_username)), #{})}, - {meta, ref(meta)} + {meta, ref(emqx_dashboard_swagger, meta)} ]; fields(rules_for_clientid) -> fields(rules) ++ @@ -391,14 +391,10 @@ fields(rules_for_clientid) -> fields(clientid_response_data) -> [ {data, mk(array(ref(rules_for_clientid)), #{})}, - {meta, ref(meta)} + {meta, ref(emqx_dashboard_swagger, meta)} ]; fields(rules) -> - [{rules, mk(array(ref(rule_item)))}]; -fields(meta) -> - emqx_dashboard_swagger:fields(page) ++ - emqx_dashboard_swagger:fields(limit) ++ - [{count, mk(integer(), #{example => 1})}]. + [{rules, mk(array(ref(rule_item)))}]. %%-------------------------------------------------------------------- %% HTTP API diff --git a/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl b/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl index a6a2d1bc4..72a1aeb2a 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl @@ -135,7 +135,12 @@ fields(limit) -> <<")">> ]), Meta = #{in => query, desc => Desc, default => ?DEFAULT_ROW, example => 50}, - [{limit, hoconsc:mk(range(1, ?MAX_ROW_LIMIT), Meta)}]. + [{limit, hoconsc:mk(range(1, ?MAX_ROW_LIMIT), Meta)}]; +fields(count) -> + Meta = #{desc => <<"Results count.">>, required => true}, + [{count, hoconsc:mk(range(0, inf), Meta)}]; +fields(meta) -> + fields(page) ++ fields(limit) ++ fields(count). -spec schema_with_example(hocon_schema:type(), term()) -> hocon_schema:field_schema_map(). schema_with_example(Type, Example) -> diff --git a/apps/emqx_management/src/emqx_mgmt_api_alarms.erl b/apps/emqx_management/src/emqx_mgmt_api_alarms.erl index 5c455b4e4..cc9b073b1 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_alarms.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_alarms.erl @@ -53,7 +53,7 @@ schema("/alarms") -> responses => #{ 200 => [ {data, hoconsc:mk(hoconsc:array(hoconsc:ref(?MODULE, alarm)), #{})}, - {meta, hoconsc:mk(hoconsc:ref(?MODULE, meta), #{})} + {meta, hoconsc:mk(hoconsc:ref(emqx_dashboard_swagger, meta), #{})} ] } }, @@ -98,11 +98,8 @@ fields(alarm) -> desc => ?DESC(deactivate_at), example => <<"2021-10-31T10:52:52.548+08:00">> })} - ]; -fields(meta) -> - emqx_dashboard_swagger:fields(page) ++ - emqx_dashboard_swagger:fields(limit) ++ - [{count, hoconsc:mk(integer(), #{example => 1})}]. + ]. + %%%============================================================================================== %% parameters trans alarms(get, #{query_string := QString}) -> diff --git a/apps/emqx_management/src/emqx_mgmt_api_banned.erl b/apps/emqx_management/src/emqx_mgmt_api_banned.erl index 1354b9ac8..fc9ece871 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_banned.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_banned.erl @@ -62,7 +62,7 @@ schema("/banned") -> responses => #{ 200 => [ {data, hoconsc:mk(hoconsc:array(hoconsc:ref(ban)), #{})}, - {meta, hoconsc:mk(hoconsc:ref(meta), #{})} + {meta, hoconsc:mk(hoconsc:ref(emqx_dashboard_swagger, meta), #{})} ] } }, @@ -147,11 +147,7 @@ fields(ban) -> required => false, example => <<"2021-10-25T21:53:47+08:00">> })} - ]; -fields(meta) -> - emqx_dashboard_swagger:fields(page) ++ - emqx_dashboard_swagger:fields(limit) ++ - [{count, hoconsc:mk(integer(), #{example => 1})}]. + ]. banned(get, #{query_string := Params}) -> Response = emqx_mgmt_api:paginate(?TAB, Params, ?FORMAT_FUN), diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index 393af6b5d..8330c11b4 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -203,7 +203,7 @@ schema("/clients") -> responses => #{ 200 => [ {data, hoconsc:mk(hoconsc:array(hoconsc:ref(?MODULE, client)), #{})}, - {meta, hoconsc:mk(hoconsc:ref(?MODULE, meta), #{})} + {meta, hoconsc:mk(hoconsc:ref(emqx_dashboard_swagger, meta), #{})} ], 400 => emqx_dashboard_swagger:error_codes( @@ -518,11 +518,7 @@ fields(subscribe) -> fields(unsubscribe) -> [ {topic, hoconsc:mk(binary(), #{desc => <<"Topic">>})} - ]; -fields(meta) -> - emqx_dashboard_swagger:fields(page) ++ - emqx_dashboard_swagger:fields(limit) ++ - [{count, hoconsc:mk(integer(), #{example => 1})}]. + ]. %%%============================================================================================== %% parameters trans diff --git a/apps/emqx_management/src/emqx_mgmt_api_topics.erl b/apps/emqx_management/src/emqx_mgmt_api_topics.erl index ef07cabe3..3b54a3bee 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_topics.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_topics.erl @@ -60,7 +60,7 @@ schema("/topics") -> responses => #{ 200 => [ {data, hoconsc:mk(hoconsc:array(hoconsc:ref(topic)), #{})}, - {meta, hoconsc:mk(hoconsc:ref(meta), #{})} + {meta, hoconsc:mk(hoconsc:ref(emqx_dashboard_swagger, meta), #{})} ] } } @@ -91,11 +91,7 @@ fields(topic) -> desc => <<"Node">>, required => true })} - ]; -fields(meta) -> - emqx_dashboard_swagger:fields(page) ++ - emqx_dashboard_swagger:fields(limit) ++ - [{count, hoconsc:mk(integer(), #{example => 1})}]. + ]. %%%============================================================================================== %% parameters trans