<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="smart-doc"><%if(isNotEmpty(projectName)){%><title>${projectName}</title><%}else{%><title>API Reference</title><%}%><link rel="stylesheet" href="font.css"><link rel="stylesheet" href="AllInOne.css?v=${version}"/><%if(isNotEmpty(highlightCssLink)){%><link rel="stylesheet" href="${highlightCssLink}"><%}%><style>.literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint {background: ${background}  } .hljs {padding: 0 }</style><script src="highlight.min.js"></script><script src="jquery.min.js"></script></head><body class="book toc2 toc-left"><div id="header"><%if(isNotEmpty(projectName)){%><h1>${projectName}</h1><%}%><div id="toc" class="toc2"><div id="book-search-input"><input id="search" type="text" placeholder="Type to search"></div><div id="toctitle"><span>API Reference</span></div><ul id="accordion" class="sectlevel1"><%for(apiGroup in apiDocList){%><%if(!apiDocListOnlyHasDefaultGroup){%><%if(apiGroupLP.first){%><li class="open"><a class="dd" href="#_${apiGroup.order}_${apiGroup.group}">${apiGroup.order}.&nbsp;${htmlEscape(apiGroup.group)}</a><ul class="sectlevel1"><%for(api in apiGroup.childrenApiDocs){%><li class="open"><a class="dd" href="#_${apiGroup.order}_${api.order}_${removeLineBreaks(api.desc)}">${apiGroup.order}.${api.order}.&nbsp;${htmlEscape(api.desc)}</a><ul class="sectlevel2" style="display: block"><%for(doc in api.list){%><li><%if(doc.deprecated){%><a href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}">${apiGroup.order}.${api.order}.${doc.order}.&nbsp;<span class="line-through">${htmlEscape(doc.desc)}</span></a><%}else{%><a href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}">${apiGroup.order}.${api.order}.${doc.order}.&nbsp;${htmlEscape(doc.desc)}</a><%}%></li><%}%></ul></li><%}%></ul></li><%}else{%><li><a class="dd" href="#_${apiGroup.group}">${apiGroup.order}.&nbsp;${htmlEscape(apiGroup.group)}</a><ul class="sectlevel1"><%for(api in apiGroup.childrenApiDocs){%><li class="open"><a class="dd" href="#_${apiGroup.order}_${api.order}_${removeLineBreaks(api.desc)}">${apiGroup.order}.${api.order}.&nbsp;${htmlEscape(api.desc)}</a><ul class="sectlevel2"><%for(doc in api.list){%><li><%if(doc.deprecated){%><a href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}">${apiGroup.order}.${api.order}.${doc.order}.&nbsp;<span class="line-through">${htmlEscape(doc.desc)}</span></a><%}else{%><a href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}">${apiGroup.order}.${api.order}.${doc.order}.&nbsp;${htmlEscape(doc.desc)}</a><%}%></li><%}%></ul></li><%}%></ul></li><%}%><%}else{%><%if(apiGroupLP.first){%><%for(api in apiGroup.childrenApiDocs){%><li class="open"><a class="dd" href="#_${apiGroup.order}_${api.order}_${removeLineBreaks(api.desc)}">${api.order}.&nbsp;${htmlEscape(api.desc)}</a><ul class="sectlevel2"><%for(doc in api.list){%><li><%if(doc.deprecated){%><a href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}">${api.order}.${doc.order}.&nbsp;<span class="line-through">${htmlEscape(doc.desc)}</span></a><%}else{%><a href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}">${api.order}.${doc.order}.&nbsp;${htmlEscape(doc.desc)}</a><%}%></li><%}%></ul></li><%}%><%}else{%><%for(api in apiGroup.childrenApiDocs){%><li><a class="dd" href="#_${apiGroup.order}_${api.order}_${api.desc}">${api.order}.&nbsp;${htmlEscape(api.desc)}</a><ul class="sectlevel2"><%for(doc in api.list){%><li><%if(doc.deprecated){%><a href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}">${api.order}.${doc.order}.&nbsp;<span class="line-through">${htmlEscape(doc.desc)}</span></a><%}else{%><a href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}">${api.order}.${doc.order}.&nbsp;${htmlEscape(doc.desc)}</a><%}%></li><%}%></ul></li><%}%><%}%><%}%><%}%><%if(isNotEmpty(errorCodeList)){%><li><a href="#_${errorListTitle}">${errorCodeListOrder}.&nbsp;${errorListTitle}</a></li><%}%><%if(isNotEmpty(dictList)){%><li><a class="dd" href="#_${dictListTitle}">${dictListOrder}.&nbsp;${dictListTitle}</a><ul class="sectlevel2"><%for(dict in dictList){%><li><a href="#_${dictListOrder}_${dict.order}_${dict.title}">${dictListOrder}.${dict.order}.&nbsp;${dict.title}</a></li><%}%></ul></li><%}%></ul></div></div><div id="content"><%if(isNotEmpty(revisionLogList)){%><div id="preamble"><div class="sectionbody"><table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 20%;"><col style="width: 20%;"><col style="width: 20%;"><col style="width: 20%;"><col style="width: 20%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">Version</th><th class="tableblock halign-left valign-top">Update Time</th><th class="tableblock halign-left valign-top">Status</th><th class="tableblock halign-left valign-top">Author</th><th class="tableblock halign-left valign-top">Description</th></tr></thead><tbody><%for(revisionLog in revisionLogList){%><tr><td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.version}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.revisionTime}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.status}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.author}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${htmlEscape(revisionLog.remarks)}</p></td></tr><%}%></tbody></table></div></div><%}%><%for(apiGroup in apiDocList){%><%if(!apiDocListOnlyHasDefaultGroup){%><h1 id="_${apiGroup.order}_${apiGroup.name}"><a class="anchor" href="#_${apiGroup.order}_${apiGroup.name}"></a><a class="link"  href="#_${apiGroup.order}_${apiGroup.name}">${apiGroup.order}.&nbsp;${htmlEscape(apiGroup.name)}</a></h1><%}%><%for(api in apiGroup.childrenApiDocs){%><div class="sect1"><h2 id="_${apiGroup.order}_${api.order}_${removeLineBreaks(api.desc)}"><a class="anchor" href="#_${apiGroup.order}_${api.order}_${api.desc}"></a><a class="link" href="#_${apiGroup.order}_${api.order}_${removeLineBreaks(api.desc)}"><%if(!apiDocListOnlyHasDefaultGroup){%>${apiGroup.order}.${api.order}.&nbsp;${htmlEscape(api.desc)}<%}else{%>${api.order}.&nbsp;${htmlEscape(api.desc)}<%}%></a></h2><div class="sectionbody"><%for(doc in api.list){%><div class="sect2" id="${doc.methodId}"><h3 id="_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}"><a class="anchor" href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}"></a><%if(doc.deprecated){%><a class="link" href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}"><%if(!apiDocListOnlyHasDefaultGroup){%>${apiGroup.order}.${api.order}.${doc.order}.&nbsp;<%}else{%>${api.order}.${doc.order}.&nbsp;<%}%><span class="line-through">${htmlEscape(doc.desc)}</span></a><%}else{%><a class="link" href="#_${apiGroup.order}_${api.order}_${doc.order}_${removeLineBreaks(doc.desc)}"><%if(!apiDocListOnlyHasDefaultGroup){%>${apiGroup.order}.${api.order}.${doc.order}.&nbsp;${htmlEscape(doc.desc)}<%}else{%>${api.order}.${doc.order}.&nbsp;${htmlEscape(doc.desc)}<%}%></a><%}%></h3><div class="paragraph" id="${doc.methodId}-url" data-url="${doc.url}" data-download="${doc.download}" data-page="${doc.page}"><p><strong>URL:</strong><a href="${doc.url}"  class="bare">&nbsp;${doc.url}</a></p></div><div class="paragraph" id="${doc.methodId}-method" data-method="${doc.type}"><p><strong>Type:</strong>&nbsp;${doc.type}</p></div><%if(isNotEmpty(doc.author)){%><div class="paragraph"><p><strong>Author:</strong>&nbsp;${doc.author}</p></div><%}%><div class="paragraph" id="${doc.methodId}-content-type" data-content-type="${doc.contentType}"><p><strong>Content-Type:</strong>&nbsp;${doc.contentType}</p></div><div class="paragraph"><p><strong>Description:</strong>&nbsp;${htmlEscape(doc.detail)}</p></div><%if(isNotEmpty(doc.requestHeaders)&&displayRequestParams){%><div class="paragraph"><p><strong>Request-headers:</strong></p></div><table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 5%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top"><div class="checkbox"><input type="checkbox" class="check-all" id="${doc.methodId}-header-checkbox" name="${doc.methodId}-header-checkbox" checked="checked"><label for="${doc.methodId}-header-checkbox"></label></div></th><th class="tableblock halign-left valign-top">Header</th><th class="tableblock halign-left valign-top">Value</th><th class="tableblock halign-left valign-top">Type</th><th class="tableblock halign-left valign-top">Required</th><th class="tableblock halign-left valign-top">Description</th></tr></thead><tbody id="${doc.methodId}-header"><%for(header in doc.requestHeaders){%><tr><td class="tableblock halign-left valign-top"><div class="checkbox"><input type="checkbox" id="${doc.methodId}-header-${header.name}" name="${doc.methodId}-header-checkbox" checked="checked"><label for="${doc.methodId}-header-${header.name}"></label></div></td><td class="tableblock halign-left valign-top"><p class="tableblock">${header.name}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock"><input name="${header.name}" type="text" value="${header.value}"/></td><td class="tableblock halign-left valign-top"><p class="tableblock">${header.type}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${header.required}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${htmlEscape(header.desc)}</p></td></tr><%}%></tbody></table><%}%><%if(isNotEmpty(doc.pathParams)&&displayRequestParams){%><div class="paragraph"><p><strong>Path-parameters:</strong></p></div><table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 5%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top"><div class='checkbox'><input type="checkbox" class="check-all" id="${doc.methodId}-path-checkbox" name="${doc.methodId}-path-checkbox" checked="checked"><label for='${doc.methodId}-path-checkbox'></label></div></th><th class="tableblock halign-left valign-top">Parameter</th><th class="tableblock halign-left valign-top">Value</th><th class="tableblock halign-left valign-top">Type</th><th class="tableblock halign-left valign-top">Required</th><th class="tableblock halign-left valign-top">Description</th></tr></thead><tbody id="${doc.methodId}-path-params"><%for(param in doc.pathParams){%><tr><td class="tableblock halign-left valign-top"><div class="checkbox"><input type="checkbox" id="${doc.methodId}-path-${param.field}" checked="checked" name="${doc.methodId}-path-checkbox"><label for="${doc.methodId}-path-${param.field}"></label></div></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.field}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock"><input name="${param.field}" type="text" value="${param.value}"/></p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.type}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.required}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.desc}</p></td></tr><%}%></tbody></table><%}%><%if(isNotEmpty(doc.queryParams)&&displayRequestParams){%><div class="paragraph"><p><strong>Query-parameters:</strong></p></div><table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 5%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"><col style="width: 19%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top"><div class='checkbox'><input type="checkbox" class="check-all" id="${doc.methodId}-query-checkbox" checked="checked" name="${doc.methodId}-query-checkbox"><label for="${doc.methodId}-query-checkbox"></label></div></th><th class="tableblock halign-left valign-top">Parameter</th><th class="tableblock halign-left valign-top">Value</th><th class="tableblock halign-left valign-top">Type</th><th class="tableblock halign-left valign-top">Required</th><th class="tableblock halign-left valign-top">Description</th></tr></thead><tbody id="${doc.methodId}-query-params"><%for(param in doc.queryParams){%><tr><td class="tableblock halign-left valign-top"><div class='checkbox'><input type="checkbox" id="${doc.methodId}-query-${param.field}" checked="checked" name="${doc.methodId}-query-checkbox"><label for="${doc.methodId}-query-${param.field}"></label></div></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.field}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock"><%if(param.type=="file"&&!param.hasItems){%><input name="${param.field}" type="file" value="${param.value}"/><%}else if(param.type=="file"&&param.hasItems){%><input name="${param.field}" type="file" value="${param.value}"/><%}else{%><input name="${param.field}" type="text" value="${param.value}"/><%}%></p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.type}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.required}</p></td><%if(param.version!='-'){%><td class="tableblock halign-left valign-top"><p class="tableblock">${param.desc}@since ${param.version}</p></td><%}else{%><td class="tableblock halign-left valign-top"><p class="tableblock">${param.desc}</p></td><%}%></tr><%}%></tbody></table><%}%><%if(isNotEmpty(doc.requestParams)&&displayRequestParams){%><div class="paragraph"><p><strong>Body-parameters:</strong></p></div><table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 20%;"><col style="width: 20%;"><col style="width: 20%;"><col style="width: 20%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">Parameter</th><th class="tableblock halign-left valign-top">Type</th><th class="tableblock halign-left valign-top">Required</th><th class="tableblock halign-left valign-top">Description</th></tr></thead><tbody><%for(param in doc.requestParams){%><tr><td class="tableblock halign-left valign-top"><p class="tableblock">${param.field}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.type}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.required}</p></td><%if(param.version!='-'){%><td class="tableblock halign-left valign-top"><p class="tableblock">${param.desc}@since ${param.version}</p></td><%}else{%><td class="tableblock halign-left valign-top"><p class="tableblock">${param.desc}</p></td><%}%></tr><%}%></tbody></table><%}%><%if(isNotEmpty(doc.requestExample.jsonBody)&&isRequestExample){%><div class="paragraph"><p><strong>Request-body:</strong></p></div><div class="listingblock"><div class="content"><pre><code contenteditable="plaintext-only" id="${doc.methodId}-body">${doc.requestExample.jsonBody}</code></pre></div></div><%}%><%if(isNotEmpty(doc.responseParams)&&displayResponseParams){%><div class="paragraph"><p><strong>Response-fields:</strong></p></div><table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 25%;"><col style="width: 25%;"><col style="width: 25%;"><col style="width: 25%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">Field</th><th class="tableblock halign-left valign-top">Type</th><th class="tableblock halign-left valign-top">Description</th><th class="tableblock halign-left valign-top">Since</th></tr></thead><tbody><%for(param in doc.responseParams){%><tr><td class="tableblock halign-left valign-top"><p class="tableblock">${param.field}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.type}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.desc}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${param.version}</p></td></tr><%}%></tbody></table><%}%><div class="paragraph"><p><strong><button class="send-button" data-id="${doc.methodId}">Send Request</button></strong><span id="${doc.methodId}-resp-status"></span></p></div><%if(isNotEmpty(doc.responseUsage)&&isResponseExample){%><div class="paragraph"><p><strong>Response-example:</strong></p></div><div class="listingblock"><div class="content" id="${doc.methodId}-response"><pre><code class="json">${doc.responseUsage}</code></pre></div></div><%}%><%if(isNotEmpty(doc.requestUsage)&&isRequestExample){%><div class="paragraph"><p><strong>Curl-example:</strong></p></div><div class="listingblock"><div class="content" id="${doc.methodId}-curl"><pre><code class="bash">${doc.requestUsage}</code></pre></div></div><%}%></div><%}%></div></div><%}%><%}%><%if(isNotEmpty(errorCodeList)){%><div class="sect1"><h2 id="_${errorListTitle}"><a class="anchor" href="#_${errorListTitle}"></a><a class="link" href="#_${errorListTitle}">${errorCodeListOrder}.&nbsp;${errorListTitle}</a></h2><div class="sectionbody"><table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 50%;"><col style="width: 50%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">Error code</th><th class="tableblock halign-left valign-top">Description</th></tr></thead><tbody><%for(error in errorCodeList){%><tr><td class="tableblock halign-left valign-top"><p class="tableblock">${error.value}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${htmlEscape(error.desc)}</p></td></tr><%}%></tbody></table></div></div><%}%><%if(isNotEmpty(dictList)){%><div class="sect1"><h2 id="_${dictListTitle}"><a class="anchor" href="#_${dictListTitle}"></a><a class="link" href="#_${dictListTitle}">${dictListOrder}.&nbsp;${dictListTitle}</a></h2><div class="sectionbody"><%for(dict in dictList){%><div class="sect2"><h3 id="_${dictListOrder}_${dict.order}_${removeLineBreaks(dict.title)}"><a class="anchor" href="#_${dictListOrder}_${dict.order}_${removeLineBreaks(dict.title)}"></a><a class="link" href="#_${dictListOrder}_${dict.order}_${removeLineBreaks(dict.title)}">${dictListOrder}.${dict.order}.&nbsp;${htmlEscape(dict.title)}</a></h3><table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 33%;"><col style="width: 33%;"><col style="width: 33%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">Code</th><th class="tableblock halign-left valign-top">Type</th><th class="tableblock halign-left valign-top">Description</th></tr></thead><tbody><%for(dataDict in dict.dataDictList){%><tr><td class="tableblock halign-left valign-top"><p class="tableblock">${dataDict.value}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${dataDict.type}</p></td><td class="tableblock halign-left valign-top"><p class="tableblock">${htmlEscape(dataDict.desc)}</p></td></tr><%}%></tbody></table></div><%}%></div></div><%}%><footer class="page-footer"><span class="copyright">Generated by smart-doc at ${createTime}</span><span class="footer-modification">Suggestions,contact,support and error reporting on<a href="https://gitee.com/smart-doc-team/smart-doc" target="_blank">&nbsp;Gitee</a>&nbsp;or<a href="https://github.com/smart-doc-group/smart-doc.git" target="_blank">&nbsp;Github</a></span></footer><div href="javascript:void(0)" id="toTop"><img id="upArrow" src="data:image/png;base64, "><span id="upText">Top</span></div></div><script src="debug.js?v=${version}"></script><script src="search.js?v=${version}"></script><script>$(function () {$(window).scroll(function () {if ($(window).scrollTop() > 100) {let $toTop = $("#toTop");$toTop.fadeIn(1500);$toTop.hover(function () {$("#upArrow").hide();$("#upText").show()}, function () {$("#upArrow").show();$("#upText").hide()})} else {$("#toTop").fadeOut(1500)}});$("#toTop").click(function () {$("body,html").animate({scrollTop: 0}, 1000);return false})});</script></body></html>