index.html 70 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700
  1. <!DOCTYPE html>
  2. <!--suppress HtmlUnknownAttribute -->
  3. <!--suppress HtmlUnknownAnchorTarget -->
  4. <!--suppress HtmlUnknownTarget -->
  5. <!--suppress HtmlFormInputWithoutLabel -->
  6. <!--suppress XmlDuplicatedId -->
  7. <html lang="en">
  8. <head>
  9. <title>API文档</title>
  10. <meta name="description" content="Bot">
  11. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  13. <link href="assets/bootstrap.min.css?v=1765248900761" rel="stylesheet" media="screen">
  14. <link href="assets/prism.css?v=1765248900761" rel="stylesheet"/>
  15. <link href="assets/prism-toolbar.css?v=1765248900761" rel="stylesheet"/>
  16. <link href="assets/prism-diff-highlight.css?v=1765248900761" rel="stylesheet"/>
  17. <link href="assets/main.css?v=1765248900761" rel="stylesheet" media="screen, print">
  18. <link href="assets/favicon.ico?v=1765248900761" rel="icon" type="image/x-icon">
  19. <link href="assets/apple-touch-icon.png?v=1765248900761" rel="apple-touch-icon" sizes="180x180">
  20. <link href="assets/favicon-32x32.png?v=1765248900761" rel="icon" type="image/png" sizes="32x32">
  21. <link href="assets/favicon-16x16.png?v=1765248900761" rel="icon" type="image/png" sizes="16x16">
  22. <style>
  23. body {
  24. font-family: Arial, sans-serif;
  25. margin: 0;
  26. padding: 0;
  27. background-color: #f4f4f9;
  28. }
  29. .sample-header-content-type-switch {
  30. padding: 10px;
  31. border-radius: 5px;
  32. border: 1px solid #ccc;
  33. background-color: #fff;
  34. font-size: 16px;
  35. cursor: pointer;
  36. }
  37. .sidenav > li.active > a {
  38. background-color: rgba(0, 0, 0, .3);
  39. color: rgba(255, 255, 255, .7);
  40. }
  41. .input-group-addon.sample-request-select {
  42. padding: 0;
  43. }
  44. /* 外部容器 */
  45. .tabs-container {
  46. width: 100%;
  47. /*margin: 30px auto;*/
  48. /*background-color: white;*/
  49. /*box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);*/
  50. /*border-radius: 8px;*/
  51. /*padding: 20px;*/
  52. }
  53. .nav > li {
  54. }
  55. .nav > li > a {
  56. font-size: 14px;
  57. }
  58. .input-group-addon {
  59. min-width: 75px;
  60. }
  61. /* 选项卡头部样式 */
  62. .tabs-header {
  63. display: flex;
  64. height: 45px;
  65. background-color: transparent;
  66. border-bottom: 1px solid #ddd;
  67. margin-top: 5px;
  68. }
  69. .method {
  70. margin: 0 15px 0 0;
  71. padding: 1px 5px;
  72. }
  73. .tab-item {
  74. min-width: 100px;
  75. text-align: center;
  76. padding: 10px;
  77. cursor: pointer;
  78. transition: background-color 0.3s;
  79. font-size: 14px;
  80. color: #337ab7;
  81. }
  82. .tab-item:hover {
  83. /*background-color: #f0f0f0;*/
  84. /*color: #000;*/
  85. text-decoration: none;
  86. background-color: #eee;
  87. border-radius: 4px 4px 0 0;
  88. }
  89. .tab-item.active:hover {
  90. cursor: default;
  91. background-color: #fff;
  92. }
  93. .tab-item.active {
  94. height: 45px;
  95. border: 1px solid #ddd;
  96. border-bottom: 1px solid #fff;
  97. border-radius: 4px 4px 0 0;
  98. color: #555;
  99. background-color: #fff;
  100. }
  101. .well {
  102. border: 0;
  103. background-color: #fff;
  104. box-shadow: none;
  105. }
  106. /* 选项卡内容区域 */
  107. .tabs-content {
  108. display: none;
  109. }
  110. .tabs-content.active {
  111. display: block;
  112. }
  113. .tab-content {
  114. padding: 20px;
  115. background-color: #fff;
  116. border-radius: 0 0 8px 8px;
  117. border: 1px solid #ddd;
  118. border-top: 0;
  119. }
  120. #scrollingNav {
  121. width: 220px;
  122. background-color: #20222A !important;
  123. }
  124. .sidenav > li.nav-header {
  125. /*margin-top:0;*/
  126. /*margin-bottom:0;*/
  127. /*padding-top:8px;*/
  128. /*padding-bottom:8px;*/
  129. font-size: 18px;
  130. margin: 0;
  131. }
  132. .sidenav > li.nav-header > a {
  133. padding: 6.5px 15px;
  134. font-size: 18px;
  135. }
  136. .sidenav:hover {
  137. scrollbar-width: none !important; /* Firefox 隐藏滚动条 */
  138. -ms-overflow-style: none !important; /* IE 10+ 隐藏滚动条 */
  139. }
  140. .sidenav::-webkit-scrollbar {
  141. display: none !important; /* 隐藏滚动条(Webkit 浏览器,如 Chrome、Safari) */
  142. }
  143. .layui-menu-ul {
  144. /*box-sizing:border-box;*/
  145. /*border-radius:2px;font-size:0;*/
  146. /*color:#fff;*/
  147. /*position:relative;*/
  148. /*padding:0;*/
  149. /*background: 0 0;*/
  150. /*margin-top:50px;*/
  151. /*width:220px;*/
  152. padding-bottom: 60px;
  153. background-color: rgba(0, 0, 0, .3);
  154. }
  155. .layui-nav {
  156. margin: 0;
  157. box-sizing: border-box;
  158. font-size: 0;
  159. border-radius: 2px;
  160. color: #fff;
  161. position: relative;
  162. padding: 0;
  163. background: 0 0;
  164. margin-top: 50px;
  165. }
  166. .sidenav > li > a {
  167. color: rgba(255, 255, 255, .7);
  168. width: 100%;
  169. display: block;
  170. border: 3px solid transparent;
  171. /*background-color: rgba(0, 0, 0, .3);*/
  172. }
  173. .sidenav > li:not(.active,.nav-header) > a:hover {
  174. box-sizing: border-box;
  175. border-left: 3px solid #009688;
  176. color: #fff !important;
  177. background-color: #20222A;
  178. transition: all 0.3s;
  179. }
  180. .sidenav-search {
  181. width: 100%;
  182. position: absolute;
  183. left: 0;
  184. background-color: #20222A;
  185. }
  186. .search-reset {
  187. right: 13px;
  188. }
  189. .nav-header.nav-list-item > a {
  190. background-color: #20222A !important;
  191. }
  192. .is-new {
  193. transition: opacity 0.5s ease-in-out;
  194. opacity: 1;
  195. visibility: visible;
  196. }
  197. .is-new.ws-hidden {
  198. opacity: 0;
  199. visibility: hidden;
  200. max-height: 0;
  201. }
  202. .layui-icon-down {
  203. width: 0;
  204. height: 0;
  205. border-left: 6px solid transparent;
  206. border-right: 6px solid transparent;
  207. border-top: 6px solid rgba(255, 255, 255, .7);
  208. position: absolute;
  209. right: 10px;
  210. top: 50%;
  211. }
  212. .layui-icon-up {
  213. width: 0;
  214. height: 0;
  215. border-left: 6px solid transparent;
  216. border-right: 6px solid transparent;
  217. border-bottom: 6px solid rgba(255, 255, 255, .7);
  218. position: absolute;
  219. right: 10px;
  220. top: 50%;
  221. }
  222. </style>
  223. </head>
  224. <body class="container-fluid">
  225. <!-- SIDENAV -->
  226. <script id="template-sidenav" type="text/x-handlebars-template">
  227. <nav id="scrollingNav" class="col-sm-3 col-lg-2 sidebar-offcanvas">
  228. <div class="nav-toggle visible-xs">
  229. <button type="button" class="btn btn-link" data-toggle="offcanvas">
  230. <span class="sr-only">{{__ "Toggle navigation"}}</span>
  231. <span class="icon-bar"></span>
  232. <span class="icon-bar"></span>
  233. <span class="icon-bar"></span>
  234. </button>
  235. </div>
  236. <div class="sidenav-search">
  237. <input class="form-control search" data-action='filter-search' type="text" placeholder='{{__ "Filter..."}}'/>
  238. <span class="search-reset">x</span>
  239. </div>
  240. <ul class="sidenav nav nav-list list">
  241. {{#each nav}}
  242. {{#if title}}
  243. {{#if isHeader}}
  244. {{#if isFixed}}
  245. <li class="nav-fixed nav-header navbar-btn nav-list-item" data-group="{{group}}"><a href="#api-{{group}}" data-name="show-api-{{group}}" class="show-api api-{{group}}-init">{{underscoreToSpace title}}</a></li>
  246. {{else}}
  247. <li class="nav-header nav-list-item" data-group="{{group}}"><a href="#api-{{group}}" data-group="show-api-{{group}}" class="show-group api-{{group}}-init">{{underscoreToSpace title}}</a><i class="layui-icon layui-icon-down layui-nav-more"></i></li>
  248. {{/if}}
  249. {{else}}
  250. <li class="{{#if hidden}}hide {{/if}}" data-group="{{group}}" data-name="{{name}}" data-version="{{version}}">
  251. <a href="#api-{{group}}-{{name}}" title="{{url}}" data-group="show-api-{{group}}" data-name="show-api-{{group}}-{{name}}" class="nav-list-item show-api api-{{group}}-{{name}}-init">{{title}}
  252. <div class="nav-list-url-item hide">{{url}}</div>
  253. </a>
  254. </li>
  255. {{/if}}
  256. {{/if}}
  257. {{/each}}
  258. </ul>
  259. </nav>
  260. </script>
  261. <!-- PROJECT -->
  262. <script id="template-project" type="text/x-handlebars-template">
  263. <div class="pull-left">
  264. <h1>{{name}}</h1>
  265. {{#if description}}<h2>{{{nl2br description}}}</h2>{{/if}}
  266. </div>
  267. <div class="pull-right">
  268. {{#if template.withCompare}}
  269. <div class="btn-group">
  270. <button id="version" class="btn btn-lg btn-default dropdown-toggle" data-toggle="dropdown">
  271. <strong>{{version}}</strong>&nbsp;<span class="caret"></span>
  272. </button>
  273. <ul id="versions" class="dropdown-menu open-left">
  274. <li><a id="compareAllWithPredecessor" href="#">{{__ "Compare all with predecessor"}}</a></li>
  275. <li class="divider"></li>
  276. <li class="disabled"><a href="#">{{__ "show up to version:"}}</a></li>
  277. {{#each versions}}
  278. <li class="version"><a href="#">{{this}}</a></li>
  279. {{/each}}
  280. </ul>
  281. </div>
  282. {{else}}
  283. <div id="version" class="well well-sm">
  284. <strong>{{version}}</strong>
  285. </div>
  286. {{/if}}
  287. </div>
  288. <div class="clearfix"></div>
  289. </script>
  290. <script id="template-header" type="text/x-handlebars-template">
  291. {{#if content}}
  292. <div id="api-_header" class="show-api-article show-api-_-article">{{{content}}}</div>
  293. {{/if}}
  294. </script>
  295. <script id="template-footer" type="text/x-handlebars-template">
  296. {{#if content}}
  297. <div id="api-_footer" class="show-api-article show-api-_-article">{{{content}}}</div>
  298. {{/if}}
  299. </script>
  300. <script id="template-generator" type="text/x-handlebars-template">
  301. {{#if template.withGenerator}}
  302. {{#if generator}}
  303. <div>
  304. <p class="text-muted">
  305. {{__ "Generated with"}} <a href="{{{generator.url}}}">{{{generator.name}}}</a> {{{generator.version}}} - {{{generator.time}}}
  306. </p>
  307. </div>
  308. {{/if}}
  309. {{/if}}
  310. </script>
  311. <script id="template-sections" type="text/x-handlebars-template">
  312. <section id="api-{{group}}" class="show-api-group show-api-{{group}}-group {{#if aloneDisplay}} hide{{/if}}">
  313. <h1 class="color-primary font-weight-bold">{{underscoreToSpace title}}</h1>
  314. {{#if description}}
  315. <p>{{{nl2br description}}}</p>
  316. {{/if}}
  317. {{#each articles}}
  318. <div id="api-{{group}}-{{name}}" class="show-api-article show-api-{{group}}-article show-api-{{group}}-{{name}}-article {{#if aloneDisplay}} hide{{/if}}">
  319. {{{article}}}
  320. </div>
  321. {{/each}}
  322. </section>
  323. </script>
  324. <script id="template-article" type="text/x-handlebars-template">
  325. <article id="api-{{article.group}}-{{article.name}}-{{article.version}}" class="{{#if hidden}}hide{{/if}}" data-group="{{article.group}}" data-name="{{article.name}}" data-version="{{article.version}}">
  326. <div class="pull-left">
  327. <h1><span class="color-primary">{{underscoreToSpace article.groupTitle}}</span>{{#if article.title}} <span class="text-muted">|</span> {{article.title}}{{/if}}</h1>
  328. </div>
  329. {{#if template.withCompare}}
  330. <div class="pull-right">
  331. <div class="btn-group">
  332. <button class="version btn btn-default dropdown-toggle" data-toggle="dropdown">
  333. <strong>{{article.version}}</strong>&nbsp;<span class="caret"></span>
  334. </button>
  335. <ul class="versions dropdown-menu open-left">
  336. <li class="disabled"><a href="#">{{__ "compare changes to:"}}</a></li>
  337. {{#each versions}}
  338. <li class="version"><a href="#">{{this}}</a></li>
  339. {{/each}}
  340. </ul>
  341. </div>
  342. </div>
  343. {{/if}}
  344. <div class="clearfix"></div>
  345. {{#if article.author}}<h4 class="muted">Authored by: {{article.author}}</h4>{{/if}}
  346. {{#if article.deprecated}}
  347. <p class="deprecated"><span>{{__ "DEPRECATED"}}</span>
  348. {{{markdown article.deprecated.content}}}
  349. </p>
  350. {{/if}}
  351. {{#if article.description}}
  352. <p>{{{nl2br article.description}}}</p>
  353. {{/if}}
  354. <pre
  355. data-type="{{toLowerCase article.type}}"
  356. data-prismjs-copy='{{__ "Copy"}}'
  357. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  358. data-prismjs-copy-success='{{__ "copied!"}}'
  359. ><span class="method meth-{{toLowerCase article.type}}">{{article.type}}</span><code class="language-http">{{article.url}}</code></pre>
  360. {{#if article.permission}}
  361. <p>
  362. {{__ "Permission:"}}
  363. {{#each article.permission}}
  364. {{name}}
  365. {{#if title}}
  366. <button type="button" class="btn btn-info btn-xs" data-title="{{title}}" data-content="{{nl2br description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
  367. <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
  368. </button>
  369. {{/if}}
  370. {{/each}}
  371. </p>
  372. {{/if}}
  373. <!--
  374. {{!-- CODE EXAMPLES IN TABS --}}
  375. {{#ifCond article.examples.length '>' 0}}
  376. <ul class="nav nav-tabs nav-tabs-examples" role="tablist">
  377. {{#each article.examples}}
  378. <li {{#ifCond @index
  379. '==' 0}} class="active"{{/ifCond}} >
  380. <a href="#examples-{{../id}}-{{@index}}" role="tab" data-toggle="tab">{{title}}</a>
  381. </li>
  382. {{/each}}
  383. </ul>
  384. <div class="tab-content">
  385. {{#each article.examples}}
  386. <div class="tab-pane{{#ifCond @index '==' 0}} active{{/ifCond}}" id="examples-{{../id}}-{{@index}}">
  387. <pre
  388. data-type="{{type}}"
  389. data-prismjs-copy='{{__ "Copy"}}'
  390. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  391. data-prismjs-copy-success='{{__ "copied!"}}'
  392. ><code class="language-{{type}}">{{content}}</code></pre>
  393. </div>
  394. {{/each}}
  395. </div>
  396. {{/ifCond}}
  397. -->
  398. <div class="tabs-container">
  399. <div class="tabs-header">
  400. <div class="tab-item active" data-tab="tab-1">参数</div>
  401. <div class="tab-item" data-tab="tab-2">返回参数</div>
  402. <div class="tab-item" data-tab="tab-3">测试</div>
  403. {{#ifCond article.examples.length '>' 0}}
  404. <div class="tab-item" data-tab="tab-4">示例代码</div>
  405. {{/ifCond}}
  406. </div>
  407. <div class="layui-params tabs-content tab-1 active">
  408. <div class="tab-content">
  409. <div class="layui-header">
  410. {{subTemplate "article-param-block" params=article.header _hasType=_hasTypeInHeaderFields section="header"}}
  411. </div>
  412. <div class="layui-parameter">
  413. {{subTemplate "article-param-block" params=article.parameter _hasType=_hasTypeInParameterFields section="parameter"}}
  414. </div>
  415. <div class="layui-query">
  416. {{subTemplate "article-query-block" params=article.query _hasType=_hasTypeInParameterFields section="query"}}
  417. </div>
  418. <div class="layui-body">
  419. {{subTemplate "article-body-block" params=article.body _hasType=_hasTypeInParameterFields section="body"}}
  420. </div>
  421. </div>
  422. </div>
  423. <div class="layui-result tabs-content tab-2">
  424. <div class="tab-content">
  425. <div class="layui-success">
  426. {{subTemplate "article-param-block" params=article.success _hasType=_hasTypeInSuccessFields section="success"}}
  427. </div>
  428. <div class="layui-error">
  429. {{subTemplate "article-param-block" params=article.error _col1="Name" _hasType=_hasTypeInErrorFields section="error"}}
  430. </div>
  431. </div>
  432. </div>
  433. <div class="layui-request tabs-content tab-3">
  434. <div class="tab-content">
  435. {{subTemplate "article-sample-request" article=article id=id}}
  436. </div>
  437. </div>
  438. {{#ifCond article.examples.length '>' 0}}
  439. <div class="layui-request tabs-content tab-4">
  440. <div class="tab-content">
  441. <ul class="nav nav-tabs nav-tabs-examples" role="tablist">
  442. {{#each article.examples}}
  443. <li class="{{#ifCond @index '==' 0}}active{{/ifCond}}"><a href="#layui-examples-{{../id}}-{{@index}}" role="tab" data-toggle="tab">{{title}}</a></li>
  444. {{/each}}
  445. </ul>
  446. <div class="tab-content" style="padding: 12px 5px;">
  447. {{#each article.examples}}
  448. <div class="tab-pane{{#ifCond @index '==' 0}} active{{/ifCond}}" id="layui-examples-{{../id}}-{{@index}}">
  449. <pre
  450. data-type="{{type}}"
  451. data-prismjs-copy='{{__ "Copy"}}'
  452. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  453. data-prismjs-copy-success='{{__ "copied!"}}'
  454. ><code class="language-{{type}}">{{content}}</code></pre>
  455. </div>
  456. {{/each}}
  457. </div>
  458. </div>
  459. </div>
  460. {{/ifCond}}
  461. </div>
  462. </article>
  463. </script>
  464. <script id="template-article-query-block" type="text/x-handlebars-template">
  465. {{#if article.query}}
  466. <h2>{{__ "Query Parameter(s)"}}</h2>
  467. <table>
  468. <thead>
  469. <tr>
  470. <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
  471. {{#unless this.Type compare=null}}
  472. <th style="width: 10%">{{__ "Type"}}</th>
  473. {{/unless}}
  474. {{#if ../_hasType}}
  475. <th style="width:60%">{{__ "Description"}}</th>
  476. {{else}}
  477. <th style="width:70%">{{__ "Description"}}</th>
  478. {{/if}}
  479. </tr>
  480. </thead>
  481. <tbody>
  482. {{#each params}}
  483. <tr>
  484. <td class="code">
  485. {{{nestObject this}}}
  486. {{#if this.optional}}
  487. <span class="label optional">{{__ "optional"}}</span>
  488. {{else}}
  489. {{#if ../template.showRequiredLabels}}
  490. <span class="label required">{{__ "required"}}</span>
  491. {{/if}}
  492. {{/if}}
  493. </td>
  494. {{#unless this.Type compare=null}}
  495. <td class="code">{{this.type}}</td>
  496. {{/unless}}
  497. <td>{{{nl2br this.description}}}
  498. {{#if defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{defaultValue}}}</code></p>{{/if}}
  499. {{#if size}}<p class="type-size">{{__ "Size range:"}} <code>{{{size}}}</code></p>{{/if}}
  500. {{#if allowedValues}}<p class="type-size">{{__ "Allowed values:"}}
  501. {{#each allowedValues}}
  502. <code>{{{this}}}</code>{{#unless @last}}, {{/unless}}
  503. {{/each}}
  504. </p>
  505. {{/if}}
  506. </td>
  507. </tr>
  508. {{/each}}
  509. </tbody>
  510. </table>
  511. {{/if}}
  512. </script>
  513. <script id="template-article-body-block" type="text/x-handlebars-template">
  514. {{#if article.body}}
  515. <h2>{{__ "Request Body"}}</h2>
  516. <table>
  517. <thead>
  518. <tr>
  519. <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
  520. {{#unless this.Type compare=null}}
  521. <th style="width: 10%">{{__ "Type"}}</th>
  522. {{/unless}}
  523. {{#if ../_hasType}}
  524. <th style="width: 60%">{{__ "Description"}}</th>
  525. {{else}}
  526. <th style="width: 70%">{{__ "Description"}}</th>
  527. {{/if}}
  528. </tr>
  529. </thead>
  530. <tbody>
  531. {{#each params}}
  532. <tr>
  533. <td class="code">
  534. {{{nestObject this}}}
  535. {{#if this.optional}}
  536. <span class="label optional">{{__ "optional"}}</span>
  537. {{else}}
  538. {{#if ../template.showRequiredLabels}}
  539. <span class="label required">{{__ "required"}}</span>
  540. {{/if}}
  541. {{/if}}
  542. </td>
  543. {{#unless this.Type compare=null}}
  544. <td class="code">{{this.type}}</td>
  545. {{/unless}}
  546. <td>
  547. {{{nl2br this.description}}}
  548. {{#if defaultValue}}
  549. <p class="default-value">{{__ "Default value:"}} <code>{{{defaultValue}}}</code></p>
  550. {{/if}}
  551. {{#if size}}
  552. <p class="type-size">{{__ "Size range:"}} <code>{{{size}}}</code></p>
  553. {{/if}}
  554. {{#if allowedValues}}
  555. <p class="type-size">{{__ "Allowed values:"}}
  556. {{#each allowedValues}}
  557. <code>{{{this}}}</code>{{#unless @last}}, {{/unless}}
  558. {{/each}}
  559. </p>
  560. {{/if}}
  561. </td>
  562. </tr>
  563. {{/each}}
  564. </tbody>
  565. </table>
  566. {{/if}}
  567. </script>
  568. <script id="template-article-param-block" type="text/x-handlebars-template">
  569. {{#if params}}
  570. {{#each params.fields}}
  571. <h4>{{__ @key}}</h4>
  572. <table>
  573. <thead>
  574. <tr>
  575. <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
  576. {{#if ../_hasType}}
  577. <th style="width: 10%">{{__ "Type"}}</th>
  578. {{/if}}
  579. {{#if ../_hasType}}
  580. <th style="width:60%">{{__ "Description"}}</th>
  581. {{else}}
  582. <th style="width:70%">{{__ "Description"}}</th>
  583. {{/if}}
  584. </tr>
  585. </thead>
  586. <tbody>
  587. {{#each this}}
  588. <tr>
  589. <td class="code">
  590. {{{nestObject this}}}
  591. {{#if optional}}
  592. <span class="label optional">{{__ "optional"}}</span>
  593. {{else}}
  594. {{#if ../../template.showRequiredLabels}}
  595. <span class="label required">{{__ "required"}}</span>
  596. {{/if}}
  597. {{/if}}
  598. </td>
  599. {{#if ../../_hasType}}
  600. <td class="code">
  601. {{{type}}}
  602. </td>
  603. {{/if}}
  604. <td>
  605. {{{nl2br description}}}
  606. {{#if defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{defaultValue}}}</code></p>{{/if}}
  607. {{#if size}}<p class="type-size">{{__ "Size range:"}} <code>{{{size}}}</code></p>{{/if}}
  608. {{#if allowedValues}}<p class="type-size">{{__ "Allowed values:"}}
  609. {{#each allowedValues}}
  610. <code>{{{this}}}</code>{{#unless @last}}, {{/unless}}
  611. {{/each}}
  612. </p>
  613. {{/if}}
  614. </td>
  615. </tr>
  616. {{/each}}
  617. </tbody>
  618. </table>
  619. {{/each}}
  620. {{#ifCond params.examples.length '>' 0}}
  621. <ul class="nav nav-tabs nav-tabs-examples" role="tablist">
  622. {{#each params.examples}}
  623. <li class="{{#ifCond @index '==' 0}}active{{/ifCond}}">
  624. <a href="#{{../section}}-examples-{{../id}}-{{@index}}" role="tab" data-toggle="tab">{{title}}</a>
  625. </li>
  626. {{/each}}
  627. </ul>
  628. <div class="tab-content">
  629. {{#each params.examples}}
  630. <div class="tab-pane{{#ifCond @index '==' 0}} active{{/ifCond}}" id="{{../section}}-examples-{{../id}}-{{@index}}">
  631. <pre
  632. data-type="{{type}}"
  633. data-prismjs-copy='{{__ "Copy"}}'
  634. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  635. data-prismjs-copy-success='{{__ "copied!"}}'
  636. ><code class="language-{{type}}">{{reformat content type}}</code></pre>
  637. </div>
  638. {{/each}}
  639. </div>
  640. {{/ifCond}}
  641. {{/if}}
  642. </script>
  643. <script id="template-article-sample-request" type="text/x-handlebars-template">
  644. {{#if article.sampleRequest}}
  645. <div class="well">
  646. <!-- <h5>{{__ "Send a Sample Request"}}</h5>-->
  647. <form class="form-horizontal">
  648. <fieldset>
  649. <div class="form-group">
  650. <label class="col-md-3 control-label" for="{{../id}}-sample-request-url">URL</label>
  651. <div class="input-group">
  652. <span class="input-group-addon">{{__ "url"}}</span>
  653. <input id="{{../id}}-sample-request-url" type="url" class="form-control sample-request-url" value="{{article.sampleRequest.0.url}}"/>
  654. </div>
  655. </div>
  656. {{#if article.header}}
  657. {{#if article.header.fields}}
  658. <h5>{{__ "Headers"}}</h5>
  659. {{#each article.header.fields}}
  660. <div class="{{../id}}-sample-request-header-fields">
  661. {{#each this}}
  662. <div class="form-group">
  663. <label class="col-md-3 control-label" for="sample-request-header-field-{{field}}">{{field}}</label>
  664. <div class="input-group">
  665. <span class="input-group-addon">{{{type}}}</span>
  666. <input type="text" id="sample-request-header-field-{{field}}"
  667. class="form-control sample-request-input"
  668. value="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  669. placeholder="{{#if defaultValue}}{{ defaultValue }}{{else}}{{field}}{{/if}}"
  670. data-family="header"
  671. autocomplete="off"
  672. data-name="{{field}}"
  673. data-group="{{@../index}}">
  674. </div>
  675. </div>
  676. {{/each}}
  677. </div>
  678. {{/each}}
  679. {{/if}}
  680. {{/if}}
  681. {{#if article.parameter}}
  682. {{#if article.parameter.fields}}
  683. <h5>{{__ "Parameters"}}</h5>
  684. {{#each article.parameter.fields}}
  685. <div style="width: 100%;" class="col-md-3">
  686. <select name="{{../id}}-sample-header-content-type" class="{{../id}}-sample-request-param-select sample-header-content-type sample-header-content-type-switch">
  687. <option value="auto" selected>ajax-auto</option>
  688. <option value="json">json</option>
  689. <option value="form-data">form-data</option>
  690. </select>
  691. </div>
  692. <div class="{{../id}}-sample-request-param-body {{../id}}-sample-header-content-type-body hide">
  693. <div class="form-group">
  694. <div class="input-group">
  695. <div class="input-group-addon">json</div>
  696. {{#if optional}}
  697. <textarea id="sample-request-body-json" class="form-control sample-request-body" data-sample-request-body-group="sample-request-param-{{@./index}}" rows="6" style="OVERFLOW: visible" data-sample-request-param-optional="true"></textarea>
  698. {{else}}
  699. <textarea id="sample-request-body-json" class="form-control sample-request-body" data-sample-request-body-group="sample-request-param-{{@./index}}" rows="6" style="OVERFLOW: visible"></textarea>
  700. {{/if}}
  701. </div>
  702. </div>
  703. </div>
  704. <div class="{{../id}}-sample-request-param-fields {{../id}}-sample-header-content-type-fields">
  705. {{#each this}}
  706. <div class="form-group">
  707. {{#ifNotObject type}}
  708. <label class="col-md-3 control-label" for="sample-request-param-field-{{field}}">{{field}}</label>
  709. <div class="input-group">
  710. <div class="input-group-addon">{{{type}}}</div>
  711. {{#if allowedValues}}
  712. <div class="input-group-addon sample-request-select">
  713. {{#if optional}}
  714. <select class="form-control" data-name="{{dot2bracket this}}" data-family="query" data-group="{{@../index}}" data-optional="true">
  715. <option value="" class="empty">&lt;{{__ "No value"}}&gt;</option>
  716. {{#each allowedValues}}
  717. {{#ifCond ../defaultValue '===' this}}
  718. <option selected value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  719. {{else}}
  720. <option value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  721. {{/ifCond}}
  722. {{/each}}
  723. </select>
  724. {{else}}
  725. <select class="form-control" data-name="{{dot2bracket this}}" data-family="query" data-group="{{@../index}}">
  726. <option value="" class="empty">&lt;{{__ "No value"}}&gt;</option>
  727. {{#each allowedValues}}
  728. {{#ifCond ../defaultValue '===' this}}
  729. <option selected value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  730. {{else}}
  731. <option value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  732. {{/ifCond}}
  733. {{/each}}
  734. </select>
  735. {{/if}}
  736. </div>
  737. <input class="invisible">
  738. {{else}}
  739. <div class="sample-request-input-{{type}}-container">
  740. <div>
  741. {{#if optional}}
  742. <input
  743. type="text"
  744. id="sample-request-param-field-{{field}}"
  745. class="{{#ifCond type '!==' 'Boolean'}}form-control{{/ifCond}} sample-request-param"
  746. value="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  747. placeholder="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  748. data-name="{{dot2bracket this}}"
  749. data-family="query"
  750. data-type="{{setInputType type}}"
  751. data-group="{{@../index}}"
  752. data-optional="true">
  753. {{else}}
  754. <input
  755. type="text"
  756. id="sample-request-param-field-{{field}}"
  757. class="{{#ifCond type '!==' 'Boolean'}}form-control{{/ifCond}} sample-request-param"
  758. value="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  759. placeholder="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  760. data-name="{{dot2bracket this}}"
  761. data-family="query"
  762. data-type="{{setInputType type}}"
  763. data-group="{{@../index}}">
  764. {{/if}}
  765. </div>
  766. </div>
  767. {{/if}}
  768. </div>
  769. {{/ifNotObject}}
  770. </div>
  771. {{/each}}
  772. </div>
  773. {{/each}}
  774. {{/if}}
  775. {{/if}}
  776. {{#if article.query}}
  777. <h3>{{__ "Query Parameters"}}</h3>
  778. <div class="{{../id}}-sample-request-param-fields {{../id}}-sample-header-content-type-fields">
  779. {{#each article.query}}
  780. <div class="form-group">
  781. {{#ifNotObject type}}
  782. <label class="col-md-3 control-label" for="sample-request-param-field-{{field}}">{{field}}{{#if optional}} ({{__ "optional"}}){{/if}}</label>
  783. <div class="input-group col-md-6">
  784. <div class="input-group-addon">{{{type}}}</div>
  785. {{#if allowedValues}}
  786. <div class="input-group-addon sample-request-select">
  787. {{#if optional}}
  788. <select class="form-control" data-name="{{dot2bracket this}}" data-family="query" data-group="{{@../index}}" data-optional="true">
  789. <option value="" class="empty">&lt;{{__ "No value"}}&gt;</option>
  790. {{#each allowedValues}}
  791. {{#ifCond ../defaultValue '===' this}}
  792. <option selected value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  793. {{else}}
  794. <option value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  795. {{/ifCond}}
  796. {{/each}}
  797. </select>
  798. {{else}}
  799. <select class="form-control" data-name="{{dot2bracket this}}" data-family="query" data-group="{{@../index}}">
  800. <option value="" class="empty">&lt;{{__ "No value"}}&gt;</option>
  801. {{#each allowedValues}}
  802. {{#ifCond ../defaultValue '===' this}}
  803. <option selected value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  804. {{else}}
  805. <option value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  806. {{/ifCond}}
  807. {{/each}}
  808. </select>
  809. {{/if}}
  810. </div>
  811. <input class="invisible">
  812. {{else}}
  813. <div class="sample-request-input-{{type}}-container">
  814. <div>
  815. {{#if optional}}
  816. <input id="sample-request-param-field-{{field}}"
  817. class="{{#ifCond type '!==' 'Boolean'}}form-control{{/ifCond}} sample-request-input"
  818. type="text"
  819. value="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  820. placeholder="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  821. data-name="{{dot2bracket this}}"
  822. data-family="query"
  823. data-group="{{@../index}}"
  824. data-optional="true">
  825. {{else}}
  826. <input
  827. type="text"
  828. id="sample-request-param-field-{{field}}"
  829. class="{{#ifCond type '!==' 'Boolean'}}form-control{{/ifCond}} sample-request-input"
  830. value="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  831. placeholder="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  832. data-name="{{dot2bracket this}}"
  833. data-family="query"
  834. data-group="{{@../index}}">
  835. {{/if}}
  836. </div>
  837. </div>
  838. {{/if}}
  839. </div>
  840. {{/ifNotObject}}
  841. </div>
  842. {{/each}}
  843. </div>
  844. {{/if}}
  845. {{#if article.body}}
  846. <h3>{{__ "Body"}}</h3>
  847. <div class="col-md-3">
  848. <label for="body-content-type-{{this.id}}">{{__ "Content-Type"}}</label>
  849. <select id="body-content-type-{{this.id}}" data-id="{{this.id}}" class="sample-request-content-type-switch form-control">
  850. <option value="body-json" selected>json</option>
  851. <option value="body-form-data">form-data</option>
  852. </select>
  853. </div>
  854. <div class="col-md-9" id="sample-request-body-json-input-{{this.id}}">
  855. <div class="form-group">
  856. <div class="input-group">
  857. <div class="input-group-addon">json</div>
  858. {{#if optional}}
  859. <textarea
  860. class="form-control sample-request-input"
  861. rows="6"
  862. data-family="body-json"
  863. data-name={{"body"}}
  864. data-content-type="json"
  865. data-optional="true"
  866. >{{body2json article.body}}</textarea>
  867. {{else}}
  868. <textarea
  869. class="form-control sample-request-input"
  870. rows="6"
  871. data-family="body-json"
  872. data-name={{"body"}}
  873. data-content-type="json"
  874. >{{body2json article.body}}</textarea>
  875. {{/if}}
  876. </div>
  877. </div>
  878. </div>
  879. <div hidden class="col-md-9" id="sample-request-body-form-input-{{this.id}}">
  880. {{#each article.body}}
  881. <div class="form-group">
  882. {{#ifNotObject type}}
  883. <label class="col-md-3 control-label" for="sample-request-param-field-{{field}}">{{field}}</label>
  884. <div class="input-group">
  885. <div class="input-group-addon">{{{type}}}</div>
  886. {{#if allowedValues}}
  887. <div class="input-group-addon sample-request-select">
  888. {{#if optional}}
  889. <select class="form-control" data-name="{{dot2bracket this}}" data-family="body" data-group="{{@../index}}" data-optional="true">
  890. <option value="" class="empty">&lt;{{__ "No value"}}&gt;</option>
  891. {{#each allowedValues}}
  892. {{#ifCond ../defaultValue '===' this}}
  893. <option selected value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  894. {{else}}
  895. <option value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  896. {{/ifCond}}
  897. {{/each}}
  898. </select>
  899. {{else}}
  900. <select class="form-control" data-name="{{dot2bracket this}}" data-family="body" data-group="{{@../index}}">
  901. <option value="" class="empty">&lt;{{__ "No value"}}&gt;</option>
  902. {{#each allowedValues}}
  903. {{#ifCond ../defaultValue '===' this}}
  904. <option selected value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  905. {{else}}
  906. <option value="{{{removeDblQuotes this}}}">{{{removeDblQuotes this}}}</option>
  907. {{/ifCond}}
  908. {{/each}}
  909. </select>
  910. {{/if}}
  911. </div>
  912. <input class="invisible">
  913. {{else}}
  914. <div class="sample-request-input-{{type}}-container">
  915. <div>
  916. {{#if checked}}
  917. {{#if optional}}
  918. <input id="sample-request-param-field-{{field}}"
  919. class="{{#ifCond type '!==' 'Boolean'}}form-control{{/ifCond}} sample-request-input"
  920. type="text"
  921. value="{{#ifCond type '!==' 'Boolean'}}{{#if defaultValue}}{{ defaultValue }}{{/if}}{{/ifCond}}"
  922. placeholder="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  923. data-family="body"
  924. data-name="{{dot2bracket this}}"
  925. data-content-type="form"
  926. checked
  927. data-optional="true">
  928. {{else}}
  929. <input id="sample-request-param-field-{{field}}"
  930. class="{{#ifCond type '!==' 'Boolean'}}form-control{{/ifCond}} sample-request-input"
  931. type="text"
  932. value="{{#ifCond type '!==' 'Boolean'}}{{#if defaultValue}}{{ defaultValue }}{{/if}}{{/ifCond}}"
  933. placeholder="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  934. data-family="body"
  935. data-name="{{dot2bracket this}}"
  936. checked
  937. data-content-type="form"/>
  938. {{/if}}
  939. {{else}}
  940. {{#if optional}}
  941. <input id="sample-request-param-field-{{field}}"
  942. class="{{#ifCond type '!==' 'Boolean'}}form-control{{/ifCond}} sample-request-input"
  943. type="text"
  944. value="{{#ifCond type '!==' 'Boolean'}}{{#if defaultValue}}{{ defaultValue }}{{/if}}{{/ifCond}}"
  945. placeholder="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  946. data-family="body"
  947. data-name="{{dot2bracket this}}"
  948. data-content-type="form"
  949. data-optional="true"/>
  950. {{else}}
  951. <input id="sample-request-param-field-{{field}}"
  952. class="{{#ifCond type '!==' 'Boolean'}}form-control{{/ifCond}} sample-request-input"
  953. type="text"
  954. value="{{#ifCond type '!==' 'Boolean'}}{{#if defaultValue}}{{ defaultValue }}{{/if}}{{/ifCond}}"
  955. placeholder="{{#if defaultValue}}{{ defaultValue }}{{/if}}"
  956. data-family="body"
  957. data-name="{{dot2bracket this}}"
  958. data-content-type="form"/>
  959. {{/if}}
  960. {{/if}}
  961. </div>
  962. </div>
  963. {{/if}}
  964. </div>
  965. {{/ifNotObject}}
  966. </div>
  967. {{/each}}
  968. </div>
  969. {{/if}}
  970. <div class="form-group">
  971. <div class="controls pull-right">
  972. <button class="btn btn-primary bg-primary sample-request-send" data-type="{{article.type}}">{{__ "Send"}}</button>
  973. <button class="btn btn-danger bg-red sample-request-clear" data-type="{{article.type}}">{{__ "Reset"}}</button>
  974. </div>
  975. </div>
  976. <div class="form-group sample-request-response" hidden>
  977. <h3>
  978. {{__ "Response"}}
  979. <button class="btn btn-default btn-xs pull-right sample-request-clear">X</button>
  980. </h3>
  981. <pre
  982. data-type="json"
  983. data-prismjs-copy='{{__ "Copy"}}'
  984. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  985. data-prismjs-copy-success='{{__ "copied!"}}'
  986. ><code class="language-json sample-request-response-json"></code></pre>
  987. </div>
  988. </fieldset>
  989. </form>
  990. </div>
  991. {{/if}}
  992. </script>
  993. <script id="template-compare-article" type="text/x-handlebars-template">
  994. <article id="api-{{article.group}}-{{article.name}}-{{article.version}}" class="{{#if hidden}}hide{{/if}}" data-group="{{article.group}}" data-name="{{article.name}}" data-version="{{article.version}}" data-compare-version="{{compare.version}}">
  995. <div class="pull-left">
  996. <h1>{{underscoreToSpace article.groupTitle}} | {{{showDiff article.title compare.title}}}</h1>
  997. </div>
  998. <div class="pull-right">
  999. <div class="btn-group">
  1000. <button class="btn btn-success" disabled>
  1001. <strong>{{article.version}}</strong> {{__ "compared to"}}
  1002. </button>
  1003. <button class="version btn btn-danger dropdown-toggle" data-toggle="dropdown">
  1004. <strong>{{compare.version}}</strong>&nbsp;<span class="caret"></span>
  1005. </button>
  1006. <ul class="versions dropdown-menu open-left">
  1007. <li class="disabled"><a href="#">{{__ "compare changes to:"}}</a></li>
  1008. <li class="divider"></li>
  1009. {{#each versions}}
  1010. <li class="version"><a href="#">{{this}}</a></li>
  1011. {{/each}}
  1012. </ul>
  1013. </div>
  1014. </div>
  1015. <div class="clearfix"></div>
  1016. {{#if article.description}}
  1017. <p>{{{showDiff article.description compare.description "nl2br"}}}</p>
  1018. {{else}}
  1019. {{#if compare.description}}
  1020. <p>{{{showDiff "" compare.description "nl2br"}}}</p>
  1021. {{/if}}
  1022. {{/if}}
  1023. <span class="method meth-{{toLowerCase compare.type}}">{{compare.type}}</span>
  1024. <pre
  1025. data-type="{{toLowerCase article.type}}"
  1026. data-prismjs-copy='{{__ "Copy"}}'
  1027. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  1028. data-prismjs-copy-success='{{__ "copied!"}}'
  1029. class="language-html"
  1030. >{{{showDiff article.url compare.url}}}</pre>
  1031. {{subTemplate "article-compare-permission" article=article compare=compare}}
  1032. <ul class="nav nav-tabs nav-tabs-examples" role="tablist">
  1033. {{#each_compare_title article.examples compare.examples}}
  1034. {{#if typeSame}}
  1035. <li class="{{#ifCond index '==' 0}}active{{/ifCond}}">
  1036. <a href="#compare-examples-{{../article.id}}-{{index}}" role="tab" data-toggle="tab">{{{showDiff source.title compare.title}}}</a>
  1037. </li>
  1038. {{/if}}
  1039. {{#if typeIns}}
  1040. <li class="{{#ifCond index '==' 0}}active{{/ifCond}}">
  1041. <a href="#compare-examples-{{../article.id}}-{{index}}">
  1042. <ins>{{{source.title}}}</ins>
  1043. </a>
  1044. </li>
  1045. {{/if}}
  1046. {{#if typeDel}}
  1047. <li class="{{#ifCond index '==' 0}}active{{/ifCond}}">
  1048. <a href="#compare-examples-{{../article.id}}-{{index}}">
  1049. <del>{{{compare.title}}}</del>
  1050. </a>
  1051. </li>
  1052. {{/if}}
  1053. {{/each_compare_title}}
  1054. </ul>
  1055. <div class="tab-content">
  1056. {{#each_compare_title article.examples compare.examples}}
  1057. {{#if typeSame}}
  1058. <div class="tab-pane{{#ifCond index '==' 0}} active{{/ifCond}}" id="compare-examples-{{../article.id}}-{{index}}">
  1059. <pre
  1060. data-type="{{source.type}}"
  1061. data-prismjs-copy='{{__ "Copy"}}'
  1062. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  1063. data-prismjs-copy-success='{{__ "copied!"}}'
  1064. ><code class="language-diff-{{source.type}} diff-highlight">{{{showDiff source.content compare.content "code"}}}</code></pre>
  1065. </div>
  1066. {{/if}}
  1067. {{#if typeIns}}
  1068. <div class="tab-pane{{#ifCond index '==' 0}} active{{/ifCond}}" id="compare-examples-{{../article.id}}-{{index}}">
  1069. <pre
  1070. data-type="{{source.type}}"
  1071. data-prismjs-copy='{{__ "Copy"}}'
  1072. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  1073. data-prismjs-copy-success='{{__ "copied!"}}'
  1074. ><code class="language-{{source.type}}">{{{source.content}}}</code></pre>
  1075. </div>
  1076. {{/if}}
  1077. {{#if typeDel}}
  1078. <div class="tab-pane{{#ifCond index '==' 0}} active{{/ifCond}}" id="compare-examples-{{../article.id}}-{{index}}">
  1079. <pre
  1080. data-type="{{compare.type}}"
  1081. data-prismjs-copy='{{__ "Copy"}}'
  1082. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  1083. data-prismjs-copy-success='{{__ "copied!"}}'
  1084. ><code class="language-{{source.type}}">{{{compare.content}}}</code></pre>
  1085. </div>
  1086. {{/if}}
  1087. {{/each_compare_title}}
  1088. </div>
  1089. <div class="layui-header">
  1090. {{subTemplate "article-compare-param-block" source=article.header compare=compare.header _hasType=_hasTypeInHeaderFields section="header"}}
  1091. </div>
  1092. <div class="layui-parameter">
  1093. {{subTemplate "article-compare-param-block" source=article.parameter compare=compare.parameter _hasType=_hasTypeInParameterFields section="parameter"}}
  1094. </div>
  1095. <div class="layui-parameter">
  1096. {{subTemplate "article-compare-query-block" source=article.query compare=compare.query _hasType=_hasTypeInParameterFields section="query"}}
  1097. </div>
  1098. <div class="layui-body">
  1099. {{subTemplate "article-compare-body-block" source=article.body compare=compare.body _hasType=_hasTypeInParameterFields section="body"}}
  1100. </div>
  1101. <div class="layui-success">
  1102. {{subTemplate "article-compare-param-block" source=article.success compare=compare.success _hasType=_hasTypeInSuccessFields section="success"}}
  1103. </div>
  1104. <div class="layui-error">
  1105. {{subTemplate "article-compare-param-block" source=article.error compare=compare.error _col1="Name" _hasType=_hasTypeInErrorFields section="error"}}
  1106. </div>
  1107. {{subTemplate "article-sample-request" article=article id=id}}
  1108. </article>
  1109. </script>
  1110. <script id="template-article-compare-permission" type="text/x-handlebars-template">
  1111. <p>
  1112. {{__ "Permission:"}}
  1113. {{#each_compare_list_field article.permission compare.permission field="name"}}
  1114. {{#if source}}
  1115. {{#if typeSame}}
  1116. {{source.name}}
  1117. {{#if source.title}}
  1118. <button type="button" class="btn btn-info btn-xs" data-title="{{source.title}}" data-content="{{nl2br source.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
  1119. <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
  1120. </button>
  1121. {{#unless _last}}, {{/unless}}
  1122. {{/if}}
  1123. {{/if}}
  1124. {{#if typeIns}}
  1125. <ins>{{source.name}}</ins>
  1126. {{#if source.title}}
  1127. <button type="button" class="btn btn-info btn-xs" data-title="{{source.title}}" data-content="{{nl2br source.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
  1128. <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
  1129. </button>
  1130. {{#unless _last}}, {{/unless}}
  1131. {{/if}}
  1132. {{/if}}
  1133. {{#if typeDel}}
  1134. <del>{{source.name}}</del>
  1135. {{#if source.title}}
  1136. <button type="button" class="btn btn-info btn-xs" data-title="{{source.title}}" data-content="{{nl2br source.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
  1137. <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
  1138. </button>
  1139. {{#unless _last}}, {{/unless}}
  1140. {{/if}}
  1141. {{/if}}
  1142. {{else}}
  1143. {{#if typeSame}}
  1144. {{compare.name}}
  1145. {{#if compare.title}}
  1146. <button type="button" class="btn btn-info btn-xs" data-title="{{compare.title}}" data-content="{{nl2br compare.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
  1147. <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
  1148. </button>
  1149. {{#unless _last}}, {{/unless}}
  1150. {{/if}}
  1151. {{/if}}
  1152. {{#if typeIns}}
  1153. <ins>{{compare.name}}</ins>
  1154. {{#if compare.title}}
  1155. <button type="button" class="btn btn-info btn-xs" data-title="{{compare.title}}" data-content="{{nl2br compare.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
  1156. <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
  1157. </button>
  1158. {{#unless _last}}, {{/unless}}
  1159. {{/if}}
  1160. {{/if}}
  1161. {{#if typeDel}}
  1162. <del>{{compare.name}}</del>
  1163. {{#if compare.title}}
  1164. <button type="button" class="btn btn-info btn-xs" data-title="{{compare.title}}" data-content="{{nl2br compare.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
  1165. <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
  1166. </button>
  1167. {{#unless _last}}, {{/unless}}
  1168. {{/if}}
  1169. {{/if}}
  1170. {{/if}}
  1171. {{/each_compare_list_field}}
  1172. </p>
  1173. </script>
  1174. <script id="template-article-compare-param-block" type="text/x-handlebars-template">
  1175. {{#if source}}
  1176. {{#each_compare_keys source.fields compare.fields}}
  1177. {{#if typeSame}}
  1178. <h2>{{__ source.key}}</h2>
  1179. <table>
  1180. <thead>
  1181. <tr>
  1182. <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
  1183. {{#if ../_hasType}}
  1184. <th style="width: 10%">{{__ "Type"}}</th>
  1185. {{/if}}
  1186. {{#if ../_hasType}}
  1187. <th style="width: 60%">{{__ "Description"}}</th>
  1188. {{else}}
  1189. <th style="width: 70%">{{__ "Description"}}</th>
  1190. {{/if}}
  1191. </tr>
  1192. </thead>
  1193. {{subTemplate "article-compare-param-block-body" source=source.value compare=compare.value _hasType=../_hasType}}
  1194. </table>
  1195. {{/if}}
  1196. {{#if typeIns}}
  1197. <h2>
  1198. <ins>{{__ source.key}}</ins>
  1199. </h2>
  1200. <table class="ins">
  1201. <thead>
  1202. <tr>
  1203. <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
  1204. {{#if ../_hasType}}
  1205. <th style="width: 10%">{{__ "Type"}}</th>
  1206. {{/if}}
  1207. {{#if ../_hasType}}
  1208. <th style="width: 60%">{{__ "Description"}}</th>
  1209. {{else}}
  1210. <th style="width: 70%">{{__ "Description"}}</th>
  1211. {{/if}}
  1212. </tr>
  1213. </thead>
  1214. {{subTemplate "article-compare-param-block-body" source=source.value compare=source.value _hasType=../_hasType}}
  1215. </table>
  1216. {{/if}}
  1217. {{#if typeDel}}
  1218. <h2>
  1219. <del>{{__ compare.key}}</del>
  1220. </h2>
  1221. <table class="del">
  1222. <thead>
  1223. <tr>
  1224. <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
  1225. {{#if ../_hasType}}
  1226. <th style="width: 10%">{{__ "Type"}}</th>
  1227. {{/if}}
  1228. {{#if ../_hasType}}
  1229. <th style="width: 60%">{{__ "Description"}}</th>
  1230. {{else}}
  1231. <th style="width: 70%">{{__ "Description"}}</th>
  1232. {{/if}}
  1233. </tr>
  1234. </thead>
  1235. {{subTemplate "article-compare-param-block-body" source=compare.value compare=compare.value _hasType=../_hasType}}
  1236. </table>
  1237. {{/if}}
  1238. {{/each_compare_keys}}
  1239. {{#if source.examples}}
  1240. <ul class="nav nav-tabs nav-tabs-examples" role="tablist">
  1241. {{#each_compare_title source.examples compare.examples}}
  1242. {{#if typeSame}}
  1243. <li class="{{#ifCond index '==' 0}}active{{/ifCond}}">
  1244. <a href="#{{../section}}-compare-examples-{{../article.id}}-{{index}}" role="tab" data-toggle="tab">{{{showDiff source.title compare.title}}}</a>
  1245. </li>
  1246. {{/if}}
  1247. {{#if typeIns}}
  1248. <li class="{{#ifCond index '==' 0}}active{{/ifCond}}">
  1249. <a href="#{{../section}}-compare-examples-{{../article.id}}-{{index}}">
  1250. <ins>{{{source.title}}}</ins>
  1251. </a>
  1252. </li>
  1253. {{/if}}
  1254. {{#if typeDel}}
  1255. <li class="{{#ifCond index '==' 0}}active{{/ifCond}}">
  1256. <a href="#{{../section}}-compare-examples-{{../article.id}}-{{index}}">
  1257. <del>{{{compare.title}}}</del>
  1258. </a>
  1259. </li>
  1260. {{/if}}
  1261. {{/each_compare_title}}
  1262. </ul>
  1263. <div class="tab-content">
  1264. {{#each_compare_title source.examples compare.examples}}
  1265. {{#if typeSame}}
  1266. <div class="tab-pane{{#ifCond index '==' 0}} active{{/ifCond}}" id="{{../section}}-compare-examples-{{../article.id}}-{{index}}">
  1267. <pre
  1268. data-type="{{source.type}}"
  1269. data-prismjs-copy='{{__ "Copy"}}'
  1270. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  1271. data-prismjs-copy-success='{{__ "copied!"}}'
  1272. ><code class="language-diff-{{source.type}} diff-highlight">{{{showDiff source.content compare.content "code"}}}</code></pre>
  1273. </div>
  1274. {{/if}}
  1275. {{#if typeIns}}
  1276. <div class="tab-pane{{#ifCond index '==' 0}} active{{/ifCond}}" id="{{../section}}-compare-examples-{{../article.id}}-{{index}}">
  1277. <pre
  1278. data-type="{{source.type}}"
  1279. data-prismjs-copy='{{__ "Copy"}}'
  1280. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  1281. data-prismjs-copy-success='{{__ "copied!"}}'
  1282. ><code class="language-{{source.type}}">{{{source.content}}}</code></pre>
  1283. </div>
  1284. {{/if}}
  1285. {{#if typeDel}}
  1286. <div class="tab-pane{{#ifCond index '==' 0}} active{{/ifCond}}" id="{{../section}}-compare-examples-{{../article.id}}-{{index}}">
  1287. <pre
  1288. data-type="{{compare.type}}"
  1289. data-prismjs-copy='{{__ "Copy"}}'
  1290. data-prismjs-copy-error='{{__ "Press Ctrl+C to copy"}}'
  1291. data-prismjs-copy-success='{{__ "copied!"}}'
  1292. ><code class="language-{{source.type}}">{{{compare.content}}}</code></pre>
  1293. </div>
  1294. {{/if}}
  1295. {{/each_compare_title}}
  1296. </div>
  1297. {{/if}}
  1298. {{/if}}
  1299. </script>
  1300. <script id="template-article-compare-query-block" type="text/x-handlebars-template">
  1301. {{#if article.query}}
  1302. <h2>{{__ "Query Parameter(s)"}}</h2>
  1303. <table class="table table-hover">
  1304. <thead>
  1305. <tr>
  1306. <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
  1307. {{#unless this.Type compare=null}}
  1308. <th style="width: 10%">{{__ "Type"}}</th>
  1309. {{/unless}}
  1310. {{#if ../_hasType}}
  1311. <th style="width: 60%">{{__ "Description"}}</th>
  1312. {{else}}
  1313. <th style="width: 70%">{{__ "Description"}}</th>
  1314. {{/if}}
  1315. </tr>
  1316. </thead>
  1317. {{subTemplate "article-compare-param-block-body" source=source compare=compare _hasType=this.type}}
  1318. </table>
  1319. {{/if}}
  1320. </script>
  1321. <script id="template-article-compare-body-block" type="text/x-handlebars-template">
  1322. {{#if article.body}}
  1323. <h2>{{__ "Request Body"}}</h2>
  1324. <table class="table table-hover">
  1325. <thead>
  1326. <tr>
  1327. <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
  1328. {{#unless this.Type compare=null}}
  1329. <th style="width: 10%">{{__ "Type"}}</th>
  1330. {{/unless}}
  1331. {{#if ../_hasType}}
  1332. <th style="width: 60%">{{__ "Description"}}</th>
  1333. {{else}}
  1334. <th style="width: 70%">{{__ "Description"}}</th>
  1335. {{/if}}
  1336. </tr>
  1337. </thead>
  1338. {{subTemplate "article-compare-param-block-body" source=source compare=compare _hasType=this.type}}
  1339. </table>
  1340. {{/if}}
  1341. </script>
  1342. <script id="template-article-compare-param-block-body" type="text/x-handlebars-template">
  1343. <tbody>
  1344. {{#each_compare_field source compare}}
  1345. {{#if typeSame}}
  1346. <tr>
  1347. <td class="code">
  1348. {{{nestObject source}}}
  1349. {{#if source.optional}}
  1350. {{#if compare.optional}} <span class="label label-optional">{{__ "optional"}}</span>
  1351. {{else}} <span class="label label-optional label-ins">{{__ "optional"}}</span>
  1352. {{/if}}
  1353. {{else}}
  1354. {{#if compare.optional}} <span class="label label-optional label-del">{{__ "optional"}}</span>{{/if}}
  1355. {{/if}}
  1356. </td>
  1357. {{#if source.type}}
  1358. {{#if compare.type}}
  1359. <td>{{{showDiff source.type compare.type}}}</td>
  1360. {{else}}
  1361. <td>{{{source.type}}}</td>
  1362. {{/if}}
  1363. {{else}}
  1364. {{#if compare.type}}
  1365. <td>{{{compare.type}}}</td>
  1366. {{else}}
  1367. {{#if ../../../../_hasType}}
  1368. <td></td>
  1369. {{/if}}
  1370. {{/if}}
  1371. {{/if}}
  1372. <td>
  1373. {{{showDiff source.description compare.description "nl2br"}}}
  1374. {{#if source.defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{showDiff source.defaultValue compare.defaultValue}}}</code>
  1375. <p>{{/if}}
  1376. </td>
  1377. </tr>
  1378. {{/if}}
  1379. {{#if typeIns}}
  1380. <tr class="ins">
  1381. <td class="code">
  1382. {{{nestObject source}}}
  1383. {{#if source.optional}} <span class="label label-optional label-ins">{{__ "optional"}}</span>{{/if}}
  1384. </td>
  1385. {{#if source.type}}
  1386. <td>{{{source.type}}}</td>
  1387. {{else}}
  1388. {{{typRowTd}}}
  1389. {{/if}}
  1390. <td>
  1391. {{{nl2br source.description}}}
  1392. {{#if source.defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{source.defaultValue}}}</code>
  1393. <p>{{/if}}
  1394. </td>
  1395. </tr>
  1396. {{/if}}
  1397. {{#if typeDel}}
  1398. <tr class="del">
  1399. <td class="code">
  1400. {{{nestObject compare}}}
  1401. {{#if compare.optional}} <span class="label label-optional label-del">{{__ "optional"}}</span>{{/if}}
  1402. </td>
  1403. {{#if compare.type}}
  1404. <td>{{{compare.type}}}</td>
  1405. {{else}}
  1406. {{{typRowTd}}}
  1407. {{/if}}
  1408. <td>
  1409. {{{nl2br compare.description}}}
  1410. {{#if compare.defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{compare.defaultValue}}}</code>
  1411. <p>{{/if}}
  1412. </td>
  1413. </tr>
  1414. {{/if}}
  1415. {{/each_compare_field}}
  1416. </tbody>
  1417. </script>
  1418. <div class="container-fluid">
  1419. <div class="row row-offcanvas row-offcanvas-left">
  1420. <div id="sidenav" class="col-sm-3 col-lg-2"></div>
  1421. <div id="content" class="col-sm-9 col-lg-10">
  1422. <div id="project"></div>
  1423. <div id="header"></div>
  1424. <div id="sections"></div>
  1425. <div id="footer"></div>
  1426. <!-- <div id="generator"></div>-->
  1427. </div>
  1428. </div>
  1429. </div>
  1430. <div id="loader">
  1431. <div class="spinner">
  1432. <div class="spinner-container container1">
  1433. <div class="circle1"></div>
  1434. <div class="circle2"></div>
  1435. <div class="circle3"></div>
  1436. <div class="circle4"></div>
  1437. </div>
  1438. <div class="spinner-container container2">
  1439. <div class="circle1"></div>
  1440. <div class="circle2"></div>
  1441. <div class="circle3"></div>
  1442. <div class="circle4"></div>
  1443. </div>
  1444. <div class="spinner-container container3">
  1445. <div class="circle1"></div>
  1446. <div class="circle2"></div>
  1447. <div class="circle3"></div>
  1448. <div class="circle4"></div>
  1449. </div>
  1450. <p>Loading...</p>
  1451. </div>
  1452. </div>
  1453. <script src="assets/main.bundle.js?v=1765248900761"></script>
  1454. <!--suppress JSJQueryEfficiency, JSStringConcatenationToES6Template, JSStringConcatenationToES6Template, JSStringConcatenationToES6Template -->
  1455. <script>
  1456. /**
  1457. * 请求结束后会执行这个方法
  1458. * @param jsonResponse 请求结果
  1459. */
  1460. function successResponse(jsonResponse)
  1461. {
  1462. let aa = JSON.parse(jsonResponse);
  1463. if(aa.data.token){
  1464. if(aa.data.token.startsWith("Bearer ")){
  1465. $('input[data-name="Authorization"]').val(aa.data.token);
  1466. }else{
  1467. $('input[data-name="Authorization"]').val("Bearer "+aa.data.token);
  1468. }
  1469. }
  1470. if(aa.data.im){
  1471. if(aa.data.im.authToken)
  1472. $('input[data-name="Im-Token"]').val(aa.data.im.authToken);
  1473. }
  1474. }
  1475. function toMenu(group, name) {
  1476. if ($(`.show-group.api-${group}-init`).eq(0).next().hasClass('layui-icon-down')) {
  1477. $(`.api-${group}-init`).eq(0).click();
  1478. }
  1479. $(`.api-${group}-${name}-init`).eq(0).click();
  1480. }
  1481. $(function () {
  1482. $(`.sidenav .is-new`).addClass('ws-hidden');
  1483. $('.nav-header').click(function () {
  1484. let group = $(this).data('group');
  1485. if ($(this).find('i').hasClass('layui-icon-down')) {
  1486. $(this).find('i').removeClass('layui-icon-down').addClass('layui-icon-up');
  1487. $(`.is-new[data-group="${group}"]`).removeClass('ws-hidden');
  1488. } else {
  1489. $(this).find('i').removeClass('layui-icon-up').addClass('layui-icon-down');
  1490. $(`.is-new[data-group="${group}"]`).addClass('ws-hidden');
  1491. }
  1492. });
  1493. // 获取所有选项卡
  1494. const tabItems = document.querySelectorAll('.tab-item');
  1495. const tabContents = document.querySelectorAll('.tabs-content');
  1496. tabItems.forEach(item => {
  1497. item.addEventListener('click', function () {
  1498. // 移除所有选项卡的active类
  1499. tabItems.forEach(i => i.classList.remove('active'));
  1500. tabContents.forEach(content => content.classList.remove('active'));
  1501. // 激活点击的选项卡
  1502. this.classList.add('active');
  1503. let id = $(this).data('tab');
  1504. $(`.${id}`).addClass('active');
  1505. // const activeTabContent = document.querySelector(`.${this.dataset.tab}`);
  1506. // activeTabContent.classList.add('active');
  1507. });
  1508. });
  1509. $('#sections').children('section').hide();
  1510. $('#sections').children('section').children('h1').hide();
  1511. $('#sections').children('section').children('div').hide();
  1512. $('#scrollingNav').children('ul').children('.nav-header').children('a').css('background-color', '#666');
  1513. $('.is-new .show-api').on('click', function () {
  1514. $('#project').hide();
  1515. $('#sections').children('section').hide();
  1516. $('#sections').children('section').children('div').hide();
  1517. $('.is-new').children('a').css('background-color', '').css('color', '');
  1518. // $(this).css('background-color', '#0088cc');
  1519. $(this).css('background-color', '#009688').css('color', '#ffffff');
  1520. let group = $(this).data().group + '-group';
  1521. $(`.${group}`).show();
  1522. let a = this.attributes.href.value;
  1523. $(a).show();
  1524. $('.tab-item').removeClass('active');
  1525. $(a).find('.tab-item').eq(0).addClass('active');
  1526. $('.tabs-content').removeClass('active');
  1527. $(a).find('.tab-1').addClass('active');
  1528. });
  1529. //$('.is-new .show-api').eq(0).click();
  1530. });
  1531. </script>
  1532. </body>
  1533. </html>