1
0

openapi.json 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035
  1. {
  2. "openapi": "3.0.3",
  3. "info": {
  4. "title": "federatedfilesharing",
  5. "version": "0.0.1",
  6. "description": "Provide federated file sharing across servers",
  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. "OCSMeta": {
  24. "type": "object",
  25. "required": [
  26. "status",
  27. "statuscode"
  28. ],
  29. "properties": {
  30. "status": {
  31. "type": "string"
  32. },
  33. "statuscode": {
  34. "type": "integer"
  35. },
  36. "message": {
  37. "type": "string"
  38. },
  39. "totalitems": {
  40. "type": "string"
  41. },
  42. "itemsperpage": {
  43. "type": "string"
  44. }
  45. }
  46. }
  47. }
  48. },
  49. "paths": {
  50. "/index.php/apps/federatedfilesharing/createFederatedShare": {
  51. "post": {
  52. "operationId": "mount_public_link-create-federated-share",
  53. "summary": "send federated share to a user of a public link",
  54. "tags": [
  55. "mount_public_link"
  56. ],
  57. "security": [
  58. {},
  59. {
  60. "bearer_auth": []
  61. },
  62. {
  63. "basic_auth": []
  64. }
  65. ],
  66. "parameters": [
  67. {
  68. "name": "shareWith",
  69. "in": "query",
  70. "description": "Username to share with",
  71. "required": true,
  72. "schema": {
  73. "type": "string"
  74. }
  75. },
  76. {
  77. "name": "token",
  78. "in": "query",
  79. "description": "Token of the share",
  80. "required": true,
  81. "schema": {
  82. "type": "string"
  83. }
  84. },
  85. {
  86. "name": "password",
  87. "in": "query",
  88. "description": "Password of the share",
  89. "schema": {
  90. "type": "string",
  91. "default": ""
  92. }
  93. }
  94. ],
  95. "responses": {
  96. "200": {
  97. "description": "Remote URL returned",
  98. "content": {
  99. "application/json": {
  100. "schema": {
  101. "type": "object",
  102. "required": [
  103. "remoteUrl"
  104. ],
  105. "properties": {
  106. "remoteUrl": {
  107. "type": "string"
  108. }
  109. }
  110. }
  111. }
  112. }
  113. },
  114. "400": {
  115. "description": "Creating share is not possible",
  116. "content": {
  117. "application/json": {
  118. "schema": {
  119. "type": "object",
  120. "required": [
  121. "message"
  122. ],
  123. "properties": {
  124. "message": {
  125. "type": "string"
  126. }
  127. }
  128. }
  129. }
  130. }
  131. }
  132. }
  133. }
  134. },
  135. "/ocs/v2.php/cloud/shares": {
  136. "post": {
  137. "operationId": "request_handler-create-share",
  138. "summary": "create a new share",
  139. "tags": [
  140. "request_handler"
  141. ],
  142. "security": [
  143. {},
  144. {
  145. "bearer_auth": []
  146. },
  147. {
  148. "basic_auth": []
  149. }
  150. ],
  151. "parameters": [
  152. {
  153. "name": "remote",
  154. "in": "query",
  155. "description": "Address of the remote",
  156. "schema": {
  157. "type": "string",
  158. "nullable": true
  159. }
  160. },
  161. {
  162. "name": "token",
  163. "in": "query",
  164. "description": "Shared secret between servers",
  165. "schema": {
  166. "type": "string",
  167. "nullable": true
  168. }
  169. },
  170. {
  171. "name": "name",
  172. "in": "query",
  173. "description": "Name of the shared resource",
  174. "schema": {
  175. "type": "string",
  176. "nullable": true
  177. }
  178. },
  179. {
  180. "name": "owner",
  181. "in": "query",
  182. "description": "Display name of the receiver",
  183. "schema": {
  184. "type": "string",
  185. "nullable": true
  186. }
  187. },
  188. {
  189. "name": "sharedBy",
  190. "in": "query",
  191. "description": "Display name of the sender",
  192. "schema": {
  193. "type": "string",
  194. "nullable": true
  195. }
  196. },
  197. {
  198. "name": "shareWith",
  199. "in": "query",
  200. "description": "ID of the user that receives the share",
  201. "schema": {
  202. "type": "string",
  203. "nullable": true
  204. }
  205. },
  206. {
  207. "name": "remoteId",
  208. "in": "query",
  209. "description": "ID of the remote",
  210. "schema": {
  211. "type": "integer",
  212. "format": "int64",
  213. "nullable": true
  214. }
  215. },
  216. {
  217. "name": "sharedByFederatedId",
  218. "in": "query",
  219. "description": "Federated ID of the sender",
  220. "schema": {
  221. "type": "string",
  222. "nullable": true
  223. }
  224. },
  225. {
  226. "name": "ownerFederatedId",
  227. "in": "query",
  228. "description": "Federated ID of the receiver",
  229. "schema": {
  230. "type": "string",
  231. "nullable": true
  232. }
  233. },
  234. {
  235. "name": "OCS-APIRequest",
  236. "in": "header",
  237. "description": "Required to be true for the API request to pass",
  238. "required": true,
  239. "schema": {
  240. "type": "boolean",
  241. "default": true
  242. }
  243. }
  244. ],
  245. "responses": {
  246. "200": {
  247. "description": "Share created successfully",
  248. "content": {
  249. "application/json": {
  250. "schema": {
  251. "type": "object",
  252. "required": [
  253. "ocs"
  254. ],
  255. "properties": {
  256. "ocs": {
  257. "type": "object",
  258. "required": [
  259. "meta",
  260. "data"
  261. ],
  262. "properties": {
  263. "meta": {
  264. "$ref": "#/components/schemas/OCSMeta"
  265. },
  266. "data": {}
  267. }
  268. }
  269. }
  270. }
  271. }
  272. }
  273. }
  274. }
  275. }
  276. },
  277. "/ocs/v2.php/cloud/shares/{id}/reshare": {
  278. "post": {
  279. "operationId": "request_handler-re-share",
  280. "summary": "create re-share on behalf of another user",
  281. "tags": [
  282. "request_handler"
  283. ],
  284. "security": [
  285. {},
  286. {
  287. "bearer_auth": []
  288. },
  289. {
  290. "basic_auth": []
  291. }
  292. ],
  293. "parameters": [
  294. {
  295. "name": "token",
  296. "in": "query",
  297. "description": "Shared secret between servers",
  298. "schema": {
  299. "type": "string",
  300. "nullable": true
  301. }
  302. },
  303. {
  304. "name": "shareWith",
  305. "in": "query",
  306. "description": "ID of the user that receives the share",
  307. "schema": {
  308. "type": "string",
  309. "nullable": true
  310. }
  311. },
  312. {
  313. "name": "remoteId",
  314. "in": "query",
  315. "description": "ID of the remote",
  316. "schema": {
  317. "type": "integer",
  318. "format": "int64",
  319. "nullable": true,
  320. "default": 0
  321. }
  322. },
  323. {
  324. "name": "id",
  325. "in": "path",
  326. "description": "ID of the share",
  327. "required": true,
  328. "schema": {
  329. "type": "integer",
  330. "format": "int64"
  331. }
  332. },
  333. {
  334. "name": "OCS-APIRequest",
  335. "in": "header",
  336. "description": "Required to be true for the API request to pass",
  337. "required": true,
  338. "schema": {
  339. "type": "boolean",
  340. "default": true
  341. }
  342. }
  343. ],
  344. "responses": {
  345. "200": {
  346. "description": "Remote share returned",
  347. "content": {
  348. "application/json": {
  349. "schema": {
  350. "type": "object",
  351. "required": [
  352. "ocs"
  353. ],
  354. "properties": {
  355. "ocs": {
  356. "type": "object",
  357. "required": [
  358. "meta",
  359. "data"
  360. ],
  361. "properties": {
  362. "meta": {
  363. "$ref": "#/components/schemas/OCSMeta"
  364. },
  365. "data": {
  366. "type": "object",
  367. "required": [
  368. "token",
  369. "remoteId"
  370. ],
  371. "properties": {
  372. "token": {
  373. "type": "string"
  374. },
  375. "remoteId": {
  376. "type": "string"
  377. }
  378. }
  379. }
  380. }
  381. }
  382. }
  383. }
  384. }
  385. }
  386. },
  387. "400": {
  388. "description": "Re-sharing is not possible",
  389. "content": {
  390. "application/json": {
  391. "schema": {
  392. "type": "object",
  393. "required": [
  394. "ocs"
  395. ],
  396. "properties": {
  397. "ocs": {
  398. "type": "object",
  399. "required": [
  400. "meta",
  401. "data"
  402. ],
  403. "properties": {
  404. "meta": {
  405. "$ref": "#/components/schemas/OCSMeta"
  406. },
  407. "data": {}
  408. }
  409. }
  410. }
  411. }
  412. }
  413. }
  414. }
  415. }
  416. }
  417. },
  418. "/ocs/v2.php/cloud/shares/{id}/permissions": {
  419. "post": {
  420. "operationId": "request_handler-update-permissions",
  421. "summary": "update share information to keep federated re-shares in sync",
  422. "tags": [
  423. "request_handler"
  424. ],
  425. "security": [
  426. {},
  427. {
  428. "bearer_auth": []
  429. },
  430. {
  431. "basic_auth": []
  432. }
  433. ],
  434. "parameters": [
  435. {
  436. "name": "token",
  437. "in": "query",
  438. "description": "Shared secret between servers",
  439. "schema": {
  440. "type": "string",
  441. "nullable": true
  442. }
  443. },
  444. {
  445. "name": "permissions",
  446. "in": "query",
  447. "description": "New permissions",
  448. "schema": {
  449. "type": "integer",
  450. "format": "int64",
  451. "nullable": true
  452. }
  453. },
  454. {
  455. "name": "id",
  456. "in": "path",
  457. "description": "ID of the share",
  458. "required": true,
  459. "schema": {
  460. "type": "integer",
  461. "format": "int64"
  462. }
  463. },
  464. {
  465. "name": "OCS-APIRequest",
  466. "in": "header",
  467. "description": "Required to be true for the API request to pass",
  468. "required": true,
  469. "schema": {
  470. "type": "boolean",
  471. "default": true
  472. }
  473. }
  474. ],
  475. "responses": {
  476. "200": {
  477. "description": "Permissions updated successfully",
  478. "content": {
  479. "application/json": {
  480. "schema": {
  481. "type": "object",
  482. "required": [
  483. "ocs"
  484. ],
  485. "properties": {
  486. "ocs": {
  487. "type": "object",
  488. "required": [
  489. "meta",
  490. "data"
  491. ],
  492. "properties": {
  493. "meta": {
  494. "$ref": "#/components/schemas/OCSMeta"
  495. },
  496. "data": {}
  497. }
  498. }
  499. }
  500. }
  501. }
  502. }
  503. },
  504. "400": {
  505. "description": "Updating permissions is not possible",
  506. "content": {
  507. "application/json": {
  508. "schema": {
  509. "type": "object",
  510. "required": [
  511. "ocs"
  512. ],
  513. "properties": {
  514. "ocs": {
  515. "type": "object",
  516. "required": [
  517. "meta",
  518. "data"
  519. ],
  520. "properties": {
  521. "meta": {
  522. "$ref": "#/components/schemas/OCSMeta"
  523. },
  524. "data": {}
  525. }
  526. }
  527. }
  528. }
  529. }
  530. }
  531. }
  532. }
  533. }
  534. },
  535. "/ocs/v2.php/cloud/shares/{id}/accept": {
  536. "post": {
  537. "operationId": "request_handler-accept-share",
  538. "summary": "accept server-to-server share",
  539. "tags": [
  540. "request_handler"
  541. ],
  542. "security": [
  543. {},
  544. {
  545. "bearer_auth": []
  546. },
  547. {
  548. "basic_auth": []
  549. }
  550. ],
  551. "parameters": [
  552. {
  553. "name": "token",
  554. "in": "query",
  555. "description": "Shared secret between servers",
  556. "schema": {
  557. "type": "string",
  558. "nullable": true
  559. }
  560. },
  561. {
  562. "name": "id",
  563. "in": "path",
  564. "description": "ID of the remote share",
  565. "required": true,
  566. "schema": {
  567. "type": "integer",
  568. "format": "int64"
  569. }
  570. },
  571. {
  572. "name": "OCS-APIRequest",
  573. "in": "header",
  574. "description": "Required to be true for the API request to pass",
  575. "required": true,
  576. "schema": {
  577. "type": "boolean",
  578. "default": true
  579. }
  580. }
  581. ],
  582. "responses": {
  583. "200": {
  584. "description": "Share accepted successfully",
  585. "content": {
  586. "application/json": {
  587. "schema": {
  588. "type": "object",
  589. "required": [
  590. "ocs"
  591. ],
  592. "properties": {
  593. "ocs": {
  594. "type": "object",
  595. "required": [
  596. "meta",
  597. "data"
  598. ],
  599. "properties": {
  600. "meta": {
  601. "$ref": "#/components/schemas/OCSMeta"
  602. },
  603. "data": {}
  604. }
  605. }
  606. }
  607. }
  608. }
  609. }
  610. },
  611. "500": {
  612. "description": "",
  613. "content": {
  614. "text/plain": {
  615. "schema": {
  616. "type": "string"
  617. }
  618. }
  619. }
  620. }
  621. }
  622. }
  623. },
  624. "/ocs/v2.php/cloud/shares/{id}/decline": {
  625. "post": {
  626. "operationId": "request_handler-decline-share",
  627. "summary": "decline server-to-server share",
  628. "tags": [
  629. "request_handler"
  630. ],
  631. "security": [
  632. {},
  633. {
  634. "bearer_auth": []
  635. },
  636. {
  637. "basic_auth": []
  638. }
  639. ],
  640. "parameters": [
  641. {
  642. "name": "token",
  643. "in": "query",
  644. "description": "Shared secret between servers",
  645. "schema": {
  646. "type": "string",
  647. "nullable": true
  648. }
  649. },
  650. {
  651. "name": "id",
  652. "in": "path",
  653. "description": "ID of the remote share",
  654. "required": true,
  655. "schema": {
  656. "type": "integer",
  657. "format": "int64"
  658. }
  659. },
  660. {
  661. "name": "OCS-APIRequest",
  662. "in": "header",
  663. "description": "Required to be true for the API request to pass",
  664. "required": true,
  665. "schema": {
  666. "type": "boolean",
  667. "default": true
  668. }
  669. }
  670. ],
  671. "responses": {
  672. "200": {
  673. "description": "Share declined successfully",
  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. }
  694. }
  695. }
  696. }
  697. }
  698. }
  699. }
  700. }
  701. }
  702. },
  703. "/ocs/v2.php/cloud/shares/{id}/unshare": {
  704. "post": {
  705. "operationId": "request_handler-unshare",
  706. "summary": "remove server-to-server share if it was unshared by the owner",
  707. "tags": [
  708. "request_handler"
  709. ],
  710. "security": [
  711. {},
  712. {
  713. "bearer_auth": []
  714. },
  715. {
  716. "basic_auth": []
  717. }
  718. ],
  719. "parameters": [
  720. {
  721. "name": "token",
  722. "in": "query",
  723. "description": "Shared secret between servers",
  724. "schema": {
  725. "type": "string",
  726. "nullable": true
  727. }
  728. },
  729. {
  730. "name": "id",
  731. "in": "path",
  732. "description": "ID of the share",
  733. "required": true,
  734. "schema": {
  735. "type": "integer",
  736. "format": "int64"
  737. }
  738. },
  739. {
  740. "name": "OCS-APIRequest",
  741. "in": "header",
  742. "description": "Required to be true for the API request to pass",
  743. "required": true,
  744. "schema": {
  745. "type": "boolean",
  746. "default": true
  747. }
  748. }
  749. ],
  750. "responses": {
  751. "200": {
  752. "description": "Share unshared successfully",
  753. "content": {
  754. "application/json": {
  755. "schema": {
  756. "type": "object",
  757. "required": [
  758. "ocs"
  759. ],
  760. "properties": {
  761. "ocs": {
  762. "type": "object",
  763. "required": [
  764. "meta",
  765. "data"
  766. ],
  767. "properties": {
  768. "meta": {
  769. "$ref": "#/components/schemas/OCSMeta"
  770. },
  771. "data": {}
  772. }
  773. }
  774. }
  775. }
  776. }
  777. }
  778. }
  779. }
  780. }
  781. },
  782. "/ocs/v2.php/cloud/shares/{id}/revoke": {
  783. "post": {
  784. "operationId": "request_handler-revoke",
  785. "summary": "federated share was revoked, either by the owner or the re-sharer",
  786. "tags": [
  787. "request_handler"
  788. ],
  789. "security": [
  790. {},
  791. {
  792. "bearer_auth": []
  793. },
  794. {
  795. "basic_auth": []
  796. }
  797. ],
  798. "parameters": [
  799. {
  800. "name": "token",
  801. "in": "query",
  802. "description": "Shared secret between servers",
  803. "schema": {
  804. "type": "string",
  805. "nullable": true
  806. }
  807. },
  808. {
  809. "name": "id",
  810. "in": "path",
  811. "description": "ID of the share",
  812. "required": true,
  813. "schema": {
  814. "type": "integer",
  815. "format": "int64"
  816. }
  817. },
  818. {
  819. "name": "OCS-APIRequest",
  820. "in": "header",
  821. "description": "Required to be true for the API request to pass",
  822. "required": true,
  823. "schema": {
  824. "type": "boolean",
  825. "default": true
  826. }
  827. }
  828. ],
  829. "responses": {
  830. "200": {
  831. "description": "Share revoked successfully",
  832. "content": {
  833. "application/json": {
  834. "schema": {
  835. "type": "object",
  836. "required": [
  837. "ocs"
  838. ],
  839. "properties": {
  840. "ocs": {
  841. "type": "object",
  842. "required": [
  843. "meta",
  844. "data"
  845. ],
  846. "properties": {
  847. "meta": {
  848. "$ref": "#/components/schemas/OCSMeta"
  849. },
  850. "data": {}
  851. }
  852. }
  853. }
  854. }
  855. }
  856. }
  857. },
  858. "400": {
  859. "description": "Revoking the share is not possible",
  860. "content": {
  861. "application/json": {
  862. "schema": {
  863. "type": "object",
  864. "required": [
  865. "ocs"
  866. ],
  867. "properties": {
  868. "ocs": {
  869. "type": "object",
  870. "required": [
  871. "meta",
  872. "data"
  873. ],
  874. "properties": {
  875. "meta": {
  876. "$ref": "#/components/schemas/OCSMeta"
  877. },
  878. "data": {}
  879. }
  880. }
  881. }
  882. }
  883. }
  884. }
  885. }
  886. }
  887. }
  888. },
  889. "/ocs/v2.php/cloud/shares/{id}/move": {
  890. "post": {
  891. "operationId": "request_handler-move",
  892. "summary": "change the owner of a server-to-server share",
  893. "tags": [
  894. "request_handler"
  895. ],
  896. "security": [
  897. {},
  898. {
  899. "bearer_auth": []
  900. },
  901. {
  902. "basic_auth": []
  903. }
  904. ],
  905. "parameters": [
  906. {
  907. "name": "token",
  908. "in": "query",
  909. "description": "Shared secret between servers",
  910. "schema": {
  911. "type": "string",
  912. "nullable": true
  913. }
  914. },
  915. {
  916. "name": "remote",
  917. "in": "query",
  918. "description": "Address of the remote",
  919. "schema": {
  920. "type": "string",
  921. "nullable": true
  922. }
  923. },
  924. {
  925. "name": "remote_id",
  926. "in": "query",
  927. "description": "ID of the remote",
  928. "schema": {
  929. "type": "string",
  930. "nullable": true
  931. }
  932. },
  933. {
  934. "name": "id",
  935. "in": "path",
  936. "description": "ID of the share",
  937. "required": true,
  938. "schema": {
  939. "type": "integer",
  940. "format": "int64"
  941. }
  942. },
  943. {
  944. "name": "OCS-APIRequest",
  945. "in": "header",
  946. "description": "Required to be true for the API request to pass",
  947. "required": true,
  948. "schema": {
  949. "type": "boolean",
  950. "default": true
  951. }
  952. }
  953. ],
  954. "responses": {
  955. "200": {
  956. "description": "Share moved successfully",
  957. "content": {
  958. "application/json": {
  959. "schema": {
  960. "type": "object",
  961. "required": [
  962. "ocs"
  963. ],
  964. "properties": {
  965. "ocs": {
  966. "type": "object",
  967. "required": [
  968. "meta",
  969. "data"
  970. ],
  971. "properties": {
  972. "meta": {
  973. "$ref": "#/components/schemas/OCSMeta"
  974. },
  975. "data": {
  976. "type": "object",
  977. "required": [
  978. "remote",
  979. "owner"
  980. ],
  981. "properties": {
  982. "remote": {
  983. "type": "string"
  984. },
  985. "owner": {
  986. "type": "string"
  987. }
  988. }
  989. }
  990. }
  991. }
  992. }
  993. }
  994. }
  995. }
  996. },
  997. "400": {
  998. "description": "Moving share is not possible",
  999. "content": {
  1000. "application/json": {
  1001. "schema": {
  1002. "type": "object",
  1003. "required": [
  1004. "ocs"
  1005. ],
  1006. "properties": {
  1007. "ocs": {
  1008. "type": "object",
  1009. "required": [
  1010. "meta",
  1011. "data"
  1012. ],
  1013. "properties": {
  1014. "meta": {
  1015. "$ref": "#/components/schemas/OCSMeta"
  1016. },
  1017. "data": {}
  1018. }
  1019. }
  1020. }
  1021. }
  1022. }
  1023. }
  1024. }
  1025. }
  1026. }
  1027. }
  1028. },
  1029. "tags": [
  1030. {
  1031. "name": "mount_public_link",
  1032. "description": "Class MountPublicLinkController\nconvert public links to federated shares"
  1033. }
  1034. ]
  1035. }