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.

692 lines
15 KiB

9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
  4. *
  5. * @author Lukas Reschke <lukas@statuscode.ch>
  6. *
  7. * @license GNU AGPL version 3 or any later version
  8. *
  9. * This program is free software: you can redistribute it and/or modify
  10. * it under the terms of the GNU Affero General Public License as
  11. * published by the Free Software Foundation, either version 3 of the
  12. * License, or (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU Affero General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Affero General Public License
  20. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  21. *
  22. */
  23. return [
  24. 'routes' => [
  25. [
  26. 'name' => 'Page#index',
  27. 'url' => '/',
  28. 'verb' => 'GET',
  29. ],
  30. [
  31. 'name' => 'Page#notFound',
  32. 'url' => '/not-found',
  33. 'verb' => 'GET',
  34. ],
  35. [
  36. 'name' => 'Page#duplicateSession',
  37. 'url' => '/duplicate-session',
  38. 'verb' => 'GET',
  39. ],
  40. [
  41. 'name' => 'Page#showCall',
  42. 'url' => '/call/{token}',
  43. 'verb' => 'GET',
  44. 'root' => '',
  45. ],
  46. [
  47. 'name' => 'Page#authenticatePassword',
  48. 'url' => '/call/{token}',
  49. 'verb' => 'POST',
  50. 'root' => '',
  51. ],
  52. ],
  53. 'ocs' => [
  54. /**
  55. * Signaling
  56. */
  57. [
  58. 'name' => 'Signaling#getSettings',
  59. 'url' => '/api/{apiVersion}/signaling/settings',
  60. 'verb' => 'GET',
  61. 'requirements' => [
  62. 'apiVersion' => 'v(3)',
  63. ],
  64. ],
  65. [
  66. 'name' => 'Signaling#getWelcomeMessage',
  67. 'url' => '/api/{apiVersion}/signaling/welcome/{serverId}',
  68. 'verb' => 'GET',
  69. 'requirements' => [
  70. 'apiVersion' => 'v(3)',
  71. 'serverId' => '^\d+$',
  72. ],
  73. ],
  74. [
  75. 'name' => 'Signaling#backend',
  76. 'url' => '/api/{apiVersion}/signaling/backend',
  77. 'verb' => 'POST',
  78. 'requirements' => [
  79. 'apiVersion' => 'v(3)',
  80. ],
  81. ],
  82. [
  83. 'name' => 'Signaling#signaling',
  84. 'url' => '/api/{apiVersion}/signaling/{token}',
  85. 'verb' => 'POST',
  86. 'requirements' => [
  87. 'apiVersion' => 'v(3)',
  88. 'token' => '^[a-z0-9]{4,30}$',
  89. ],
  90. ],
  91. [
  92. 'name' => 'Signaling#pullMessages',
  93. 'url' => '/api/{apiVersion}/signaling/{token}',
  94. 'verb' => 'GET',
  95. 'requirements' => [
  96. 'apiVersion' => 'v(3)',
  97. 'token' => '^[a-z0-9]{4,30}$',
  98. ],
  99. ],
  100. /**
  101. * Call
  102. */
  103. [
  104. 'name' => 'Call#getPeersForCall',
  105. 'url' => '/api/{apiVersion}/call/{token}',
  106. 'verb' => 'GET',
  107. 'requirements' => [
  108. 'apiVersion' => 'v(4)',
  109. 'token' => '^[a-z0-9]{4,30}$',
  110. ],
  111. ],
  112. [
  113. 'name' => 'Call#joinCall',
  114. 'url' => '/api/{apiVersion}/call/{token}',
  115. 'verb' => 'POST',
  116. 'requirements' => [
  117. 'apiVersion' => 'v(4)',
  118. 'token' => '^[a-z0-9]{4,30}$',
  119. ],
  120. ],
  121. [
  122. 'name' => 'Call#updateCallFlags',
  123. 'url' => '/api/{apiVersion}/call/{token}',
  124. 'verb' => 'PUT',
  125. 'requirements' => [
  126. 'apiVersion' => 'v(4)',
  127. 'token' => '^[a-z0-9]{4,30}$',
  128. ],
  129. ],
  130. [
  131. 'name' => 'Call#leaveCall',
  132. 'url' => '/api/{apiVersion}/call/{token}',
  133. 'verb' => 'DELETE',
  134. 'requirements' => [
  135. 'apiVersion' => 'v(4)',
  136. 'token' => '^[a-z0-9]{4,30}$',
  137. ],
  138. ],
  139. /**
  140. * Chat
  141. */
  142. [
  143. 'name' => 'Chat#receiveMessages',
  144. 'url' => '/api/{apiVersion}/chat/{token}',
  145. 'verb' => 'GET',
  146. 'requirements' => [
  147. 'apiVersion' => 'v1',
  148. 'token' => '^[a-z0-9]{4,30}$',
  149. ],
  150. ],
  151. [
  152. 'name' => 'Chat#sendMessage',
  153. 'url' => '/api/{apiVersion}/chat/{token}',
  154. 'verb' => 'POST',
  155. 'requirements' => [
  156. 'apiVersion' => 'v1',
  157. 'token' => '^[a-z0-9]{4,30}$',
  158. ],
  159. ],
  160. [
  161. 'name' => 'Chat#clearHistory',
  162. 'url' => '/api/{apiVersion}/chat/{token}',
  163. 'verb' => 'DELETE',
  164. 'requirements' => [
  165. 'apiVersion' => 'v1',
  166. 'token' => '^[a-z0-9]{4,30}$',
  167. ],
  168. ],
  169. [
  170. 'name' => 'Chat#deleteMessage',
  171. 'url' => '/api/{apiVersion}/chat/{token}/{messageId}',
  172. 'verb' => 'DELETE',
  173. 'requirements' => [
  174. 'apiVersion' => 'v1',
  175. 'token' => '^[a-z0-9]{4,30}$',
  176. 'messageId' => '^[0-9]+$',
  177. ],
  178. ],
  179. [
  180. 'name' => 'Chat#setReadMarker',
  181. 'url' => '/api/{apiVersion}/chat/{token}/read',
  182. 'verb' => 'POST',
  183. 'requirements' => [
  184. 'apiVersion' => 'v1',
  185. 'token' => '^[a-z0-9]{4,30}$',
  186. ],
  187. ],
  188. [
  189. 'name' => 'Chat#mentions',
  190. 'url' => '/api/{apiVersion}/chat/{token}/mentions',
  191. 'verb' => 'GET',
  192. 'requirements' => [
  193. 'apiVersion' => 'v1',
  194. 'token' => '^[a-z0-9]{4,30}$',
  195. ],
  196. ],
  197. [
  198. 'name' => 'Chat#shareObjectToChat',
  199. 'url' => '/api/{apiVersion}/chat/{token}/share',
  200. 'verb' => 'POST',
  201. 'requirements' => [
  202. 'apiVersion' => 'v1',
  203. 'token' => '^[a-z0-9]{4,30}$',
  204. ],
  205. ],
  206. /**
  207. * Conversation (Room)
  208. */
  209. [
  210. 'name' => 'Room#getRooms',
  211. 'url' => '/api/{apiVersion}/room',
  212. 'verb' => 'GET',
  213. 'requirements' => [
  214. 'apiVersion' => 'v(4)',
  215. ],
  216. ],
  217. [
  218. 'name' => 'Room#getListedRooms',
  219. 'url' => '/api/{apiVersion}/listed-room',
  220. 'verb' => 'GET',
  221. 'requirements' => [
  222. 'apiVersion' => 'v(4)',
  223. ],
  224. ],
  225. [
  226. 'name' => 'Room#createRoom',
  227. 'url' => '/api/{apiVersion}/room',
  228. 'verb' => 'POST',
  229. 'requirements' => [
  230. 'apiVersion' => 'v(4)',
  231. ],
  232. ],
  233. [
  234. 'name' => 'Room#getSingleRoom',
  235. 'url' => '/api/{apiVersion}/room/{token}',
  236. 'verb' => 'GET',
  237. 'requirements' => [
  238. 'apiVersion' => 'v(4)',
  239. 'token' => '^[a-z0-9]{4,30}$',
  240. ],
  241. ],
  242. [
  243. 'name' => 'Room#renameRoom',
  244. 'url' => '/api/{apiVersion}/room/{token}',
  245. 'verb' => 'PUT',
  246. 'requirements' => [
  247. 'apiVersion' => 'v(4)',
  248. 'token' => '^[a-z0-9]{4,30}$',
  249. ],
  250. ],
  251. [
  252. 'name' => 'Room#deleteRoom',
  253. 'url' => '/api/{apiVersion}/room/{token}',
  254. 'verb' => 'DELETE',
  255. 'requirements' => [
  256. 'apiVersion' => 'v(4)',
  257. 'token' => '^[a-z0-9]{4,30}$',
  258. ],
  259. ],
  260. [
  261. 'name' => 'Room#makePublic',
  262. 'url' => '/api/{apiVersion}/room/{token}/public',
  263. 'verb' => 'POST',
  264. 'requirements' => [
  265. 'apiVersion' => 'v(4)',
  266. 'token' => '^[a-z0-9]{4,30}$',
  267. ],
  268. ],
  269. [
  270. 'name' => 'Room#makePrivate',
  271. 'url' => '/api/{apiVersion}/room/{token}/public',
  272. 'verb' => 'DELETE',
  273. 'requirements' => [
  274. 'apiVersion' => 'v(4)',
  275. 'token' => '^[a-z0-9]{4,30}$',
  276. ],
  277. ],
  278. [
  279. 'name' => 'Room#setDescription',
  280. 'url' => '/api/{apiVersion}/room/{token}/description',
  281. 'verb' => 'PUT',
  282. 'requirements' => [
  283. 'apiVersion' => 'v(4)',
  284. 'token' => '^[a-z0-9]{4,30}$',
  285. ],
  286. ],
  287. [
  288. 'name' => 'Room#setReadOnly',
  289. 'url' => '/api/{apiVersion}/room/{token}/read-only',
  290. 'verb' => 'PUT',
  291. 'requirements' => [
  292. 'apiVersion' => 'v(4)',
  293. 'token' => '^[a-z0-9]{4,30}$',
  294. ],
  295. ],
  296. [
  297. 'name' => 'Room#setListable',
  298. 'url' => '/api/{apiVersion}/room/{token}/listable',
  299. 'verb' => 'PUT',
  300. 'requirements' => [
  301. 'apiVersion' => 'v(4)',
  302. 'token' => '^[a-z0-9]{4,30}$',
  303. ],
  304. ],
  305. [
  306. 'name' => 'Room#setPassword',
  307. 'url' => '/api/{apiVersion}/room/{token}/password',
  308. 'verb' => 'PUT',
  309. 'requirements' => [
  310. 'apiVersion' => 'v(4)',
  311. 'token' => '^[a-z0-9]{4,30}$',
  312. ],
  313. ],
  314. [
  315. 'name' => 'Room#setPermissions',
  316. 'url' => '/api/{apiVersion}/room/{token}/permissions/{mode}',
  317. 'verb' => 'PUT',
  318. 'requirements' => [
  319. 'apiVersion' => 'v(4)',
  320. 'token' => '^[a-z0-9]{4,30}$',
  321. 'mode' => '^(call|default)$',
  322. ],
  323. ],
  324. [
  325. 'name' => 'Room#getParticipants',
  326. 'url' => '/api/{apiVersion}/room/{token}/participants',
  327. 'verb' => 'GET',
  328. 'requirements' => [
  329. 'apiVersion' => 'v(4)',
  330. 'token' => '^[a-z0-9]{4,30}$',
  331. ],
  332. ],
  333. [
  334. 'name' => 'Room#addParticipantToRoom',
  335. 'url' => '/api/{apiVersion}/room/{token}/participants',
  336. 'verb' => 'POST',
  337. 'requirements' => [
  338. 'apiVersion' => 'v(4)',
  339. 'token' => '^[a-z0-9]{4,30}$',
  340. ],
  341. ],
  342. [
  343. 'name' => 'Room#removeSelfFromRoom',
  344. 'url' => '/api/{apiVersion}/room/{token}/participants/self',
  345. 'verb' => 'DELETE',
  346. 'requirements' => [
  347. 'apiVersion' => 'v(4)',
  348. 'token' => '^[a-z0-9]{4,30}$',
  349. ],
  350. ],
  351. [
  352. 'name' => 'Room#removeAttendeeFromRoom',
  353. 'url' => '/api/{apiVersion}/room/{token}/attendees',
  354. 'verb' => 'DELETE',
  355. 'requirements' => [
  356. 'apiVersion' => 'v(4)',
  357. 'token' => '^[a-z0-9]{4,30}$',
  358. ],
  359. ],
  360. [
  361. 'name' => 'Room#setAttendeePermissions',
  362. 'url' => '/api/{apiVersion}/room/{token}/attendees/permissions',
  363. 'verb' => 'PUT',
  364. 'requirements' => [
  365. 'apiVersion' => 'v(4)',
  366. 'token' => '^[a-z0-9]{4,30}$',
  367. ],
  368. ],
  369. [
  370. 'name' => 'Room#setAllAttendeesPermissions',
  371. 'url' => '/api/{apiVersion}/room/{token}/attendees/permissions/all',
  372. 'verb' => 'PUT',
  373. 'requirements' => [
  374. 'apiVersion' => 'v(4)',
  375. 'token' => '^[a-z0-9]{4,30}$',
  376. ],
  377. ],
  378. [
  379. 'name' => 'Room#joinRoom',
  380. 'url' => '/api/{apiVersion}/room/{token}/participants/active',
  381. 'verb' => 'POST',
  382. 'requirements' => [
  383. 'apiVersion' => 'v(4)',
  384. 'token' => '^[a-z0-9]{4,30}$',
  385. ],
  386. ],
  387. [
  388. 'name' => 'Room#resendInvitations',
  389. 'url' => '/api/{apiVersion}/room/{token}/participants/resend-invitations',
  390. 'verb' => 'POST',
  391. 'requirements' => [
  392. 'apiVersion' => 'v(4)',
  393. 'token' => '^[a-z0-9]{4,30}$',
  394. ],
  395. ],
  396. [
  397. 'name' => 'Room#leaveRoom',
  398. 'url' => '/api/{apiVersion}/room/{token}/participants/active',
  399. 'verb' => 'DELETE',
  400. 'requirements' => [
  401. 'apiVersion' => 'v(4)',
  402. 'token' => '^[a-z0-9]{4,30}$',
  403. ],
  404. ],
  405. [
  406. 'name' => 'Room#promoteModerator',
  407. 'url' => '/api/{apiVersion}/room/{token}/moderators',
  408. 'verb' => 'POST',
  409. 'requirements' => [
  410. 'apiVersion' => 'v(4)',
  411. 'token' => '^[a-z0-9]{4,30}$',
  412. ],
  413. ],
  414. [
  415. 'name' => 'Room#demoteModerator',
  416. 'url' => '/api/{apiVersion}/room/{token}/moderators',
  417. 'verb' => 'DELETE',
  418. 'requirements' => [
  419. 'apiVersion' => 'v(4)',
  420. 'token' => '^[a-z0-9]{4,30}$',
  421. ],
  422. ],
  423. [
  424. 'name' => 'Room#addToFavorites',
  425. 'url' => '/api/{apiVersion}/room/{token}/favorite',
  426. 'verb' => 'POST',
  427. 'requirements' => [
  428. 'apiVersion' => 'v(4)',
  429. 'token' => '^[a-z0-9]{4,30}$',
  430. ],
  431. ],
  432. [
  433. 'name' => 'Room#removeFromFavorites',
  434. 'url' => '/api/{apiVersion}/room/{token}/favorite',
  435. 'verb' => 'DELETE',
  436. 'requirements' => [
  437. 'apiVersion' => 'v(4)',
  438. 'token' => '^[a-z0-9]{4,30}$',
  439. ],
  440. ],
  441. [
  442. 'name' => 'Room#getParticipantByDialInPin',
  443. 'url' => '/api/{apiVersion}/room/{token}/pin/{pin}',
  444. 'verb' => 'GET',
  445. 'requirements' => [
  446. 'apiVersion' => 'v(4)',
  447. 'token' => '^[a-z0-9]{4,30}$',
  448. 'pin' => '^\d{7,32}$',
  449. ],
  450. ],
  451. [
  452. 'name' => 'Room#setNotificationLevel',
  453. 'url' => '/api/{apiVersion}/room/{token}/notify',
  454. 'verb' => 'POST',
  455. 'requirements' => [
  456. 'apiVersion' => 'v(4)',
  457. 'token' => '^[a-z0-9]{4,30}$',
  458. ],
  459. ],
  460. [
  461. 'name' => 'Room#setNotificationCalls',
  462. 'url' => '/api/{apiVersion}/room/{token}/notify-calls',
  463. 'verb' => 'POST',
  464. 'requirements' => [
  465. 'apiVersion' => 'v(4)',
  466. 'token' => '^[a-z0-9]{4,30}$',
  467. ],
  468. ],
  469. [
  470. 'name' => 'Room#setLobby',
  471. 'url' => '/api/{apiVersion}/room/{token}/webinar/lobby',
  472. 'verb' => 'PUT',
  473. 'requirements' => [
  474. 'apiVersion' => 'v(4)',
  475. 'token' => '^[a-z0-9]{4,30}$',
  476. ],
  477. ],
  478. [
  479. 'name' => 'Room#setSIPEnabled',
  480. 'url' => '/api/{apiVersion}/room/{token}/webinar/sip',
  481. 'verb' => 'PUT',
  482. 'requirements' => [
  483. 'apiVersion' => 'v(4)',
  484. 'token' => '^[a-z0-9]{4,30}$',
  485. ],
  486. ],
  487. /**
  488. * Bridge settings
  489. */
  490. [
  491. 'name' => 'MatterbridgeSettings#stopAllBridges',
  492. 'url' => '/api/{apiVersion}/bridge',
  493. 'verb' => 'DELETE',
  494. 'requirements' => [
  495. 'apiVersion' => 'v1',
  496. ],
  497. ],
  498. [
  499. 'name' => 'MatterbridgeSettings#getMatterbridgeVersion',
  500. 'url' => '/api/{apiVersion}/bridge/version',
  501. 'verb' => 'GET',
  502. 'requirements' => [
  503. 'apiVersion' => 'v1',
  504. ],
  505. ],
  506. /**
  507. * Bridges
  508. */
  509. [
  510. 'name' => 'Matterbridge#getBridgeOfRoom',
  511. 'url' => '/api/{apiVersion}/bridge/{token}',
  512. 'verb' => 'GET',
  513. 'requirements' => [
  514. 'apiVersion' => 'v1',
  515. 'token' => '^[a-z0-9]{4,30}$',
  516. ],
  517. ],
  518. [
  519. 'name' => 'Matterbridge#getBridgeProcessState',
  520. 'url' => '/api/{apiVersion}/bridge/{token}/process',
  521. 'verb' => 'GET',
  522. 'requirements' => [
  523. 'apiVersion' => 'v1',
  524. 'token' => '^[a-z0-9]{4,30}$',
  525. ],
  526. ],
  527. [
  528. 'name' => 'Matterbridge#editBridgeOfRoom',
  529. 'url' => '/api/{apiVersion}/bridge/{token}',
  530. 'verb' => 'PUT',
  531. 'requirements' => [
  532. 'apiVersion' => 'v1',
  533. 'token' => '^[a-z0-9]{4,30}$',
  534. ],
  535. ],
  536. [
  537. 'name' => 'Matterbridge#deleteBridgeOfRoom',
  538. 'url' => '/api/{apiVersion}/bridge/{token}',
  539. 'verb' => 'DELETE',
  540. 'requirements' => [
  541. 'apiVersion' => 'v1',
  542. 'token' => '^[a-z0-9]{4,30}$',
  543. ],
  544. ],
  545. /**
  546. * Federation
  547. */
  548. [
  549. 'name' => 'Federation#acceptShare',
  550. 'url' => 'api/{apiVersion}/federation/invitation/{id}',
  551. 'verb' => 'POST',
  552. 'requirements' => [
  553. 'apiVersion' => 'v1',
  554. ],
  555. ],
  556. [
  557. 'name' => 'Federation#rejectShare',
  558. 'url' => 'api/{apiVersion}/federation/invitation/{id}',
  559. 'verb' => 'DELETE',
  560. 'requirements' => [
  561. 'apiVersion' => 'v1',
  562. ],
  563. ],
  564. /**
  565. * PublicShareAuth
  566. */
  567. [
  568. 'name' => 'PublicShareAuth#createRoom',
  569. 'url' => '/api/{apiVersion}/publicshareauth',
  570. 'verb' => 'POST',
  571. 'requirements' => ['apiVersion' => 'v1'],
  572. ],
  573. /**
  574. * FilesIntegration
  575. */
  576. [
  577. 'name' => 'FilesIntegration#getRoomByFileId',
  578. 'url' => '/api/{apiVersion}/file/{fileId}',
  579. 'verb' => 'GET',
  580. 'requirements' => [
  581. 'apiVersion' => 'v1',
  582. 'fileId' => '.+'
  583. ],
  584. ],
  585. [
  586. 'name' => 'FilesIntegration#getRoomByShareToken',
  587. 'url' => '/api/{apiVersion}/publicshare/{shareToken}',
  588. 'verb' => 'GET',
  589. 'requirements' => [
  590. 'apiVersion' => 'v1',
  591. 'shareToken' => '.+',
  592. ],
  593. ],
  594. /**
  595. * Guest
  596. */
  597. [
  598. 'name' => 'Guest#setDisplayName',
  599. 'url' => '/api/{apiVersion}/guest/{token}/name',
  600. 'verb' => 'POST',
  601. 'requirements' => [
  602. 'apiVersion' => 'v1',
  603. 'token' => '^[a-z0-9]{4,30}$',
  604. ],
  605. ],
  606. /**
  607. * Commands
  608. */
  609. [
  610. 'name' => 'Command#index',
  611. 'url' => '/api/{apiVersion}/command',
  612. 'verb' => 'GET',
  613. 'requirements' => [
  614. 'apiVersion' => 'v1',
  615. ],
  616. ],
  617. /**
  618. * Settings
  619. */
  620. [
  621. 'name' => 'Settings#setSIPSettings',
  622. 'url' => '/api/{apiVersion}/settings/sip',
  623. 'verb' => 'POST',
  624. 'requirements' => [
  625. 'apiVersion' => 'v1',
  626. ],
  627. ],
  628. [
  629. 'name' => 'Settings#setUserSetting',
  630. 'url' => '/api/{apiVersion}/settings/user',
  631. 'verb' => 'POST',
  632. 'requirements' => [
  633. 'apiVersion' => 'v1',
  634. ],
  635. ],
  636. /**
  637. * HostedSignalingServer
  638. */
  639. [
  640. 'name' => 'HostedSignalingServer#requestTrial',
  641. 'url' => '/api/{apiVersion}/hostedsignalingserver/requesttrial',
  642. 'verb' => 'POST',
  643. 'requirements' => [
  644. 'apiVersion' => 'v1',
  645. ],
  646. ],
  647. [
  648. 'name' => 'HostedSignalingServer#auth',
  649. 'url' => '/api/{apiVersion}/hostedsignalingserver/auth',
  650. 'verb' => 'POST',
  651. 'requirements' => [
  652. 'apiVersion' => 'v1',
  653. ],
  654. ],
  655. [
  656. 'name' => 'HostedSignalingServer#deleteAccount',
  657. 'url' => '/api/{apiVersion}/hostedsignalingserver/delete',
  658. 'verb' => 'DELETE',
  659. 'requirements' => [
  660. 'apiVersion' => 'v1',
  661. ],
  662. ],
  663. [
  664. 'name' => 'TempAvatar#postAvatar',
  665. 'url' => '/temp-user-avatar',
  666. 'verb' => 'POST',
  667. ],
  668. [
  669. 'name' => 'TempAvatar#deleteAvatar',
  670. 'url' => '/temp-user-avatar',
  671. 'verb' => 'DELETE',
  672. ],
  673. ],
  674. ];