diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index 8330c11b4..d5d5381cc 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -564,12 +564,14 @@ subscriptions(get, #{bindings := #{clientid := ClientID}}) -> {Node, Subs} -> Formatter = fun({Topic, SubOpts}) -> - #{ - node => Node, - clientid => ClientID, - topic => Topic, - qos => maps:get(qos, SubOpts) - } + maps:merge( + #{ + node => Node, + clientid => ClientID, + topic => Topic + }, + maps:with([qos, nl, rap, rh], SubOpts) + ) end, {200, lists:map(Formatter, Subs)} end. diff --git a/apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl index 897862b20..57bf25268 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl @@ -105,6 +105,32 @@ t_clients(_) -> ?assertEqual(AfterSubTopic, Topic), ?assertEqual(AfterSubQos, Qos), + %% get /clients/:clientid/subscriptions + SubscriptionsPath = emqx_mgmt_api_test_util:api_path([ + "clients", + binary_to_list(ClientId1), + "subscriptions" + ]), + {ok, SubscriptionsRes} = emqx_mgmt_api_test_util:request_api( + get, + SubscriptionsPath, + "", + AuthHeader + ), + [SubscriptionsData] = emqx_json:decode(SubscriptionsRes, [return_maps]), + ?assertMatch( + #{ + <<"clientid">> := ClientId1, + <<"nl">> := _, + <<"rap">> := _, + <<"rh">> := _, + <<"node">> := _, + <<"qos">> := Qos, + <<"topic">> := Topic + }, + SubscriptionsData + ), + %% post /clients/:clientid/unsubscribe UnSubscribePath = emqx_mgmt_api_test_util:api_path([ "clients",