优化hls播放器,使用持久化连接 (#3070)

hls播放时,如果对方reset断开了tcp连接,应该自动发起重连
This commit is contained in:
alexliyu7352 2023-12-01 17:56:08 +08:00 committed by GitHub
parent 50281513d9
commit 4648c156c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 176 additions and 102 deletions

View File

@ -151,6 +151,17 @@ if(HAVE_RECVMMSG_API)
list(APPEND COMPILE_DEFINITIONS HAVE_RECVMMSG_API) list(APPEND COMPILE_DEFINITIONS HAVE_RECVMMSG_API)
endif() endif()
# check the socket buffer size set by the upper cmake project, if it is set, use the setting of the upper cmake project, otherwise set it to 256K
# if the socket buffer size is set to 0, it means that the socket buffer size is not set, and the kernel default value is used(just for linux)
if(DEFINED SOCKET_DEFAULT_BUF_SIZE)
if (SOCKET_DEFAULT_BUF_SIZE EQUAL 0)
message(STATUS "Socket default buffer size is not set, use the kernel default value")
else()
message(STATUS "Socket default buffer size is set to ${SOCKET_DEFAULT_BUF_SIZE}")
endif ()
add_definitions(-DSOCKET_DEFAULT_BUF_SIZE=${SOCKET_DEFAULT_BUF_SIZE})
endif()
set(ToolKit_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/ZLToolKit) set(ToolKit_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/ZLToolKit)
# #
file(GLOB ToolKit_SRC_LIST file(GLOB ToolKit_SRC_LIST

@ -1 +1 @@
Subproject commit ad44a16c99834540b397774ad6c7f3f8ed619d56 Subproject commit 63d8521c31bdae6656d9ff0f5d55883618f5eaf1

View File

@ -24,11 +24,13 @@
cmake_minimum_required(VERSION 3.1.3) cmake_minimum_required(VERSION 3.1.3)
# #
# Load custom modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
project(ZLMediaKit LANGUAGES C CXX) project(ZLMediaKit LANGUAGES C CXX)
# 使 C++11 # 使 C++11
# Enable C++11
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD 11)
option(ENABLE_API "Enable C API SDK" ON) option(ENABLE_API "Enable C API SDK" ON)
@ -58,8 +60,11 @@ option(ENABLE_X264 "Enable x264" OFF)
option(ENABLE_WEPOLL "Enable wepoll" ON) option(ENABLE_WEPOLL "Enable wepoll" ON)
option(DISABLE_REPORT "Disable report to report.zlmediakit.com" off) option(DISABLE_REPORT "Disable report to report.zlmediakit.com" off)
option(USE_SOLUTION_FOLDERS "Enable solution dir supported" ON) option(USE_SOLUTION_FOLDERS "Enable solution dir supported" ON)
############################################################################## ##############################################################################
# socket256k.0socket,使用系统内核默认值(设置为0仅对linux有效)
# Set the default buffer size of the socket to 256k. If set to 0, the default buffer size of the socket will not be set,
# and the system kernel default value will be used (setting to 0 is only valid for linux)
set(SOCKET_DEFAULT_BUF_SIZE 262144 CACHE STRING "Default buffer size for socket" FORCE)
if("${CMAKE_BUILD_TYPE}" STREQUAL "") if("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE "Debug") set(CMAKE_BUILD_TYPE "Debug")
@ -68,12 +73,14 @@ endif()
message(STATUS "编译类型: ${CMAKE_BUILD_TYPE}") message(STATUS "编译类型: ${CMAKE_BUILD_TYPE}")
# 便, FORCE CACHE, # 便, FORCE CACHE,
# To facilitate the troubleshooting of compilation problems, you need to FORCE CACHE, otherwise you need to set it on the command line to take effect
set(CMAKE_VERBOSE_MAKEFILE ON CACHE INTERNAL "" FORCE) set(CMAKE_VERBOSE_MAKEFILE ON CACHE INTERNAL "" FORCE)
# TODO: include server , # TODO: include server ,
set(CMAKE_INCLUDE_CURRENT_DIR OFF) set(CMAKE_INCLUDE_CURRENT_DIR OFF)
# #
# Install path
if(NOT CMAKE_INSTALL_PREFIX) if(NOT CMAKE_INSTALL_PREFIX)
if(UNIX) if(UNIX)
set(INSTALL_PATH_LIB lib${LIB_SUFFIX}) set(INSTALL_PATH_LIB lib${LIB_SUFFIX})
@ -81,6 +88,7 @@ if(NOT CMAKE_INSTALL_PREFIX)
set(INSTALL_PATH_RUNTIME bin) set(INSTALL_PATH_RUNTIME bin)
elseif(WIN32) elseif(WIN32)
# Windows ? # Windows ?
# Install to the user's home directory under Windows?
set(INSTALL_PATH_LIB $ENV{HOME}/${CMAKE_PROJECT_NAME}/lib) set(INSTALL_PATH_LIB $ENV{HOME}/${CMAKE_PROJECT_NAME}/lib)
set(INSTALL_PATH_INCLUDE $ENV{HOME}/${CMAKE_PROJECT_NAME}/include) set(INSTALL_PATH_INCLUDE $ENV{HOME}/${CMAKE_PROJECT_NAME}/include)
else() else()
@ -95,11 +103,14 @@ endif()
string(TOLOWER ${CMAKE_SYSTEM_NAME} SYSTEM_NAME_LOWER) string(TOLOWER ${CMAKE_SYSTEM_NAME} SYSTEM_NAME_LOWER)
# , bin, lib # , bin, lib
# Windows 32/64 # Windows 32/64
# Set the output directory, including bin, lib and other files
# Windows no longer distinguishes 32/64
set(OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/release/${SYSTEM_NAME_LOWER}/${CMAKE_BUILD_TYPE}) set(OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/release/${SYSTEM_NAME_LOWER}/${CMAKE_BUILD_TYPE})
set(LIBRARY_OUTPUT_PATH ${OUTPUT_DIR}) set(LIBRARY_OUTPUT_PATH ${OUTPUT_DIR})
set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR})
# git # git
# Add git version information
set(COMMIT_HASH "Git_Unkown_commit") set(COMMIT_HASH "Git_Unkown_commit")
set(COMMIT_TIME "Git_Unkown_time") set(COMMIT_TIME "Git_Unkown_time")
set(BRANCH_NAME "Git_Unkown_branch") set(BRANCH_NAME "Git_Unkown_branch")
@ -140,6 +151,7 @@ message(STATUS "Git version is ${BRANCH_NAME} ${COMMIT_HASH}/${COMMIT_TIME} ${BU
############################################################################## ##############################################################################
# 便 # 便
# Convenient to modify global variables
function(update_cached name value) function(update_cached name value)
set("${name}" "${value}" CACHE INTERNAL "*** Internal ***" FORCE) set("${name}" "${value}" CACHE INTERNAL "*** Internal ***" FORCE)
endfunction() endfunction()
@ -202,6 +214,7 @@ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
endif() endif()
# mediakit runtime # mediakit runtime
# mediakit and various runtime dependencies
update_cached(MK_LINK_LIBRARIES "") update_cached(MK_LINK_LIBRARIES "")
update_cached(MK_COMPILE_DEFINITIONS ENABLE_VERSION) update_cached(MK_COMPILE_DEFINITIONS ENABLE_VERSION)
@ -226,9 +239,11 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
endif() endif()
# ffmpeg , # ffmpeg ,
# Multiple modules depend on ffmpeg related libraries, unified search
if(ENABLE_FFMPEG) if(ENABLE_FFMPEG)
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
# ffmpeg/libutil # ffmpeg/libutil
# find ffmpeg/libutil installed
if(PKG_CONFIG_FOUND) if(PKG_CONFIG_FOUND)
pkg_check_modules(AVUTIL QUIET IMPORTED_TARGET libavutil) pkg_check_modules(AVUTIL QUIET IMPORTED_TARGET libavutil)
if(AVUTIL_FOUND) if(AVUTIL_FOUND)
@ -238,6 +253,7 @@ if(ENABLE_FFMPEG)
endif() endif()
# ffmpeg/libavcodec # ffmpeg/libavcodec
# find ffmpeg/libavcodec installed
if(PKG_CONFIG_FOUND) if(PKG_CONFIG_FOUND)
pkg_check_modules(AVCODEC QUIET IMPORTED_TARGET libavcodec) pkg_check_modules(AVCODEC QUIET IMPORTED_TARGET libavcodec)
if(AVCODEC_FOUND) if(AVCODEC_FOUND)
@ -247,6 +263,7 @@ if(ENABLE_FFMPEG)
endif() endif()
# ffmpeg/libswscale # ffmpeg/libswscale
# find ffmpeg/libswscale installed
if(PKG_CONFIG_FOUND) if(PKG_CONFIG_FOUND)
pkg_check_modules(SWSCALE QUIET IMPORTED_TARGET libswscale) pkg_check_modules(SWSCALE QUIET IMPORTED_TARGET libswscale)
if(SWSCALE_FOUND) if(SWSCALE_FOUND)
@ -256,6 +273,7 @@ if(ENABLE_FFMPEG)
endif() endif()
# ffmpeg/libswresample # ffmpeg/libswresample
# find ffmpeg/libswresample installed
if(PKG_CONFIG_FOUND) if(PKG_CONFIG_FOUND)
pkg_check_modules(SWRESAMPLE QUIET IMPORTED_TARGET libswresample) pkg_check_modules(SWRESAMPLE QUIET IMPORTED_TARGET libswresample)
if(SWRESAMPLE_FOUND) if(SWRESAMPLE_FOUND)
@ -265,6 +283,7 @@ if(ENABLE_FFMPEG)
endif() endif()
# ffmpeg/libutil # ffmpeg/libutil
# find ffmpeg/libutil installed
if(NOT AVUTIL_FOUND) if(NOT AVUTIL_FOUND)
find_package(AVUTIL QUIET) find_package(AVUTIL QUIET)
if(AVUTIL_FOUND) if(AVUTIL_FOUND)
@ -275,6 +294,7 @@ if(ENABLE_FFMPEG)
endif () endif ()
# ffmpeg/libavcodec # ffmpeg/libavcodec
# find ffmpeg/libavcodec installed
if(NOT AVCODEC_FOUND) if(NOT AVCODEC_FOUND)
find_package(AVCODEC QUIET) find_package(AVCODEC QUIET)
if(AVCODEC_FOUND) if(AVCODEC_FOUND)
@ -285,6 +305,7 @@ if(ENABLE_FFMPEG)
endif() endif()
# ffmpeg/libswscale # ffmpeg/libswscale
# find ffmpeg/libswscale installed
if(NOT SWSCALE_FOUND) if(NOT SWSCALE_FOUND)
find_package(SWSCALE QUIET) find_package(SWSCALE QUIET)
if(SWSCALE_FOUND) if(SWSCALE_FOUND)
@ -295,6 +316,7 @@ if(ENABLE_FFMPEG)
endif() endif()
# ffmpeg/libswresample # ffmpeg/libswresample
# find ffmpeg/libswresample installed
if(NOT SWRESAMPLE_FOUND) if(NOT SWRESAMPLE_FOUND)
find_package(SWRESAMPLE QUIET) find_package(SWRESAMPLE QUIET)
if(SWRESAMPLE_FOUND) if(SWRESAMPLE_FOUND)
@ -309,7 +331,7 @@ if(ENABLE_FFMPEG)
update_cached_list(MK_LINK_LIBRARIES ${CMAKE_DL_LIBS}) update_cached_list(MK_LINK_LIBRARIES ${CMAKE_DL_LIBS})
else() else()
set(ENABLE_FFMPEG OFF) set(ENABLE_FFMPEG OFF)
message(WARNING "ffmpeg 相关功能未找到") message(WARNING "ffmpeg related functions not found")
endif() endif()
endif() endif()
@ -317,7 +339,7 @@ if(ENABLE_MEM_DEBUG)
update_cached_list(MK_LINK_LIBRARIES update_cached_list(MK_LINK_LIBRARIES
"-Wl,-wrap,free;-Wl,-wrap,malloc;-Wl,-wrap,realloc;-Wl,-wrap,calloc") "-Wl,-wrap,free;-Wl,-wrap,malloc;-Wl,-wrap,realloc;-Wl,-wrap,calloc")
update_cached_list(MK_COMPILE_DEFINITIONS ENABLE_MEM_DEBUG) update_cached_list(MK_COMPILE_DEFINITIONS ENABLE_MEM_DEBUG)
message(STATUS "已启用内存调试功能") message(STATUS "Memory debugging enabled")
endif() endif()
if(ENABLE_ASAN) if(ENABLE_ASAN)
@ -327,10 +349,11 @@ if(ENABLE_ASAN)
# > In order to use AddressSanitizer you will need to # > In order to use AddressSanitizer you will need to
# > compile and link your program using clang with the -fsanitize=address switch. # > compile and link your program using clang with the -fsanitize=address switch.
update_cached_list(MK_LINK_LIBRARIES "-fsanitize=address") update_cached_list(MK_LINK_LIBRARIES "-fsanitize=address")
message(STATUS "已启用 Address Sanitize") message(STATUS "Address Sanitize enabled")
endif() endif()
# TODO: jemalloc ? # jemalloc
# Static compilation after downloading jemalloc
set(DEP_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdpart/external-${CMAKE_SYSTEM_NAME}) set(DEP_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdpart/external-${CMAKE_SYSTEM_NAME})
if(ENABLE_JEMALLOC_STATIC) if(ENABLE_JEMALLOC_STATIC)
if(NOT EXISTS ${DEP_ROOT_DIR}) if(NOT EXISTS ${DEP_ROOT_DIR})
@ -345,10 +368,12 @@ if(ENABLE_JEMALLOC_STATIC)
include_directories(SYSTEM ${DEP_ROOT_DIR}/${JEMALLOC_NAME}/include/jemalloc) include_directories(SYSTEM ${DEP_ROOT_DIR}/${JEMALLOC_NAME}/include/jemalloc)
link_directories(${DEP_ROOT_DIR}/${JEMALLOC_NAME}/lib) link_directories(${DEP_ROOT_DIR}/${JEMALLOC_NAME}/lib)
# #
# Used to affect subsequent lookup process
set(JEMALLOC_ROOT_DIR "${DEP_ROOT_DIR}/${JEMALLOC_NAME}") set(JEMALLOC_ROOT_DIR "${DEP_ROOT_DIR}/${JEMALLOC_NAME}")
endif() endif()
# jemalloc # jemalloc
# Link the jemalloc library by default to avoid memory fragmentation
find_package(JEMALLOC QUIET) find_package(JEMALLOC QUIET)
if(JEMALLOC_FOUND) if(JEMALLOC_FOUND)
message(STATUS "found library: ${JEMALLOC_LIBRARIES}") message(STATUS "found library: ${JEMALLOC_LIBRARIES}")
@ -363,6 +388,7 @@ if(JEMALLOC_FOUND)
endif() endif()
# openssl # openssl
# find openssl installed
find_package(OpenSSL QUIET) find_package(OpenSSL QUIET)
if(OPENSSL_FOUND AND ENABLE_OPENSSL) if(OPENSSL_FOUND AND ENABLE_OPENSSL)
message(STATUS "found library: ${OPENSSL_LIBRARIES}, ENABLE_OPENSSL defined") message(STATUS "found library: ${OPENSSL_LIBRARIES}, ENABLE_OPENSSL defined")
@ -379,6 +405,7 @@ else()
endif() endif()
# mysql # mysql
# find mysql installed
find_package(MYSQL QUIET) find_package(MYSQL QUIET)
if(MYSQL_FOUND AND ENABLE_MYSQL) if(MYSQL_FOUND AND ENABLE_MYSQL)
message(STATUS "found library: ${MYSQL_LIBRARIES}, ENABLE_MYSQL defined") message(STATUS "found library: ${MYSQL_LIBRARIES}, ENABLE_MYSQL defined")
@ -391,6 +418,7 @@ if(MYSQL_FOUND AND ENABLE_MYSQL)
endif() endif()
# x264 # x264
# find x264 installed
find_package(X264 QUIET) find_package(X264 QUIET)
if(X264_FOUND AND ENABLE_X264) if(X264_FOUND AND ENABLE_X264)
message(STATUS "found library: ${X264_LIBRARIES}, ENABLE_X264 defined") message(STATUS "found library: ${X264_LIBRARIES}, ENABLE_X264 defined")
@ -401,6 +429,7 @@ if(X264_FOUND AND ENABLE_X264)
endif() endif()
# faac # faac
# find faac installed
find_package(FAAC QUIET) find_package(FAAC QUIET)
if(FAAC_FOUND AND ENABLE_FAAC) if(FAAC_FOUND AND ENABLE_FAAC)
message(STATUS "found library:${FAAC_LIBRARIES}, ENABLE_FAAC defined") message(STATUS "found library:${FAAC_LIBRARIES}, ENABLE_FAAC defined")
@ -468,26 +497,31 @@ if(ENABLE_PLAYER AND ENABLE_FFMPEG)
endif() endif()
#MediaServer #MediaServer
#MediaServer main program
if(ENABLE_SERVER) if(ENABLE_SERVER)
add_subdirectory(server) add_subdirectory(server)
endif() endif()
# Android add_subdirectory # Android add_subdirectory
# Android will add_subdirectory and depend on this variable
if(ENABLE_SERVER_LIB AND NOT CMAKE_PARENT_LIST_FILE STREQUAL CMAKE_CURRENT_LIST_FILE) if(ENABLE_SERVER_LIB AND NOT CMAKE_PARENT_LIST_FILE STREQUAL CMAKE_CURRENT_LIST_FILE)
set(MK_LINK_LIBRARIES ${MK_LINK_LIBRARIES} PARENT_SCOPE) set(MK_LINK_LIBRARIES ${MK_LINK_LIBRARIES} PARENT_SCOPE)
endif() endif()
# IOS # IOS
# IOS does not compile executable programs
if(IOS) if(IOS)
return() return()
endif() endif()
#cppdemo #cppdemo
#cpp test demo program
if (ENABLE_TESTS) if (ENABLE_TESTS)
add_subdirectory(tests) add_subdirectory(tests)
endif () endif ()
# www # www
# Copy www folder, configuration file, default certificate
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/www" DESTINATION ${EXECUTABLE_OUTPUT_PATH}) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/www" DESTINATION ${EXECUTABLE_OUTPUT_PATH})
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/conf/config.ini" DESTINATION ${EXECUTABLE_OUTPUT_PATH}) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/conf/config.ini" DESTINATION ${EXECUTABLE_OUTPUT_PATH})
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/default.pem" DESTINATION ${EXECUTABLE_OUTPUT_PATH}) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/default.pem" DESTINATION ${EXECUTABLE_OUTPUT_PATH})

View File

@ -23,6 +23,7 @@ void HlsPlayer::play(const string &url) {
_play_result = false; _play_result = false;
_play_url = url; _play_url = url;
setProxyUrl((*this)[Client::kProxyUrl]); setProxyUrl((*this)[Client::kProxyUrl]);
setAllowResendRequest(true);
fetchIndexFile(); fetchIndexFile();
} }
@ -99,6 +100,7 @@ void HlsPlayer::fetchSegment() {
if (!_http_ts_player) { if (!_http_ts_player) {
_http_ts_player = std::make_shared<HttpTSPlayer>(getPoller()); _http_ts_player = std::make_shared<HttpTSPlayer>(getPoller());
_http_ts_player->setProxyUrl((*this)[Client::kProxyUrl]); _http_ts_player->setProxyUrl((*this)[Client::kProxyUrl]);
_http_ts_player->setAllowResendRequest(true);
_http_ts_player->setOnCreateSocket([weak_self](const EventPoller::Ptr &poller) { _http_ts_player->setOnCreateSocket([weak_self](const EventPoller::Ptr &poller) {
auto strong_self = weak_self.lock(); auto strong_self = weak_self.lock();
if (strong_self) { if (strong_self) {

View File

@ -56,10 +56,14 @@ void HttpClient::sendRequest(const string &url) {
splitUrl(host, host, port); splitUrl(host, host, port);
_header.emplace("Host", host_header); _header.emplace("Host", host_header);
_header.emplace("User-Agent", kServerName); _header.emplace("User-Agent", kServerName);
_header.emplace("Connection", "keep-alive");
_header.emplace("Accept", "*/*"); _header.emplace("Accept", "*/*");
_header.emplace("Accept-Language", "zh-CN,zh;q=0.8"); _header.emplace("Accept-Language", "zh-CN,zh;q=0.8");
if (_http_persistent) {
_header.emplace("Connection", "keep-alive");
} else {
_header.emplace("Connection", "close");
}
_http_persistent = true;
if (_body && _body->remainSize()) { if (_body && _body->remainSize()) {
_header.emplace("Content-Length", to_string(_body->remainSize())); _header.emplace("Content-Length", to_string(_body->remainSize()));
_header.emplace("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); _header.emplace("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
@ -78,7 +82,7 @@ void HttpClient::sendRequest(const string &url) {
printer.pop_back(); printer.pop_back();
_header.emplace("Cookie", printer); _header.emplace("Cookie", printer);
} }
if (!alive() || host_changed) { if (!alive() || host_changed || !_http_persistent) {
if (isUsedProxy()) { if (isUsedProxy()) {
_proxy_connected = false; _proxy_connected = false;
startConnect(_proxy_host, _proxy_port, _wait_header_ms / 1000.0f); startConnect(_proxy_host, _proxy_port, _wait_header_ms / 1000.0f);
@ -189,6 +193,17 @@ void HttpClient::onRecv(const Buffer::Ptr &pBuf) {
} }
void HttpClient::onError(const SockException &ex) { void HttpClient::onError(const SockException &ex) {
if (ex.getErrCode() == Err_reset && _allow_resend_request && _http_persistent && _recved_body_size == 0 && !_header_recved) {
// 连接被重置,可能是服务器主动断开了连接, 或者服务器内核参数或防火墙的持久连接空闲时间超时或不一致.
// 如果是持久化连接,那么我们可以通过重连来解决这个问题
// The connection was reset, possibly because the server actively disconnected the connection,
// or the persistent connection idle time of the server kernel parameters or firewall timed out or inconsistent.
// If it is a persistent connection, then we can solve this problem by reconnecting
WarnL << "http persistent connect reset, try reconnect";
_http_persistent = false;
sendRequest(_url);
return;
}
onResponseCompleted_l(ex); onResponseCompleted_l(ex);
} }
@ -437,4 +452,7 @@ bool HttpClient::checkProxyConnected(const char *data, size_t len) {
return _proxy_connected; return _proxy_connected;
} }
void HttpClient::setAllowResendRequest(bool allow) {
_allow_resend_request = allow;
}
} /* namespace mediakit */ } /* namespace mediakit */

View File

@ -146,6 +146,13 @@ public:
*/ */
void setProxyUrl(std::string proxy_url); void setProxyUrl(std::string proxy_url);
/**
* ,
* If the reuse connection fails, whether to allow the request to be resent
* @param allow true: / true: allow the request to be resent
*/
void setAllowResendRequest(bool allow);
protected: protected:
/** /**
* http回复头 * http回复头
@ -201,6 +208,8 @@ private:
//for http response //for http response
bool _complete = false; bool _complete = false;
bool _header_recved = false; bool _header_recved = false;
bool _http_persistent = true;
bool _allow_resend_request = false;
size_t _recved_body_size; size_t _recved_body_size;
ssize_t _total_body_size; ssize_t _total_body_size;
Parser _parser; Parser _parser;

View File

@ -3,7 +3,7 @@
"info": { "info": {
"title": "ZLMediaKit HTTP API", "title": "ZLMediaKit HTTP API",
"description": "You can test the HTTP API provided by ZlMediaKit here. For usage documentation, please refer to [here](https://docs.zlmediakit.com/guide/media_server/restful_api.html)", "description": "You can test the HTTP API provided by ZlMediaKit here. For usage documentation, please refer to [here](https://docs.zlmediakit.com/guide/media_server/restful_api.html)",
"version": "ZLMediaKit(git hash:\"644a333\"/\"2023-11-30T17:58:28+08:00\",branch:\"master\",build time:\"2023-11-30T14:05:40\")", "version": "ZLMediaKit(git hash:\"5028151\"/\"2023-12-01T14:43:35+08:00\",branch:\"master\",build time:\"2023-12-01T07:54:14\")",
"x-logo": { "x-logo": {
"url": "/logo.png", "url": "/logo.png",
"backgroundColor": "#FFFFFF", "backgroundColor": "#FFFFFF",
@ -45,7 +45,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -70,7 +70,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -97,7 +97,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -122,7 +122,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -149,7 +149,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -174,7 +174,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -201,7 +201,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -226,7 +226,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -253,7 +253,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -278,7 +278,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -305,7 +305,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "api.apiDebug", "name": "api.apiDebug",
@ -339,7 +339,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "api.apiDebug", "name": "api.apiDebug",
@ -375,7 +375,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -400,7 +400,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -427,7 +427,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -452,7 +452,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -479,7 +479,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -540,7 +540,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -603,7 +603,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -664,7 +664,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -727,7 +727,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -752,7 +752,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -779,7 +779,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "id", "name": "id",
@ -813,7 +813,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "id", "name": "id",
@ -849,7 +849,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -874,7 +874,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -901,7 +901,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -962,7 +962,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -1025,7 +1025,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -1059,7 +1059,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -1095,7 +1095,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1165,7 +1165,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1237,7 +1237,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -1271,7 +1271,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -1307,7 +1307,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "src_url", "name": "src_url",
@ -1377,7 +1377,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "src_url", "name": "src_url",
@ -1449,7 +1449,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -1482,7 +1482,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -1517,7 +1517,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1578,7 +1578,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1641,7 +1641,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1702,7 +1702,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1765,7 +1765,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1834,7 +1834,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1905,7 +1905,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -1966,7 +1966,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "schema", "name": "schema",
@ -2029,7 +2029,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -2099,7 +2099,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -2171,7 +2171,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -2232,7 +2232,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -2295,7 +2295,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "type", "name": "type",
@ -2356,7 +2356,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "type", "name": "type",
@ -2419,7 +2419,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -2480,7 +2480,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -2543,7 +2543,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -2604,7 +2604,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -2667,7 +2667,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "type", "name": "type",
@ -2728,7 +2728,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "type", "name": "type",
@ -2791,7 +2791,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "type", "name": "type",
@ -2852,7 +2852,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "type", "name": "type",
@ -2915,7 +2915,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "url", "name": "url",
@ -2967,7 +2967,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "url", "name": "url",
@ -3021,7 +3021,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3055,7 +3055,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3091,7 +3091,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "port", "name": "port",
@ -3143,7 +3143,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "port", "name": "port",
@ -3197,7 +3197,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "dst_url", "name": "dst_url",
@ -3249,7 +3249,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "dst_url", "name": "dst_url",
@ -3303,7 +3303,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3337,7 +3337,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3373,7 +3373,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3416,7 +3416,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3461,7 +3461,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3495,7 +3495,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3531,7 +3531,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3565,7 +3565,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "stream_id", "name": "stream_id",
@ -3601,7 +3601,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -3626,7 +3626,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -3653,7 +3653,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -3741,7 +3741,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -3831,7 +3831,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -3892,7 +3892,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -3955,7 +3955,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -4007,7 +4007,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -4060,7 +4060,7 @@
"schema": { "schema": {
"type": "string" "type": "string"
}, },
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -4084,7 +4084,7 @@
"schema": { "schema": {
"type": "string" "type": "string"
}, },
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
} }
], ],
"responses": { "responses": {
@ -4110,7 +4110,7 @@
"schema": { "schema": {
"type": "string" "type": "string"
}, },
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -4142,7 +4142,7 @@
"schema": { "schema": {
"type": "string" "type": "string"
}, },
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -4176,7 +4176,7 @@
"schema": { "schema": {
"type": "string" "type": "string"
}, },
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -4208,7 +4208,7 @@
"schema": { "schema": {
"type": "string" "type": "string"
}, },
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "key", "name": "key",
@ -4243,7 +4243,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",
@ -4304,7 +4304,7 @@
"type": "string" "type": "string"
}, },
"description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)",
"example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp"
}, },
{ {
"name": "vhost", "name": "vhost",