You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1158 lines
51 KiB

  1. {
  2. "openapi": "3.0.3",
  3. "info": {
  4. "title": "dav",
  5. "version": "0.0.1",
  6. "description": "WebDAV endpoint",
  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. "dav"
  27. ],
  28. "properties": {
  29. "dav": {
  30. "type": "object",
  31. "required": [
  32. "chunking",
  33. "public_shares_chunking"
  34. ],
  35. "properties": {
  36. "chunking": {
  37. "type": "string"
  38. },
  39. "public_shares_chunking": {
  40. "type": "boolean"
  41. },
  42. "bulkupload": {
  43. "type": "string"
  44. },
  45. "absence-supported": {
  46. "type": "boolean"
  47. },
  48. "absence-replacement": {
  49. "type": "boolean"
  50. }
  51. }
  52. }
  53. }
  54. },
  55. "CurrentOutOfOfficeData": {
  56. "allOf": [
  57. {
  58. "$ref": "#/components/schemas/OutOfOfficeDataCommon"
  59. },
  60. {
  61. "type": "object",
  62. "required": [
  63. "id",
  64. "startDate",
  65. "endDate",
  66. "shortMessage"
  67. ],
  68. "properties": {
  69. "id": {
  70. "type": "string"
  71. },
  72. "startDate": {
  73. "type": "integer",
  74. "format": "int64"
  75. },
  76. "endDate": {
  77. "type": "integer",
  78. "format": "int64"
  79. },
  80. "shortMessage": {
  81. "type": "string"
  82. }
  83. }
  84. }
  85. ]
  86. },
  87. "OCSMeta": {
  88. "type": "object",
  89. "required": [
  90. "status",
  91. "statuscode"
  92. ],
  93. "properties": {
  94. "status": {
  95. "type": "string"
  96. },
  97. "statuscode": {
  98. "type": "integer"
  99. },
  100. "message": {
  101. "type": "string"
  102. },
  103. "totalitems": {
  104. "type": "string"
  105. },
  106. "itemsperpage": {
  107. "type": "string"
  108. }
  109. }
  110. },
  111. "OutOfOfficeData": {
  112. "allOf": [
  113. {
  114. "$ref": "#/components/schemas/OutOfOfficeDataCommon"
  115. },
  116. {
  117. "type": "object",
  118. "required": [
  119. "id",
  120. "firstDay",
  121. "lastDay",
  122. "status"
  123. ],
  124. "properties": {
  125. "id": {
  126. "type": "integer",
  127. "format": "int64"
  128. },
  129. "firstDay": {
  130. "type": "string"
  131. },
  132. "lastDay": {
  133. "type": "string"
  134. },
  135. "status": {
  136. "type": "string"
  137. }
  138. }
  139. }
  140. ]
  141. },
  142. "OutOfOfficeDataCommon": {
  143. "type": "object",
  144. "required": [
  145. "userId",
  146. "message",
  147. "replacementUserId",
  148. "replacementUserDisplayName"
  149. ],
  150. "properties": {
  151. "userId": {
  152. "type": "string"
  153. },
  154. "message": {
  155. "type": "string"
  156. },
  157. "replacementUserId": {
  158. "type": "string",
  159. "nullable": true
  160. },
  161. "replacementUserDisplayName": {
  162. "type": "string",
  163. "nullable": true
  164. }
  165. }
  166. },
  167. "UpcomingEvent": {
  168. "type": "object",
  169. "required": [
  170. "uri",
  171. "calendarUri",
  172. "start",
  173. "summary",
  174. "location"
  175. ],
  176. "properties": {
  177. "uri": {
  178. "type": "string"
  179. },
  180. "calendarUri": {
  181. "type": "string"
  182. },
  183. "start": {
  184. "type": "integer",
  185. "format": "int64",
  186. "nullable": true
  187. },
  188. "summary": {
  189. "type": "string",
  190. "nullable": true
  191. },
  192. "location": {
  193. "type": "string",
  194. "nullable": true
  195. }
  196. }
  197. }
  198. }
  199. },
  200. "paths": {
  201. "/ocs/v2.php/apps/dav/api/v1/direct": {
  202. "post": {
  203. "operationId": "direct-get-url",
  204. "summary": "Get a direct link to a file",
  205. "tags": [
  206. "direct"
  207. ],
  208. "security": [
  209. {
  210. "bearer_auth": []
  211. },
  212. {
  213. "basic_auth": []
  214. }
  215. ],
  216. "requestBody": {
  217. "required": true,
  218. "content": {
  219. "application/json": {
  220. "schema": {
  221. "type": "object",
  222. "required": [
  223. "fileId",
  224. "expirationTime"
  225. ],
  226. "properties": {
  227. "fileId": {
  228. "type": "integer",
  229. "format": "int64",
  230. "description": "ID of the file"
  231. },
  232. "expirationTime": {
  233. "type": "integer",
  234. "format": "int64",
  235. "description": "Duration until the link expires"
  236. }
  237. }
  238. }
  239. }
  240. }
  241. },
  242. "parameters": [
  243. {
  244. "name": "OCS-APIRequest",
  245. "in": "header",
  246. "description": "Required to be true for the API request to pass",
  247. "required": true,
  248. "schema": {
  249. "type": "boolean",
  250. "default": true
  251. }
  252. }
  253. ],
  254. "responses": {
  255. "200": {
  256. "description": "Direct link returned",
  257. "content": {
  258. "application/json": {
  259. "schema": {
  260. "type": "object",
  261. "required": [
  262. "ocs"
  263. ],
  264. "properties": {
  265. "ocs": {
  266. "type": "object",
  267. "required": [
  268. "meta",
  269. "data"
  270. ],
  271. "properties": {
  272. "meta": {
  273. "$ref": "#/components/schemas/OCSMeta"
  274. },
  275. "data": {
  276. "type": "object",
  277. "required": [
  278. "url"
  279. ],
  280. "properties": {
  281. "url": {
  282. "type": "string"
  283. }
  284. }
  285. }
  286. }
  287. }
  288. }
  289. }
  290. }
  291. }
  292. },
  293. "404": {
  294. "description": "File not found",
  295. "content": {
  296. "application/json": {
  297. "schema": {
  298. "type": "object",
  299. "required": [
  300. "ocs"
  301. ],
  302. "properties": {
  303. "ocs": {
  304. "type": "object",
  305. "required": [
  306. "meta",
  307. "data"
  308. ],
  309. "properties": {
  310. "meta": {
  311. "$ref": "#/components/schemas/OCSMeta"
  312. },
  313. "data": {}
  314. }
  315. }
  316. }
  317. }
  318. }
  319. }
  320. },
  321. "400": {
  322. "description": "Getting direct link is not possible",
  323. "content": {
  324. "application/json": {
  325. "schema": {
  326. "type": "object",
  327. "required": [
  328. "ocs"
  329. ],
  330. "properties": {
  331. "ocs": {
  332. "type": "object",
  333. "required": [
  334. "meta",
  335. "data"
  336. ],
  337. "properties": {
  338. "meta": {
  339. "$ref": "#/components/schemas/OCSMeta"
  340. },
  341. "data": {}
  342. }
  343. }
  344. }
  345. }
  346. }
  347. }
  348. },
  349. "403": {
  350. "description": "Missing permissions to get direct link",
  351. "content": {
  352. "application/json": {
  353. "schema": {
  354. "type": "object",
  355. "required": [
  356. "ocs"
  357. ],
  358. "properties": {
  359. "ocs": {
  360. "type": "object",
  361. "required": [
  362. "meta",
  363. "data"
  364. ],
  365. "properties": {
  366. "meta": {
  367. "$ref": "#/components/schemas/OCSMeta"
  368. },
  369. "data": {}
  370. }
  371. }
  372. }
  373. }
  374. }
  375. }
  376. },
  377. "401": {
  378. "description": "Current user is not logged in",
  379. "content": {
  380. "application/json": {
  381. "schema": {
  382. "type": "object",
  383. "required": [
  384. "ocs"
  385. ],
  386. "properties": {
  387. "ocs": {
  388. "type": "object",
  389. "required": [
  390. "meta",
  391. "data"
  392. ],
  393. "properties": {
  394. "meta": {
  395. "$ref": "#/components/schemas/OCSMeta"
  396. },
  397. "data": {}
  398. }
  399. }
  400. }
  401. }
  402. }
  403. }
  404. }
  405. }
  406. }
  407. },
  408. "/ocs/v2.php/apps/dav/api/v1/events/upcoming": {
  409. "get": {
  410. "operationId": "upcoming_events-get-events",
  411. "summary": "Get information about upcoming events",
  412. "tags": [
  413. "upcoming_events"
  414. ],
  415. "security": [
  416. {
  417. "bearer_auth": []
  418. },
  419. {
  420. "basic_auth": []
  421. }
  422. ],
  423. "parameters": [
  424. {
  425. "name": "location",
  426. "in": "query",
  427. "description": "location/URL to filter by",
  428. "schema": {
  429. "type": "string",
  430. "nullable": true,
  431. "default": null
  432. }
  433. },
  434. {
  435. "name": "OCS-APIRequest",
  436. "in": "header",
  437. "description": "Required to be true for the API request to pass",
  438. "required": true,
  439. "schema": {
  440. "type": "boolean",
  441. "default": true
  442. }
  443. }
  444. ],
  445. "responses": {
  446. "200": {
  447. "description": "Upcoming events",
  448. "content": {
  449. "application/json": {
  450. "schema": {
  451. "type": "object",
  452. "required": [
  453. "ocs"
  454. ],
  455. "properties": {
  456. "ocs": {
  457. "type": "object",
  458. "required": [
  459. "meta",
  460. "data"
  461. ],
  462. "properties": {
  463. "meta": {
  464. "$ref": "#/components/schemas/OCSMeta"
  465. },
  466. "data": {
  467. "type": "object",
  468. "required": [
  469. "events"
  470. ],
  471. "properties": {
  472. "events": {
  473. "type": "array",
  474. "items": {
  475. "$ref": "#/components/schemas/UpcomingEvent"
  476. }
  477. }
  478. }
  479. }
  480. }
  481. }
  482. }
  483. }
  484. }
  485. }
  486. },
  487. "401": {
  488. "description": "When not authenticated",
  489. "content": {
  490. "application/json": {
  491. "schema": {
  492. "anyOf": [
  493. {
  494. "type": "object",
  495. "required": [
  496. "ocs"
  497. ],
  498. "properties": {
  499. "ocs": {
  500. "type": "object",
  501. "required": [
  502. "meta",
  503. "data"
  504. ],
  505. "properties": {
  506. "meta": {
  507. "$ref": "#/components/schemas/OCSMeta"
  508. },
  509. "data": {
  510. "nullable": true
  511. }
  512. }
  513. }
  514. }
  515. },
  516. {
  517. "type": "object",
  518. "required": [
  519. "ocs"
  520. ],
  521. "properties": {
  522. "ocs": {
  523. "type": "object",
  524. "required": [
  525. "meta",
  526. "data"
  527. ],
  528. "properties": {
  529. "meta": {
  530. "$ref": "#/components/schemas/OCSMeta"
  531. },
  532. "data": {}
  533. }
  534. }
  535. }
  536. }
  537. ]
  538. }
  539. }
  540. }
  541. }
  542. }
  543. }
  544. },
  545. "/ocs/v2.php/apps/dav/api/v1/outOfOffice/{userId}/now": {
  546. "get": {
  547. "operationId": "out_of_office-get-current-out-of-office-data",
  548. "summary": "Get the currently configured out-of-office data of a user",
  549. "tags": [
  550. "out_of_office"
  551. ],
  552. "security": [
  553. {
  554. "bearer_auth": []
  555. },
  556. {
  557. "basic_auth": []
  558. }
  559. ],
  560. "parameters": [
  561. {
  562. "name": "userId",
  563. "in": "path",
  564. "description": "The user id to get out-of-office data for.",
  565. "required": true,
  566. "schema": {
  567. "type": "string"
  568. }
  569. },
  570. {
  571. "name": "OCS-APIRequest",
  572. "in": "header",
  573. "description": "Required to be true for the API request to pass",
  574. "required": true,
  575. "schema": {
  576. "type": "boolean",
  577. "default": true
  578. }
  579. }
  580. ],
  581. "responses": {
  582. "200": {
  583. "description": "Out-of-office data",
  584. "content": {
  585. "application/json": {
  586. "schema": {
  587. "type": "object",
  588. "required": [
  589. "ocs"
  590. ],
  591. "properties": {
  592. "ocs": {
  593. "type": "object",
  594. "required": [
  595. "meta",
  596. "data"
  597. ],
  598. "properties": {
  599. "meta": {
  600. "$ref": "#/components/schemas/OCSMeta"
  601. },
  602. "data": {
  603. "$ref": "#/components/schemas/CurrentOutOfOfficeData"
  604. }
  605. }
  606. }
  607. }
  608. }
  609. }
  610. }
  611. },
  612. "404": {
  613. "description": "No out-of-office data was found",
  614. "content": {
  615. "application/json": {
  616. "schema": {
  617. "type": "object",
  618. "required": [
  619. "ocs"
  620. ],
  621. "properties": {
  622. "ocs": {
  623. "type": "object",
  624. "required": [
  625. "meta",
  626. "data"
  627. ],
  628. "properties": {
  629. "meta": {
  630. "$ref": "#/components/schemas/OCSMeta"
  631. },
  632. "data": {
  633. "nullable": true
  634. }
  635. }
  636. }
  637. }
  638. }
  639. }
  640. }
  641. },
  642. "401": {
  643. "description": "Current user is not logged in",
  644. "content": {
  645. "application/json": {
  646. "schema": {
  647. "type": "object",
  648. "required": [
  649. "ocs"
  650. ],
  651. "properties": {
  652. "ocs": {
  653. "type": "object",
  654. "required": [
  655. "meta",
  656. "data"
  657. ],
  658. "properties": {
  659. "meta": {
  660. "$ref": "#/components/schemas/OCSMeta"
  661. },
  662. "data": {}
  663. }
  664. }
  665. }
  666. }
  667. }
  668. }
  669. }
  670. }
  671. }
  672. },
  673. "/ocs/v2.php/apps/dav/api/v1/outOfOffice/{userId}": {
  674. "get": {
  675. "operationId": "out_of_office-get-out-of-office",
  676. "summary": "Get the configured out-of-office data of a user.",
  677. "tags": [
  678. "out_of_office"
  679. ],
  680. "security": [
  681. {
  682. "bearer_auth": []
  683. },
  684. {
  685. "basic_auth": []
  686. }
  687. ],
  688. "parameters": [
  689. {
  690. "name": "userId",
  691. "in": "path",
  692. "description": "The user id to get out-of-office data for.",
  693. "required": true,
  694. "schema": {
  695. "type": "string"
  696. }
  697. },
  698. {
  699. "name": "OCS-APIRequest",
  700. "in": "header",
  701. "description": "Required to be true for the API request to pass",
  702. "required": true,
  703. "schema": {
  704. "type": "boolean",
  705. "default": true
  706. }
  707. }
  708. ],
  709. "responses": {
  710. "200": {
  711. "description": "Out-of-office data",
  712. "content": {
  713. "application/json": {
  714. "schema": {
  715. "type": "object",
  716. "required": [
  717. "ocs"
  718. ],
  719. "properties": {
  720. "ocs": {
  721. "type": "object",
  722. "required": [
  723. "meta",
  724. "data"
  725. ],
  726. "properties": {
  727. "meta": {
  728. "$ref": "#/components/schemas/OCSMeta"
  729. },
  730. "data": {
  731. "$ref": "#/components/schemas/OutOfOfficeData"
  732. }
  733. }
  734. }
  735. }
  736. }
  737. }
  738. }
  739. },
  740. "404": {
  741. "description": "No out-of-office data was found",
  742. "content": {
  743. "application/json": {
  744. "schema": {
  745. "type": "object",
  746. "required": [
  747. "ocs"
  748. ],
  749. "properties": {
  750. "ocs": {
  751. "type": "object",
  752. "required": [
  753. "meta",
  754. "data"
  755. ],
  756. "properties": {
  757. "meta": {
  758. "$ref": "#/components/schemas/OCSMeta"
  759. },
  760. "data": {
  761. "nullable": true
  762. }
  763. }
  764. }
  765. }
  766. }
  767. }
  768. }
  769. },
  770. "401": {
  771. "description": "Current user is not logged in",
  772. "content": {
  773. "application/json": {
  774. "schema": {
  775. "type": "object",
  776. "required": [
  777. "ocs"
  778. ],
  779. "properties": {
  780. "ocs": {
  781. "type": "object",
  782. "required": [
  783. "meta",
  784. "data"
  785. ],
  786. "properties": {
  787. "meta": {
  788. "$ref": "#/components/schemas/OCSMeta"
  789. },
  790. "data": {}
  791. }
  792. }
  793. }
  794. }
  795. }
  796. }
  797. }
  798. }
  799. },
  800. "post": {
  801. "operationId": "out_of_office-set-out-of-office",
  802. "summary": "Set out-of-office absence",
  803. "tags": [
  804. "out_of_office"
  805. ],
  806. "security": [
  807. {
  808. "bearer_auth": []
  809. },
  810. {
  811. "basic_auth": []
  812. }
  813. ],
  814. "requestBody": {
  815. "required": true,
  816. "content": {
  817. "application/json": {
  818. "schema": {
  819. "type": "object",
  820. "required": [
  821. "firstDay",
  822. "lastDay",
  823. "status",
  824. "message"
  825. ],
  826. "properties": {
  827. "firstDay": {
  828. "type": "string",
  829. "description": "First day of the absence in format `YYYY-MM-DD`"
  830. },
  831. "lastDay": {
  832. "type": "string",
  833. "description": "Last day of the absence in format `YYYY-MM-DD`"
  834. },
  835. "status": {
  836. "type": "string",
  837. "description": "Short text that is set as user status during the absence"
  838. },
  839. "message": {
  840. "type": "string",
  841. "description": "Longer multiline message that is shown to others during the absence"
  842. },
  843. "replacementUserId": {
  844. "type": "string",
  845. "nullable": true,
  846. "description": "User id of the replacement user"
  847. }
  848. }
  849. }
  850. }
  851. }
  852. },
  853. "parameters": [
  854. {
  855. "name": "userId",
  856. "in": "path",
  857. "required": true,
  858. "schema": {
  859. "type": "string"
  860. }
  861. },
  862. {
  863. "name": "OCS-APIRequest",
  864. "in": "header",
  865. "description": "Required to be true for the API request to pass",
  866. "required": true,
  867. "schema": {
  868. "type": "boolean",
  869. "default": true
  870. }
  871. }
  872. ],
  873. "responses": {
  874. "200": {
  875. "description": "Absence data",
  876. "content": {
  877. "application/json": {
  878. "schema": {
  879. "type": "object",
  880. "required": [
  881. "ocs"
  882. ],
  883. "properties": {
  884. "ocs": {
  885. "type": "object",
  886. "required": [
  887. "meta",
  888. "data"
  889. ],
  890. "properties": {
  891. "meta": {
  892. "$ref": "#/components/schemas/OCSMeta"
  893. },
  894. "data": {
  895. "$ref": "#/components/schemas/OutOfOfficeData"
  896. }
  897. }
  898. }
  899. }
  900. }
  901. }
  902. }
  903. },
  904. "400": {
  905. "description": "When validation fails, e.g. data range error or the first day is not before the last day",
  906. "content": {
  907. "application/json": {
  908. "schema": {
  909. "type": "object",
  910. "required": [
  911. "ocs"
  912. ],
  913. "properties": {
  914. "ocs": {
  915. "type": "object",
  916. "required": [
  917. "meta",
  918. "data"
  919. ],
  920. "properties": {
  921. "meta": {
  922. "$ref": "#/components/schemas/OCSMeta"
  923. },
  924. "data": {
  925. "type": "object",
  926. "required": [
  927. "error"
  928. ],
  929. "properties": {
  930. "error": {
  931. "type": "string",
  932. "enum": [
  933. "firstDay",
  934. "statusLength"
  935. ]
  936. }
  937. }
  938. }
  939. }
  940. }
  941. }
  942. }
  943. }
  944. }
  945. },
  946. "401": {
  947. "description": "When the user is not logged in",
  948. "content": {
  949. "application/json": {
  950. "schema": {
  951. "anyOf": [
  952. {
  953. "type": "object",
  954. "required": [
  955. "ocs"
  956. ],
  957. "properties": {
  958. "ocs": {
  959. "type": "object",
  960. "required": [
  961. "meta",
  962. "data"
  963. ],
  964. "properties": {
  965. "meta": {
  966. "$ref": "#/components/schemas/OCSMeta"
  967. },
  968. "data": {
  969. "nullable": true
  970. }
  971. }
  972. }
  973. }
  974. },
  975. {
  976. "type": "object",
  977. "required": [
  978. "ocs"
  979. ],
  980. "properties": {
  981. "ocs": {
  982. "type": "object",
  983. "required": [
  984. "meta",
  985. "data"
  986. ],
  987. "properties": {
  988. "meta": {
  989. "$ref": "#/components/schemas/OCSMeta"
  990. },
  991. "data": {}
  992. }
  993. }
  994. }
  995. }
  996. ]
  997. }
  998. }
  999. }
  1000. },
  1001. "404": {
  1002. "description": "When the replacementUserId was provided but replacement user was not found",
  1003. "content": {
  1004. "application/json": {
  1005. "schema": {
  1006. "type": "object",
  1007. "required": [
  1008. "ocs"
  1009. ],
  1010. "properties": {
  1011. "ocs": {
  1012. "type": "object",
  1013. "required": [
  1014. "meta",
  1015. "data"
  1016. ],
  1017. "properties": {
  1018. "meta": {
  1019. "$ref": "#/components/schemas/OCSMeta"
  1020. },
  1021. "data": {
  1022. "nullable": true
  1023. }
  1024. }
  1025. }
  1026. }
  1027. }
  1028. }
  1029. }
  1030. }
  1031. }
  1032. },
  1033. "delete": {
  1034. "operationId": "out_of_office-clear-out-of-office",
  1035. "summary": "Clear the out-of-office",
  1036. "tags": [
  1037. "out_of_office"
  1038. ],
  1039. "security": [
  1040. {
  1041. "bearer_auth": []
  1042. },
  1043. {
  1044. "basic_auth": []
  1045. }
  1046. ],
  1047. "parameters": [
  1048. {
  1049. "name": "userId",
  1050. "in": "path",
  1051. "required": true,
  1052. "schema": {
  1053. "type": "string"
  1054. }
  1055. },
  1056. {
  1057. "name": "OCS-APIRequest",
  1058. "in": "header",
  1059. "description": "Required to be true for the API request to pass",
  1060. "required": true,
  1061. "schema": {
  1062. "type": "boolean",
  1063. "default": true
  1064. }
  1065. }
  1066. ],
  1067. "responses": {
  1068. "200": {
  1069. "description": "When the absence was cleared successfully",
  1070. "content": {
  1071. "application/json": {
  1072. "schema": {
  1073. "type": "object",
  1074. "required": [
  1075. "ocs"
  1076. ],
  1077. "properties": {
  1078. "ocs": {
  1079. "type": "object",
  1080. "required": [
  1081. "meta",
  1082. "data"
  1083. ],
  1084. "properties": {
  1085. "meta": {
  1086. "$ref": "#/components/schemas/OCSMeta"
  1087. },
  1088. "data": {
  1089. "nullable": true
  1090. }
  1091. }
  1092. }
  1093. }
  1094. }
  1095. }
  1096. }
  1097. },
  1098. "401": {
  1099. "description": "When the user is not logged in",
  1100. "content": {
  1101. "application/json": {
  1102. "schema": {
  1103. "anyOf": [
  1104. {
  1105. "type": "object",
  1106. "required": [
  1107. "ocs"
  1108. ],
  1109. "properties": {
  1110. "ocs": {
  1111. "type": "object",
  1112. "required": [
  1113. "meta",
  1114. "data"
  1115. ],
  1116. "properties": {
  1117. "meta": {
  1118. "$ref": "#/components/schemas/OCSMeta"
  1119. },
  1120. "data": {
  1121. "nullable": true
  1122. }
  1123. }
  1124. }
  1125. }
  1126. },
  1127. {
  1128. "type": "object",
  1129. "required": [
  1130. "ocs"
  1131. ],
  1132. "properties": {
  1133. "ocs": {
  1134. "type": "object",
  1135. "required": [
  1136. "meta",
  1137. "data"
  1138. ],
  1139. "properties": {
  1140. "meta": {
  1141. "$ref": "#/components/schemas/OCSMeta"
  1142. },
  1143. "data": {}
  1144. }
  1145. }
  1146. }
  1147. }
  1148. ]
  1149. }
  1150. }
  1151. }
  1152. }
  1153. }
  1154. }
  1155. }
  1156. },
  1157. "tags": []
  1158. }