NcApi.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  1. /*
  2. * Nextcloud Talk - Android Client
  3. *
  4. * SPDX-FileCopyrightText: 2021 Marcel Hibbe <dev@mhibbe.de>
  5. * SPDX-FileCopyrightText: 2021 Tim Krüger <t@timkrueger.me>
  6. * SPDX-FileCopyrightText: 2017 Mario Danic <mario@lovelyhq.com>
  7. * SPDX-License-Identifier: GPL-3.0-or-later
  8. */
  9. package com.nextcloud.talk.api;
  10. import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall;
  11. import com.nextcloud.talk.models.json.capabilities.RoomCapabilitiesOverall;
  12. import com.nextcloud.talk.models.json.chat.ChatOverall;
  13. import com.nextcloud.talk.models.json.chat.ChatOverallSingleMessage;
  14. import com.nextcloud.talk.models.json.chat.ChatShareOverall;
  15. import com.nextcloud.talk.models.json.chat.ChatShareOverviewOverall;
  16. import com.nextcloud.talk.models.json.conversations.RoomOverall;
  17. import com.nextcloud.talk.models.json.conversations.RoomsOverall;
  18. import com.nextcloud.talk.models.json.generic.GenericOverall;
  19. import com.nextcloud.talk.models.json.generic.Status;
  20. import com.nextcloud.talk.models.json.hovercard.HoverCardOverall;
  21. import com.nextcloud.talk.models.json.invitation.InvitationOverall;
  22. import com.nextcloud.talk.models.json.mention.MentionOverall;
  23. import com.nextcloud.talk.models.json.notifications.NotificationOverall;
  24. import com.nextcloud.talk.models.json.opengraph.OpenGraphOverall;
  25. import com.nextcloud.talk.models.json.participants.AddParticipantOverall;
  26. import com.nextcloud.talk.models.json.participants.ParticipantsOverall;
  27. import com.nextcloud.talk.models.json.participants.TalkBan;
  28. import com.nextcloud.talk.models.json.participants.TalkBanOverall;
  29. import com.nextcloud.talk.models.json.push.PushRegistrationOverall;
  30. import com.nextcloud.talk.models.json.reactions.ReactionsOverall;
  31. import com.nextcloud.talk.models.json.reminder.ReminderOverall;
  32. import com.nextcloud.talk.models.json.search.ContactsByNumberOverall;
  33. import com.nextcloud.talk.models.json.signaling.SignalingOverall;
  34. import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall;
  35. import com.nextcloud.talk.models.json.status.StatusOverall;
  36. import com.nextcloud.talk.models.json.unifiedsearch.UnifiedSearchOverall;
  37. import com.nextcloud.talk.models.json.userprofile.UserProfileFieldsOverall;
  38. import com.nextcloud.talk.models.json.userprofile.UserProfileOverall;
  39. import com.nextcloud.talk.polls.repositories.model.PollOverall;
  40. import com.nextcloud.talk.translate.repositories.model.LanguagesOverall;
  41. import com.nextcloud.talk.translate.repositories.model.TranslationsOverall;
  42. import java.util.List;
  43. import java.util.Map;
  44. import androidx.annotation.Nullable;
  45. import io.reactivex.Observable;
  46. import kotlin.Unit;
  47. import okhttp3.MultipartBody;
  48. import okhttp3.RequestBody;
  49. import okhttp3.ResponseBody;
  50. import retrofit2.Call;
  51. import retrofit2.Response;
  52. import retrofit2.http.Body;
  53. import retrofit2.http.DELETE;
  54. import retrofit2.http.Field;
  55. import retrofit2.http.FieldMap;
  56. import retrofit2.http.FormUrlEncoded;
  57. import retrofit2.http.GET;
  58. import retrofit2.http.HEAD;
  59. import retrofit2.http.Header;
  60. import retrofit2.http.Multipart;
  61. import retrofit2.http.POST;
  62. import retrofit2.http.PUT;
  63. import retrofit2.http.Part;
  64. import retrofit2.http.Query;
  65. import retrofit2.http.QueryMap;
  66. import retrofit2.http.Url;
  67. public interface NcApi {
  68. /*
  69. QueryMap items are as follows:
  70. - "format" : "json"
  71. - "search" : ""
  72. - "perPage" : "200"
  73. - "itemType" : "call"
  74. Server URL is: baseUrl + ocsApiVersion + /apps/files_sharing/api/v1/sharees
  75. or if we're on 14 and up:
  76. baseUrl + ocsApiVersion + "/core/autocomplete/get");
  77. */
  78. @GET
  79. Observable<ResponseBody> getContactsWithSearchParam(@Header("Authorization") String authorization,
  80. @Url String url,
  81. @Nullable @Query("shareTypes[]") List<String> listOfShareTypes,
  82. @QueryMap Map<String, Object> options);
  83. /*
  84. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room
  85. */
  86. @GET
  87. Observable<RoomsOverall> getRooms(@Header("Authorization") String authorization,
  88. @Url String url,
  89. @Nullable @Query("includeStatus") Boolean includeStatus);
  90. /*
  91. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken
  92. */
  93. @GET
  94. Observable<RoomOverall> getRoom(@Header("Authorization") String authorization, @Url String url);
  95. /*
  96. QueryMap items are as follows:
  97. - "roomType" : ""
  98. - "invite" : ""
  99. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room
  100. */
  101. @POST
  102. Observable<RoomOverall> createRoom(@Header("Authorization") String authorization,
  103. @Url String url,
  104. @QueryMap Map<String, String> options);
  105. /*
  106. QueryMap items are as follows:
  107. - "roomName" : "newName"
  108. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken
  109. */
  110. @FormUrlEncoded
  111. @PUT
  112. Observable<GenericOverall> setConversationDescription(@Header("Authorization") String authorization,
  113. @Url String url,
  114. @Field("description") String description);
  115. /*
  116. QueryMap items are as follows:
  117. - "newParticipant" : "user"
  118. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/participants
  119. */
  120. @POST
  121. Observable<AddParticipantOverall> addParticipant(@Header("Authorization") String authorization,
  122. @Url String url,
  123. @QueryMap Map<String,
  124. String> options);
  125. @POST
  126. Observable<GenericOverall> resendParticipantInvitations(@Header("Authorization") String authorization,
  127. @Url String url);
  128. // also used for removing a guest from a conversation
  129. @Deprecated
  130. @DELETE
  131. Observable<GenericOverall> removeParticipantFromConversation(@Header("Authorization") String authorization,
  132. @Url String url,
  133. @Query("participant") String participantId);
  134. @DELETE
  135. Observable<GenericOverall> removeAttendeeFromConversation(@Header("Authorization") String authorization,
  136. @Url String url,
  137. @Query("attendeeId") Long attendeeId);
  138. @Deprecated
  139. @POST
  140. Observable<GenericOverall> promoteUserToModerator(@Header("Authorization") String authorization,
  141. @Url String url,
  142. @Query("participant") String participantId);
  143. @Deprecated
  144. @DELETE
  145. Observable<GenericOverall> demoteModeratorToUser(@Header("Authorization") String authorization,
  146. @Url String url,
  147. @Query("participant") String participantId);
  148. @POST
  149. Observable<GenericOverall> promoteAttendeeToModerator(@Header("Authorization") String authorization,
  150. @Url String url,
  151. @Query("attendeeId") Long attendeeId);
  152. @DELETE
  153. Observable<GenericOverall> demoteAttendeeFromModerator(@Header("Authorization") String authorization,
  154. @Url String url,
  155. @Query("attendeeId") Long attendeeId);
  156. /*
  157. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/participants/self
  158. */
  159. @DELETE
  160. Observable<GenericOverall> removeSelfFromRoom(@Header("Authorization") String authorization, @Url String url);
  161. @DELETE
  162. Observable<GenericOverall> deleteRoom(@Header("Authorization") String authorization, @Url String url);
  163. /*
  164. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /call/callToken
  165. */
  166. @GET
  167. Observable<ParticipantsOverall> getPeersForCall(@Header("Authorization") String authorization, @Url String url);
  168. @GET
  169. Observable<ParticipantsOverall> getPeersForCall(@Header("Authorization") String authorization,
  170. @Url String url,
  171. @QueryMap Map<String, Boolean> fields);
  172. @FormUrlEncoded
  173. @POST
  174. Observable<RoomOverall> joinRoom(@Nullable @Header("Authorization") String authorization,
  175. @Url String url,
  176. @Nullable @Field("password") String password);
  177. @DELETE
  178. Observable<GenericOverall> leaveRoom(@Nullable @Header("Authorization") String authorization, @Url String url);
  179. /*
  180. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /call/callToken
  181. */
  182. @FormUrlEncoded
  183. @POST
  184. Observable<GenericOverall> joinCall(@Nullable @Header("Authorization") String authorization,
  185. @Url String url,
  186. @Field("flags") Integer inCall,
  187. @Field("silent") Boolean callWithoutNotification,
  188. @Nullable @Field("recordingConsent") Boolean recordingConsent);
  189. /*
  190. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /call/callToken
  191. */
  192. @DELETE
  193. Observable<GenericOverall> leaveCall(@Nullable @Header("Authorization") String authorization, @Url String url,
  194. @Nullable @Query("all") Boolean all);
  195. @GET
  196. Observable<SignalingSettingsOverall> getSignalingSettings(@Nullable @Header("Authorization") String authorization,
  197. @Url String url);
  198. /*
  199. QueryMap items are as follows:
  200. - "messages" : "message"
  201. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /signaling
  202. */
  203. @FormUrlEncoded
  204. @POST
  205. Observable<SignalingOverall> sendSignalingMessages(@Nullable @Header("Authorization") String authorization,
  206. @Url String url,
  207. @Field("messages") String messages);
  208. /*
  209. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /signaling
  210. */
  211. @GET
  212. Observable<SignalingOverall> pullSignalingMessages(@Nullable @Header("Authorization") String authorization,
  213. @Url String url);
  214. /*
  215. QueryMap items are as follows:
  216. - "format" : "json"
  217. Server URL is: baseUrl + ocsApiVersion + "/cloud/user"
  218. */
  219. @GET
  220. Observable<UserProfileOverall> getUserProfile(@Header("Authorization") String authorization, @Url String url);
  221. @GET
  222. Observable<UserProfileOverall> getUserData(@Header("Authorization") String authorization, @Url String url);
  223. @DELETE
  224. Observable<GenericOverall> revertStatus(@Header("Authentication") String authorization, @Url String url);
  225. @FormUrlEncoded
  226. @PUT
  227. Observable<GenericOverall> setUserData(@Header("Authorization") String authorization,
  228. @Url String url,
  229. @Field("key") String key,
  230. @Field("value") String value);
  231. /*
  232. Server URL is: baseUrl + /status.php
  233. */
  234. @GET
  235. Observable<Status> getServerStatus(@Url String url);
  236. /*
  237. QueryMap items are as follows:
  238. - "format" : "json"
  239. - "pushTokenHash" : ""
  240. - "devicePublicKey" : ""
  241. - "proxyServer" : ""
  242. Server URL is: baseUrl + ocsApiVersion + "/apps/notifications/api/v2/push
  243. */
  244. @POST
  245. Observable<PushRegistrationOverall> registerDeviceForNotificationsWithNextcloud(
  246. @Header("Authorization") String authorization,
  247. @Url String url,
  248. @QueryMap Map<String, String> options);
  249. @DELETE
  250. Observable<GenericOverall> unregisterDeviceForNotificationsWithNextcloud(
  251. @Header("Authorization") String authorization,
  252. @Url String url);
  253. @FormUrlEncoded
  254. @POST
  255. Observable<Unit> registerDeviceForNotificationsWithPushProxy(@Url String url,
  256. @FieldMap Map<String, String> fields);
  257. /*
  258. QueryMap items are as follows:
  259. - "deviceIdentifier": "{{deviceIdentifier}}",
  260. - "deviceIdentifierSignature": "{{signature}}",
  261. - "userPublicKey": "{{userPublicKey}}"
  262. */
  263. @DELETE
  264. Observable<Void> unregisterDeviceForNotificationsWithProxy(@Url String url,
  265. @QueryMap Map<String, String> fields);
  266. @GET
  267. Observable<CapabilitiesOverall> getCapabilities(@Header("Authorization") String authorization, @Url String url);
  268. @GET
  269. Observable<CapabilitiesOverall> getCapabilities(@Url String url);
  270. @GET
  271. Observable<RoomCapabilitiesOverall> getRoomCapabilities(@Header("Authorization") String authorization,
  272. @Url String url);
  273. /*
  274. QueryMap items are as follows:
  275. - "lookIntoFuture": int (0 or 1),
  276. - "limit" : int, range 100-200,
  277. - "timeout": used with look into future, 30 default, 60 at most
  278. - "lastKnownMessageId", int, use one from X-Chat-Last-Given
  279. */
  280. @GET
  281. Observable<Response<ChatOverall>> pullChatMessages(@Header("Authorization") String authorization,
  282. @Url String url,
  283. @QueryMap Map<String, Integer> fields);
  284. /*
  285. Fieldmap items are as follows:
  286. - "message": ,
  287. - "actorDisplayName"
  288. */
  289. @FormUrlEncoded
  290. @POST
  291. Observable<GenericOverall> sendChatMessage(@Header("Authorization") String authorization,
  292. @Url String url,
  293. @Field("message") CharSequence message,
  294. @Field("actorDisplayName") String actorDisplayName,
  295. @Field("replyTo") Integer replyTo,
  296. @Field("silent") Boolean sendWithoutNotification);
  297. @FormUrlEncoded
  298. @PUT
  299. Observable<ChatOverallSingleMessage> editChatMessage(@Header("Authorization") String authorization,
  300. @Url String url,
  301. @Field("message") String message);
  302. @GET
  303. Observable<Response<ChatShareOverall>> getSharedItems(
  304. @Header("Authorization") String authorization,
  305. @Url String url,
  306. @Query("objectType") String objectType,
  307. @Nullable @Query("lastKnownMessageId") Integer lastKnownMessageId,
  308. @Nullable @Query("limit") Integer limit);
  309. @GET
  310. Observable<Response<ChatShareOverviewOverall>> getSharedItemsOverview(@Header("Authorization") String authorization,
  311. @Url String url,
  312. @Nullable @Query("limit") Integer limit);
  313. @GET
  314. Observable<MentionOverall> getMentionAutocompleteSuggestions(@Header("Authorization") String authorization,
  315. @Url String url,
  316. @Query("search") String query,
  317. @Nullable @Query("limit") Integer limit,
  318. @QueryMap Map<String, String> fields);
  319. // Url is: /api/{apiVersion}/room/{token}/pin
  320. @POST
  321. Observable<GenericOverall> addConversationToFavorites(@Header("Authorization") String authorization,
  322. @Url String url);
  323. // Url is: /api/{apiVersion}/room/{token}/favorites
  324. @DELETE
  325. Observable<GenericOverall> removeConversationFromFavorites(@Header("Authorization") String authorization,
  326. @Url String url);
  327. @GET
  328. Observable<NotificationOverall> getNcNotification(@Header("Authorization") String authorization,
  329. @Url String url);
  330. @FormUrlEncoded
  331. @POST
  332. Observable<GenericOverall> setNotificationLevel(@Header("Authorization") String authorization,
  333. @Url String url,
  334. @Field("level") int level);
  335. @FormUrlEncoded
  336. @PUT
  337. Observable<GenericOverall> setConversationReadOnly(@Header("Authorization") String authorization,
  338. @Url String url,
  339. @Field("state") int state);
  340. @FormUrlEncoded
  341. @POST
  342. Observable<GenericOverall> createRemoteShare(@Nullable @Header("Authorization") String authorization,
  343. @Url String url,
  344. @Field("path") String remotePath,
  345. @Field("shareWith") String roomToken,
  346. @Field("shareType") String shareType,
  347. @Field("talkMetaData") String talkMetaData);
  348. @FormUrlEncoded
  349. @PUT
  350. Observable<GenericOverall> setLobbyForConversation(@Header("Authorization") String authorization,
  351. @Url String url,
  352. @Field("state") Integer state,
  353. @Field("timer") Long timer);
  354. @POST
  355. Observable<ContactsByNumberOverall> searchContactsByPhoneNumber(@Header("Authorization") String authorization,
  356. @Url String url,
  357. @Body RequestBody search);
  358. @PUT
  359. Observable<Response<GenericOverall>> uploadFile(@Header("Authorization") String authorization,
  360. @Url String url,
  361. @Body RequestBody body);
  362. @HEAD
  363. Observable<Response<Void>> checkIfFileExists(@Header("Authorization") String authorization,
  364. @Url String url);
  365. @GET
  366. Call<ResponseBody> downloadFile(@Header("Authorization") String authorization,
  367. @Url String url);
  368. @DELETE
  369. Observable<ChatOverallSingleMessage> deleteChatMessage(@Header("Authorization") String authorization,
  370. @Url String url);
  371. @DELETE
  372. Observable<GenericOverall> deleteAvatar(@Header("Authorization") String authorization, @Url String url);
  373. @DELETE
  374. Observable<RoomOverall> deleteConversationAvatar(@Header("Authorization") String authorization, @Url String url);
  375. @Multipart
  376. @POST
  377. Observable<GenericOverall> uploadAvatar(@Header("Authorization") String authorization,
  378. @Url String url,
  379. @Part MultipartBody.Part attachment);
  380. @Multipart
  381. @POST
  382. Observable<RoomOverall> uploadConversationAvatar(@Header("Authorization") String authorization,
  383. @Url String url,
  384. @Part MultipartBody.Part attachment);
  385. @GET
  386. Observable<UserProfileFieldsOverall> getEditableUserProfileFields(@Header("Authorization") String authorization,
  387. @Url String url);
  388. @GET
  389. Call<ResponseBody> downloadResizedImage(@Header("Authorization") String authorization,
  390. @Url String url);
  391. @FormUrlEncoded
  392. @POST
  393. Observable<GenericOverall> sendLocation(@Header("Authorization") String authorization,
  394. @Url String url,
  395. @Field("objectType") String objectType,
  396. @Field("objectId") String objectId,
  397. @Field("metaData") String metaData);
  398. @DELETE
  399. Observable<GenericOverall> clearChatHistory(@Header("Authorization") String authorization, @Url String url);
  400. @FormUrlEncoded
  401. @POST
  402. Observable<GenericOverall> notificationCalls(@Header("Authorization") String authorization,
  403. @Url String url,
  404. @Field("level") Integer level);
  405. @GET
  406. Observable<HoverCardOverall> hoverCard(@Header("Authorization") String authorization, @Url String url);
  407. // Url is: /api/{apiVersion}/chat/{token}/read
  408. @FormUrlEncoded
  409. @POST
  410. Observable<GenericOverall> setChatReadMarker(@Header("Authorization") String authorization,
  411. @Url String url,
  412. @Nullable @Field("lastReadMessage") Integer lastReadMessage);
  413. // Url is: /api/{apiVersion}/chat/{token}/read
  414. @DELETE
  415. Observable<GenericOverall> markRoomAsUnread(@Header("Authorization") String authorization, @Url String url);
  416. /*
  417. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /listed-room
  418. */
  419. @GET
  420. Observable<RoomsOverall> getOpenConversations(@Header("Authorization") String authorization, @Url String url);
  421. @GET
  422. Observable<StatusOverall> status(@Header("Authorization") String authorization, @Url String url);
  423. @GET
  424. Observable<StatusOverall> backupStatus(@Header("Authorization") String authorization, @Url String url);
  425. @GET
  426. Observable<ResponseBody> getPredefinedStatuses(@Header("Authorization") String authorization, @Url String url);
  427. @DELETE
  428. Observable<GenericOverall> statusDeleteMessage(@Header("Authorization") String authorization, @Url String url);
  429. @FormUrlEncoded
  430. @PUT
  431. Observable<GenericOverall> setPredefinedStatusMessage(@Header("Authorization") String authorization,
  432. @Url String url,
  433. @Field("messageId") String selectedPredefinedMessageId,
  434. @Field("clearAt") Long clearAt);
  435. @FormUrlEncoded
  436. @PUT
  437. Observable<GenericOverall> setCustomStatusMessage(@Header("Authorization") String authorization,
  438. @Url String url,
  439. @Field("statusIcon") String statusIcon,
  440. @Field("message") String message,
  441. @Field("clearAt") Long clearAt);
  442. @FormUrlEncoded
  443. @PUT
  444. Observable<GenericOverall> setStatusType(@Header("Authorization") String authorization,
  445. @Url String url,
  446. @Field("statusType") String statusType);
  447. @POST
  448. Observable<GenericOverall> sendReaction(@Header("Authorization") String authorization,
  449. @Url String url,
  450. @Query("reaction") String reaction);
  451. @DELETE
  452. Observable<GenericOverall> deleteReaction(@Header("Authorization") String authorization,
  453. @Url String url,
  454. @Query("reaction") String reaction);
  455. @GET
  456. Observable<ReactionsOverall> getReactions(@Header("Authorization") String authorization,
  457. @Url String url,
  458. @Query("reaction") String reaction);
  459. @GET
  460. Observable<UnifiedSearchOverall> performUnifiedSearch(@Header("Authorization") String authorization,
  461. @Url String url,
  462. @Query("term") String term,
  463. @Query("from") String fromUrl,
  464. @Query("limit") Integer limit,
  465. @Query("cursor") Integer cursor);
  466. @GET
  467. Observable<PollOverall> getPoll(@Header("Authorization") String authorization,
  468. @Url String url);
  469. @FormUrlEncoded
  470. @POST
  471. Observable<PollOverall> createPoll(@Header("Authorization") String authorization,
  472. @Url String url,
  473. @Query("question") String question,
  474. @Field("options[]") List<String> options,
  475. @Query("resultMode") Integer resultMode,
  476. @Query("maxVotes") Integer maxVotes);
  477. @FormUrlEncoded
  478. @POST
  479. Observable<PollOverall> votePoll(@Header("Authorization") String authorization,
  480. @Url String url,
  481. @Field("optionIds[]") List<Integer> optionIds);
  482. @DELETE
  483. Observable<PollOverall> closePoll(@Header("Authorization") String authorization,
  484. @Url String url);
  485. @FormUrlEncoded
  486. @POST
  487. Observable<GenericOverall> setMessageExpiration(@Header("Authorization") String authorization,
  488. @Url String url,
  489. @Field("seconds") Integer seconds);
  490. @GET
  491. Observable<OpenGraphOverall> getOpenGraph(@Header("Authorization") String authorization,
  492. @Url String url,
  493. @Query("reference") String urlToFindPreviewFor);
  494. @FormUrlEncoded
  495. @POST
  496. Observable<GenericOverall> startRecording(@Header("Authorization") String authorization,
  497. @Url String url,
  498. @Field("status") Integer status);
  499. @DELETE
  500. Observable<GenericOverall> stopRecording(@Header("Authorization") String authorization,
  501. @Url String url);
  502. @POST
  503. Observable<GenericOverall> requestAssistance(@Header("Authorization") String authorization,
  504. @Url String url);
  505. @DELETE
  506. Observable<GenericOverall> withdrawRequestAssistance(@Header("Authorization") String authorization,
  507. @Url String url);
  508. @POST
  509. Observable<GenericOverall> sendCommonPostRequest(@Header("Authorization") String authorization, @Url String url);
  510. @DELETE
  511. Observable<GenericOverall> sendCommonDeleteRequest(@Header("Authorization") String authorization, @Url String url);
  512. @POST
  513. Observable<TranslationsOverall> translateMessage(@Header("Authorization") String authorization,
  514. @Url String url,
  515. @Query("text") String text,
  516. @Query("toLanguage") String toLanguage,
  517. @Nullable @Query("fromLanguage") String fromLanguage);
  518. @GET
  519. Observable<LanguagesOverall> getLanguages(@Header("Authorization") String authorization,
  520. @Url String url);
  521. @GET
  522. Observable<ReminderOverall> getReminder(@Header("Authorization") String authorization,
  523. @Url String url);
  524. @DELETE
  525. Observable<GenericOverall> deleteReminder(@Header("Authorization") String authorization,
  526. @Url String url);
  527. @FormUrlEncoded
  528. @POST
  529. Observable<ReminderOverall> setReminder(@Header("Authorization") String authorization,
  530. @Url String url,
  531. @Field("timestamp") int timestamp);
  532. @FormUrlEncoded
  533. @PUT
  534. Observable<GenericOverall> setRecordingConsent(@Header("Authorization") String authorization,
  535. @Url String url,
  536. @Field("recordingConsent") int recordingConsent);
  537. @GET
  538. Observable<InvitationOverall> getInvitations(@Header("Authorization") String authorization,
  539. @Url String url);
  540. @POST
  541. Observable<GenericOverall> acceptInvitation(@Header("Authorization") String authorization,
  542. @Url String url);
  543. @DELETE
  544. Observable<GenericOverall> rejectInvitation(@Header("Authorization") String authorization,
  545. @Url String url);
  546. @GET
  547. Observable<TalkBanOverall> listBans(@Header("Authorization") String authorization,
  548. @Url String url);
  549. @FormUrlEncoded
  550. @POST
  551. Observable<TalkBan> banActor(@Header("Authorization") String authorization,
  552. @Url String url,
  553. @Field("actorType") String actorType,
  554. @Field("actorId") String actorId,
  555. @Field("internalNote") String internalNote);
  556. @DELETE
  557. Observable<GenericOverall> unbanActor(@Header("Authorization") String authorization,
  558. @Url String url);
  559. }