index.html 70 KB

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