openapi-ex_app.json 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062
  1. {
  2. "openapi": "3.0.3",
  3. "info": {
  4. "title": "core-ex_app",
  5. "version": "0.0.1",
  6. "description": "Core functionality of Nextcloud",
  7. "license": {
  8. "name": "agpl"
  9. }
  10. },
  11. "components": {
  12. "securitySchemes": {
  13. "basic_auth": {
  14. "type": "http",
  15. "scheme": "basic"
  16. },
  17. "bearer_auth": {
  18. "type": "http",
  19. "scheme": "bearer"
  20. }
  21. },
  22. "schemas": {
  23. "Capabilities": {
  24. "type": "object",
  25. "required": [
  26. "core"
  27. ],
  28. "properties": {
  29. "core": {
  30. "type": "object",
  31. "required": [
  32. "pollinterval",
  33. "webdav-root",
  34. "reference-api",
  35. "reference-regex",
  36. "mod-rewrite-working"
  37. ],
  38. "properties": {
  39. "pollinterval": {
  40. "type": "integer",
  41. "format": "int64"
  42. },
  43. "webdav-root": {
  44. "type": "string"
  45. },
  46. "reference-api": {
  47. "type": "boolean"
  48. },
  49. "reference-regex": {
  50. "type": "string"
  51. },
  52. "mod-rewrite-working": {
  53. "type": "boolean"
  54. }
  55. }
  56. }
  57. }
  58. },
  59. "OCSMeta": {
  60. "type": "object",
  61. "required": [
  62. "status",
  63. "statuscode"
  64. ],
  65. "properties": {
  66. "status": {
  67. "type": "string"
  68. },
  69. "statuscode": {
  70. "type": "integer"
  71. },
  72. "message": {
  73. "type": "string"
  74. },
  75. "totalitems": {
  76. "type": "string"
  77. },
  78. "itemsperpage": {
  79. "type": "string"
  80. }
  81. }
  82. },
  83. "PublicCapabilities": {
  84. "type": "object",
  85. "required": [
  86. "bruteforce"
  87. ],
  88. "properties": {
  89. "bruteforce": {
  90. "type": "object",
  91. "required": [
  92. "delay",
  93. "allow-listed"
  94. ],
  95. "properties": {
  96. "delay": {
  97. "type": "integer",
  98. "format": "int64"
  99. },
  100. "allow-listed": {
  101. "type": "boolean"
  102. }
  103. }
  104. }
  105. }
  106. },
  107. "TaskProcessingIO": {
  108. "type": "object",
  109. "additionalProperties": {
  110. "anyOf": [
  111. {
  112. "type": "number"
  113. },
  114. {
  115. "type": "array",
  116. "items": {
  117. "type": "number"
  118. }
  119. },
  120. {
  121. "type": "string"
  122. },
  123. {
  124. "type": "array",
  125. "items": {
  126. "type": "string"
  127. }
  128. }
  129. ]
  130. }
  131. },
  132. "TaskProcessingTask": {
  133. "type": "object",
  134. "required": [
  135. "id",
  136. "lastUpdated",
  137. "type",
  138. "status",
  139. "userId",
  140. "appId",
  141. "input",
  142. "output",
  143. "customId",
  144. "completionExpectedAt",
  145. "progress"
  146. ],
  147. "properties": {
  148. "id": {
  149. "type": "integer",
  150. "format": "int64"
  151. },
  152. "lastUpdated": {
  153. "type": "integer",
  154. "format": "int64"
  155. },
  156. "type": {
  157. "type": "string"
  158. },
  159. "status": {
  160. "type": "string",
  161. "enum": [
  162. "STATUS_CANCELLED",
  163. "STATUS_FAILED",
  164. "STATUS_SUCCESSFUL",
  165. "STATUS_RUNNING",
  166. "STATUS_SCHEDULED",
  167. "STATUS_UNKNOWN"
  168. ]
  169. },
  170. "userId": {
  171. "type": "string",
  172. "nullable": true
  173. },
  174. "appId": {
  175. "type": "string"
  176. },
  177. "input": {
  178. "$ref": "#/components/schemas/TaskProcessingIO"
  179. },
  180. "output": {
  181. "$ref": "#/components/schemas/TaskProcessingIO",
  182. "nullable": true
  183. },
  184. "customId": {
  185. "type": "string",
  186. "nullable": true
  187. },
  188. "completionExpectedAt": {
  189. "type": "integer",
  190. "format": "int64",
  191. "nullable": true
  192. },
  193. "progress": {
  194. "type": "number",
  195. "format": "double",
  196. "nullable": true
  197. }
  198. }
  199. }
  200. }
  201. },
  202. "paths": {
  203. "/ocs/v2.php/taskprocessing/tasks_provider/{taskId}/file/{fileId}": {
  204. "get": {
  205. "operationId": "task_processing_api-get-file-contents-ex-app",
  206. "summary": "Returns the contents of a file referenced in a task(ExApp route version)",
  207. "description": "This endpoint requires admin access",
  208. "tags": [
  209. "task_processing_api"
  210. ],
  211. "security": [
  212. {
  213. "bearer_auth": []
  214. },
  215. {
  216. "basic_auth": []
  217. }
  218. ],
  219. "parameters": [
  220. {
  221. "name": "taskId",
  222. "in": "path",
  223. "description": "The id of the task",
  224. "required": true,
  225. "schema": {
  226. "type": "integer",
  227. "format": "int64"
  228. }
  229. },
  230. {
  231. "name": "fileId",
  232. "in": "path",
  233. "description": "The file id of the file to retrieve",
  234. "required": true,
  235. "schema": {
  236. "type": "integer",
  237. "format": "int64"
  238. }
  239. },
  240. {
  241. "name": "OCS-APIRequest",
  242. "in": "header",
  243. "description": "Required to be true for the API request to pass",
  244. "required": true,
  245. "schema": {
  246. "type": "boolean",
  247. "default": true
  248. }
  249. }
  250. ],
  251. "responses": {
  252. "200": {
  253. "description": "File content returned",
  254. "content": {
  255. "*/*": {
  256. "schema": {
  257. "type": "string",
  258. "format": "binary"
  259. }
  260. }
  261. }
  262. },
  263. "500": {
  264. "description": "",
  265. "content": {
  266. "application/json": {
  267. "schema": {
  268. "type": "object",
  269. "required": [
  270. "ocs"
  271. ],
  272. "properties": {
  273. "ocs": {
  274. "type": "object",
  275. "required": [
  276. "meta",
  277. "data"
  278. ],
  279. "properties": {
  280. "meta": {
  281. "$ref": "#/components/schemas/OCSMeta"
  282. },
  283. "data": {
  284. "type": "object",
  285. "required": [
  286. "message"
  287. ],
  288. "properties": {
  289. "message": {
  290. "type": "string"
  291. }
  292. }
  293. }
  294. }
  295. }
  296. }
  297. }
  298. }
  299. }
  300. },
  301. "404": {
  302. "description": "Task or file not found",
  303. "content": {
  304. "application/json": {
  305. "schema": {
  306. "type": "object",
  307. "required": [
  308. "ocs"
  309. ],
  310. "properties": {
  311. "ocs": {
  312. "type": "object",
  313. "required": [
  314. "meta",
  315. "data"
  316. ],
  317. "properties": {
  318. "meta": {
  319. "$ref": "#/components/schemas/OCSMeta"
  320. },
  321. "data": {
  322. "type": "object",
  323. "required": [
  324. "message"
  325. ],
  326. "properties": {
  327. "message": {
  328. "type": "string"
  329. }
  330. }
  331. }
  332. }
  333. }
  334. }
  335. }
  336. }
  337. }
  338. }
  339. }
  340. }
  341. },
  342. "/ocs/v2.php/taskprocessing/tasks_provider/{taskId}/file": {
  343. "post": {
  344. "operationId": "task_processing_api-set-file-contents-ex-app",
  345. "summary": "Upload a file so it can be referenced in a task result (ExApp route version)",
  346. "description": "Use field 'file' for the file upload\nThis endpoint requires admin access",
  347. "tags": [
  348. "task_processing_api"
  349. ],
  350. "security": [
  351. {
  352. "bearer_auth": []
  353. },
  354. {
  355. "basic_auth": []
  356. }
  357. ],
  358. "parameters": [
  359. {
  360. "name": "taskId",
  361. "in": "path",
  362. "description": "The id of the task",
  363. "required": true,
  364. "schema": {
  365. "type": "integer",
  366. "format": "int64"
  367. }
  368. },
  369. {
  370. "name": "OCS-APIRequest",
  371. "in": "header",
  372. "description": "Required to be true for the API request to pass",
  373. "required": true,
  374. "schema": {
  375. "type": "boolean",
  376. "default": true
  377. }
  378. }
  379. ],
  380. "responses": {
  381. "201": {
  382. "description": "File created",
  383. "content": {
  384. "application/json": {
  385. "schema": {
  386. "type": "object",
  387. "required": [
  388. "ocs"
  389. ],
  390. "properties": {
  391. "ocs": {
  392. "type": "object",
  393. "required": [
  394. "meta",
  395. "data"
  396. ],
  397. "properties": {
  398. "meta": {
  399. "$ref": "#/components/schemas/OCSMeta"
  400. },
  401. "data": {
  402. "type": "object",
  403. "required": [
  404. "fileId"
  405. ],
  406. "properties": {
  407. "fileId": {
  408. "type": "integer",
  409. "format": "int64"
  410. }
  411. }
  412. }
  413. }
  414. }
  415. }
  416. }
  417. }
  418. }
  419. },
  420. "400": {
  421. "description": "File upload failed or no file was uploaded",
  422. "content": {
  423. "application/json": {
  424. "schema": {
  425. "type": "object",
  426. "required": [
  427. "ocs"
  428. ],
  429. "properties": {
  430. "ocs": {
  431. "type": "object",
  432. "required": [
  433. "meta",
  434. "data"
  435. ],
  436. "properties": {
  437. "meta": {
  438. "$ref": "#/components/schemas/OCSMeta"
  439. },
  440. "data": {
  441. "type": "object",
  442. "required": [
  443. "message"
  444. ],
  445. "properties": {
  446. "message": {
  447. "type": "string"
  448. }
  449. }
  450. }
  451. }
  452. }
  453. }
  454. }
  455. }
  456. }
  457. },
  458. "500": {
  459. "description": "",
  460. "content": {
  461. "application/json": {
  462. "schema": {
  463. "type": "object",
  464. "required": [
  465. "ocs"
  466. ],
  467. "properties": {
  468. "ocs": {
  469. "type": "object",
  470. "required": [
  471. "meta",
  472. "data"
  473. ],
  474. "properties": {
  475. "meta": {
  476. "$ref": "#/components/schemas/OCSMeta"
  477. },
  478. "data": {
  479. "type": "object",
  480. "required": [
  481. "message"
  482. ],
  483. "properties": {
  484. "message": {
  485. "type": "string"
  486. }
  487. }
  488. }
  489. }
  490. }
  491. }
  492. }
  493. }
  494. }
  495. },
  496. "404": {
  497. "description": "Task not found",
  498. "content": {
  499. "application/json": {
  500. "schema": {
  501. "type": "object",
  502. "required": [
  503. "ocs"
  504. ],
  505. "properties": {
  506. "ocs": {
  507. "type": "object",
  508. "required": [
  509. "meta",
  510. "data"
  511. ],
  512. "properties": {
  513. "meta": {
  514. "$ref": "#/components/schemas/OCSMeta"
  515. },
  516. "data": {
  517. "type": "object",
  518. "required": [
  519. "message"
  520. ],
  521. "properties": {
  522. "message": {
  523. "type": "string"
  524. }
  525. }
  526. }
  527. }
  528. }
  529. }
  530. }
  531. }
  532. }
  533. }
  534. }
  535. }
  536. },
  537. "/ocs/v2.php/taskprocessing/tasks_provider/{taskId}/progress": {
  538. "post": {
  539. "operationId": "task_processing_api-set-progress",
  540. "summary": "Sets the task progress",
  541. "description": "This endpoint requires admin access",
  542. "tags": [
  543. "task_processing_api"
  544. ],
  545. "security": [
  546. {
  547. "bearer_auth": []
  548. },
  549. {
  550. "basic_auth": []
  551. }
  552. ],
  553. "requestBody": {
  554. "required": true,
  555. "content": {
  556. "application/json": {
  557. "schema": {
  558. "type": "object",
  559. "required": [
  560. "progress"
  561. ],
  562. "properties": {
  563. "progress": {
  564. "type": "number",
  565. "format": "double",
  566. "description": "The progress"
  567. }
  568. }
  569. }
  570. }
  571. }
  572. },
  573. "parameters": [
  574. {
  575. "name": "taskId",
  576. "in": "path",
  577. "description": "The id of the task",
  578. "required": true,
  579. "schema": {
  580. "type": "integer",
  581. "format": "int64"
  582. }
  583. },
  584. {
  585. "name": "OCS-APIRequest",
  586. "in": "header",
  587. "description": "Required to be true for the API request to pass",
  588. "required": true,
  589. "schema": {
  590. "type": "boolean",
  591. "default": true
  592. }
  593. }
  594. ],
  595. "responses": {
  596. "200": {
  597. "description": "Progress updated successfully",
  598. "content": {
  599. "application/json": {
  600. "schema": {
  601. "type": "object",
  602. "required": [
  603. "ocs"
  604. ],
  605. "properties": {
  606. "ocs": {
  607. "type": "object",
  608. "required": [
  609. "meta",
  610. "data"
  611. ],
  612. "properties": {
  613. "meta": {
  614. "$ref": "#/components/schemas/OCSMeta"
  615. },
  616. "data": {
  617. "type": "object",
  618. "required": [
  619. "task"
  620. ],
  621. "properties": {
  622. "task": {
  623. "$ref": "#/components/schemas/TaskProcessingTask"
  624. }
  625. }
  626. }
  627. }
  628. }
  629. }
  630. }
  631. }
  632. }
  633. },
  634. "500": {
  635. "description": "",
  636. "content": {
  637. "application/json": {
  638. "schema": {
  639. "type": "object",
  640. "required": [
  641. "ocs"
  642. ],
  643. "properties": {
  644. "ocs": {
  645. "type": "object",
  646. "required": [
  647. "meta",
  648. "data"
  649. ],
  650. "properties": {
  651. "meta": {
  652. "$ref": "#/components/schemas/OCSMeta"
  653. },
  654. "data": {
  655. "type": "object",
  656. "required": [
  657. "message"
  658. ],
  659. "properties": {
  660. "message": {
  661. "type": "string"
  662. }
  663. }
  664. }
  665. }
  666. }
  667. }
  668. }
  669. }
  670. }
  671. },
  672. "404": {
  673. "description": "Task not found",
  674. "content": {
  675. "application/json": {
  676. "schema": {
  677. "type": "object",
  678. "required": [
  679. "ocs"
  680. ],
  681. "properties": {
  682. "ocs": {
  683. "type": "object",
  684. "required": [
  685. "meta",
  686. "data"
  687. ],
  688. "properties": {
  689. "meta": {
  690. "$ref": "#/components/schemas/OCSMeta"
  691. },
  692. "data": {
  693. "type": "object",
  694. "required": [
  695. "message"
  696. ],
  697. "properties": {
  698. "message": {
  699. "type": "string"
  700. }
  701. }
  702. }
  703. }
  704. }
  705. }
  706. }
  707. }
  708. }
  709. }
  710. }
  711. }
  712. },
  713. "/ocs/v2.php/taskprocessing/tasks_provider/{taskId}/result": {
  714. "post": {
  715. "operationId": "task_processing_api-set-result",
  716. "summary": "Sets the task result",
  717. "description": "This endpoint requires admin access",
  718. "tags": [
  719. "task_processing_api"
  720. ],
  721. "security": [
  722. {
  723. "bearer_auth": []
  724. },
  725. {
  726. "basic_auth": []
  727. }
  728. ],
  729. "requestBody": {
  730. "required": false,
  731. "content": {
  732. "application/json": {
  733. "schema": {
  734. "type": "object",
  735. "properties": {
  736. "output": {
  737. "type": "object",
  738. "nullable": true,
  739. "description": "The resulting task output, files are represented by their IDs",
  740. "additionalProperties": {
  741. "type": "object"
  742. }
  743. },
  744. "errorMessage": {
  745. "type": "string",
  746. "nullable": true,
  747. "description": "An error message if the task failed"
  748. }
  749. }
  750. }
  751. }
  752. }
  753. },
  754. "parameters": [
  755. {
  756. "name": "taskId",
  757. "in": "path",
  758. "description": "The id of the task",
  759. "required": true,
  760. "schema": {
  761. "type": "integer",
  762. "format": "int64"
  763. }
  764. },
  765. {
  766. "name": "OCS-APIRequest",
  767. "in": "header",
  768. "description": "Required to be true for the API request to pass",
  769. "required": true,
  770. "schema": {
  771. "type": "boolean",
  772. "default": true
  773. }
  774. }
  775. ],
  776. "responses": {
  777. "200": {
  778. "description": "Result updated successfully",
  779. "content": {
  780. "application/json": {
  781. "schema": {
  782. "type": "object",
  783. "required": [
  784. "ocs"
  785. ],
  786. "properties": {
  787. "ocs": {
  788. "type": "object",
  789. "required": [
  790. "meta",
  791. "data"
  792. ],
  793. "properties": {
  794. "meta": {
  795. "$ref": "#/components/schemas/OCSMeta"
  796. },
  797. "data": {
  798. "type": "object",
  799. "required": [
  800. "task"
  801. ],
  802. "properties": {
  803. "task": {
  804. "$ref": "#/components/schemas/TaskProcessingTask"
  805. }
  806. }
  807. }
  808. }
  809. }
  810. }
  811. }
  812. }
  813. }
  814. },
  815. "500": {
  816. "description": "",
  817. "content": {
  818. "application/json": {
  819. "schema": {
  820. "type": "object",
  821. "required": [
  822. "ocs"
  823. ],
  824. "properties": {
  825. "ocs": {
  826. "type": "object",
  827. "required": [
  828. "meta",
  829. "data"
  830. ],
  831. "properties": {
  832. "meta": {
  833. "$ref": "#/components/schemas/OCSMeta"
  834. },
  835. "data": {
  836. "type": "object",
  837. "required": [
  838. "message"
  839. ],
  840. "properties": {
  841. "message": {
  842. "type": "string"
  843. }
  844. }
  845. }
  846. }
  847. }
  848. }
  849. }
  850. }
  851. }
  852. },
  853. "404": {
  854. "description": "Task not found",
  855. "content": {
  856. "application/json": {
  857. "schema": {
  858. "type": "object",
  859. "required": [
  860. "ocs"
  861. ],
  862. "properties": {
  863. "ocs": {
  864. "type": "object",
  865. "required": [
  866. "meta",
  867. "data"
  868. ],
  869. "properties": {
  870. "meta": {
  871. "$ref": "#/components/schemas/OCSMeta"
  872. },
  873. "data": {
  874. "type": "object",
  875. "required": [
  876. "message"
  877. ],
  878. "properties": {
  879. "message": {
  880. "type": "string"
  881. }
  882. }
  883. }
  884. }
  885. }
  886. }
  887. }
  888. }
  889. }
  890. }
  891. }
  892. }
  893. },
  894. "/ocs/v2.php/taskprocessing/tasks_provider/next": {
  895. "get": {
  896. "operationId": "task_processing_api-get-next-scheduled-task",
  897. "summary": "Returns the next scheduled task for the taskTypeId",
  898. "description": "This endpoint requires admin access",
  899. "tags": [
  900. "task_processing_api"
  901. ],
  902. "security": [
  903. {
  904. "bearer_auth": []
  905. },
  906. {
  907. "basic_auth": []
  908. }
  909. ],
  910. "requestBody": {
  911. "required": true,
  912. "content": {
  913. "application/json": {
  914. "schema": {
  915. "type": "object",
  916. "required": [
  917. "providerIds",
  918. "taskTypeIds"
  919. ],
  920. "properties": {
  921. "providerIds": {
  922. "type": "array",
  923. "description": "The ids of the providers",
  924. "items": {
  925. "type": "string"
  926. }
  927. },
  928. "taskTypeIds": {
  929. "type": "array",
  930. "description": "The ids of the task types",
  931. "items": {
  932. "type": "string"
  933. }
  934. }
  935. }
  936. }
  937. }
  938. }
  939. },
  940. "parameters": [
  941. {
  942. "name": "OCS-APIRequest",
  943. "in": "header",
  944. "description": "Required to be true for the API request to pass",
  945. "required": true,
  946. "schema": {
  947. "type": "boolean",
  948. "default": true
  949. }
  950. }
  951. ],
  952. "responses": {
  953. "200": {
  954. "description": "Task returned",
  955. "content": {
  956. "application/json": {
  957. "schema": {
  958. "type": "object",
  959. "required": [
  960. "ocs"
  961. ],
  962. "properties": {
  963. "ocs": {
  964. "type": "object",
  965. "required": [
  966. "meta",
  967. "data"
  968. ],
  969. "properties": {
  970. "meta": {
  971. "$ref": "#/components/schemas/OCSMeta"
  972. },
  973. "data": {
  974. "type": "object",
  975. "required": [
  976. "task",
  977. "provider"
  978. ],
  979. "properties": {
  980. "task": {
  981. "$ref": "#/components/schemas/TaskProcessingTask"
  982. },
  983. "provider": {
  984. "type": "object",
  985. "required": [
  986. "name"
  987. ],
  988. "properties": {
  989. "name": {
  990. "type": "string"
  991. }
  992. }
  993. }
  994. }
  995. }
  996. }
  997. }
  998. }
  999. }
  1000. }
  1001. }
  1002. },
  1003. "204": {
  1004. "description": "No task found"
  1005. },
  1006. "500": {
  1007. "description": "",
  1008. "content": {
  1009. "application/json": {
  1010. "schema": {
  1011. "type": "object",
  1012. "required": [
  1013. "ocs"
  1014. ],
  1015. "properties": {
  1016. "ocs": {
  1017. "type": "object",
  1018. "required": [
  1019. "meta",
  1020. "data"
  1021. ],
  1022. "properties": {
  1023. "meta": {
  1024. "$ref": "#/components/schemas/OCSMeta"
  1025. },
  1026. "data": {
  1027. "type": "object",
  1028. "required": [
  1029. "message"
  1030. ],
  1031. "properties": {
  1032. "message": {
  1033. "type": "string"
  1034. }
  1035. }
  1036. }
  1037. }
  1038. }
  1039. }
  1040. }
  1041. }
  1042. }
  1043. }
  1044. }
  1045. }
  1046. }
  1047. },
  1048. "tags": [
  1049. {
  1050. "name": "avatar",
  1051. "description": "Class AvatarController"
  1052. },
  1053. {
  1054. "name": "guest_avatar",
  1055. "description": "This controller handles guest avatar requests."
  1056. },
  1057. {
  1058. "name": "ocm",
  1059. "description": "Controller about the endpoint /ocm-provider/"
  1060. }
  1061. ]
  1062. }