63 lines
2.2 KiB
Erlang
63 lines
2.2 KiB
Erlang
%%--------------------------------------------------------------------
|
|
%% Copyright (c) 2020-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
|
%%
|
|
%% Licensed under the Apache License, Version 2.0 (the "License");
|
|
%% you may not use this file except in compliance with the License.
|
|
%% You may obtain a copy of the License at
|
|
%%
|
|
%% http://www.apache.org/licenses/LICENSE-2.0
|
|
%%
|
|
%% Unless required by applicable law or agreed to in writing, software
|
|
%% distributed under the License is distributed on an "AS IS" BASIS,
|
|
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
%% See the License for the specific language governing permissions and
|
|
%% limitations under the License.
|
|
%%--------------------------------------------------------------------
|
|
-module(emqx_swagger_remote_schema).
|
|
|
|
-include_lib("typerefl/include/types.hrl").
|
|
|
|
-export([roots/0, fields/1]).
|
|
-import(hoconsc, [mk/2]).
|
|
roots() -> ["root"].
|
|
|
|
fields("root") ->
|
|
[
|
|
{listeners,
|
|
hoconsc:array(
|
|
hoconsc:union([
|
|
hoconsc:ref(?MODULE, "ref1"),
|
|
hoconsc:ref(?MODULE, "ref2")
|
|
])
|
|
)},
|
|
{default_username, fun default_username/1},
|
|
{default_password, fun default_password/1},
|
|
{sample_interval, mk(emqx_schema:timeout_duration_s(), #{default => <<"10s">>})},
|
|
{token_expired_time, mk(emqx_schema:duration(), #{default => <<"30m">>})}
|
|
];
|
|
fields("ref1") ->
|
|
[
|
|
{"protocol", hoconsc:enum([http, https])},
|
|
{"port", mk(integer(), #{default => 18083})}
|
|
];
|
|
fields("ref2") ->
|
|
[
|
|
{page, mk(range(1, 100), #{desc => <<"good page">>})},
|
|
{another_ref, hoconsc:ref(?MODULE, "ref3")}
|
|
];
|
|
fields("ref3") ->
|
|
[
|
|
{ip, mk(emqx_schema:ip_port(), #{desc => <<"IP:Port">>, example => "127.0.0.1:80"})},
|
|
{version, mk(string(), #{desc => "a good version", example => "1.0.0"})}
|
|
].
|
|
|
|
default_username(type) -> string();
|
|
default_username(default) -> <<"admin">>;
|
|
default_username(required) -> true;
|
|
default_username(_) -> undefined.
|
|
|
|
default_password(type) -> string();
|
|
default_password(default) -> "public";
|
|
default_password(required) -> true;
|
|
default_password(_) -> undefined.
|