NcApi.java 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  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> renameRoom(@Header("Authorization") String authorization,
  113. @Url String url,
  114. @Field("roomName") String roomName);
  115. @FormUrlEncoded
  116. @PUT
  117. Observable<GenericOverall> setConversationDescription(@Header("Authorization") String authorization,
  118. @Url String url,
  119. @Field("description") String description);
  120. /*
  121. QueryMap items are as follows:
  122. - "newParticipant" : "user"
  123. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/participants
  124. */
  125. @POST
  126. Observable<AddParticipantOverall> addParticipant(@Header("Authorization") String authorization,
  127. @Url String url,
  128. @QueryMap Map<String,
  129. String> options);
  130. @POST
  131. Observable<GenericOverall> resendParticipantInvitations(@Header("Authorization") String authorization,
  132. @Url String url);
  133. // also used for removing a guest from a conversation
  134. @Deprecated
  135. @DELETE
  136. Observable<GenericOverall> removeParticipantFromConversation(@Header("Authorization") String authorization,
  137. @Url String url,
  138. @Query("participant") String participantId);
  139. @DELETE
  140. Observable<GenericOverall> removeAttendeeFromConversation(@Header("Authorization") String authorization,
  141. @Url String url,
  142. @Query("attendeeId") Long attendeeId);
  143. @Deprecated
  144. @POST
  145. Observable<GenericOverall> promoteUserToModerator(@Header("Authorization") String authorization,
  146. @Url String url,
  147. @Query("participant") String participantId);
  148. @Deprecated
  149. @DELETE
  150. Observable<GenericOverall> demoteModeratorToUser(@Header("Authorization") String authorization,
  151. @Url String url,
  152. @Query("participant") String participantId);
  153. @POST
  154. Observable<GenericOverall> promoteAttendeeToModerator(@Header("Authorization") String authorization,
  155. @Url String url,
  156. @Query("attendeeId") Long attendeeId);
  157. @DELETE
  158. Observable<GenericOverall> demoteAttendeeFromModerator(@Header("Authorization") String authorization,
  159. @Url String url,
  160. @Query("attendeeId") Long attendeeId);
  161. /*
  162. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/participants/self
  163. */
  164. @DELETE
  165. Observable<GenericOverall> removeSelfFromRoom(@Header("Authorization") String authorization, @Url String url);
  166. /*
  167. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/public
  168. */
  169. @POST
  170. Observable<GenericOverall> makeRoomPublic(@Header("Authorization") String authorization, @Url String url);
  171. /*
  172. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/public
  173. */
  174. @DELETE
  175. Observable<GenericOverall> makeRoomPrivate(@Header("Authorization") String authorization, @Url String url);
  176. @DELETE
  177. Observable<GenericOverall> deleteRoom(@Header("Authorization") String authorization, @Url String url);
  178. /*
  179. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /call/callToken
  180. */
  181. @GET
  182. Observable<ParticipantsOverall> getPeersForCall(@Header("Authorization") String authorization, @Url String url);
  183. @GET
  184. Observable<ParticipantsOverall> getPeersForCall(@Header("Authorization") String authorization,
  185. @Url String url,
  186. @QueryMap Map<String, Boolean> fields);
  187. @FormUrlEncoded
  188. @POST
  189. Observable<RoomOverall> joinRoom(@Nullable @Header("Authorization") String authorization,
  190. @Url String url,
  191. @Nullable @Field("password") String password);
  192. @DELETE
  193. Observable<GenericOverall> leaveRoom(@Nullable @Header("Authorization") String authorization, @Url String url);
  194. /*
  195. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /call/callToken
  196. */
  197. @FormUrlEncoded
  198. @POST
  199. Observable<GenericOverall> joinCall(@Nullable @Header("Authorization") String authorization,
  200. @Url String url,
  201. @Field("flags") Integer inCall,
  202. @Field("silent") Boolean callWithoutNotification,
  203. @Nullable @Field("recordingConsent") Boolean recordingConsent);
  204. /*
  205. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /call/callToken
  206. */
  207. @DELETE
  208. Observable<GenericOverall> leaveCall(@Nullable @Header("Authorization") String authorization, @Url String url,
  209. @Nullable @Query("all") Boolean all);
  210. @GET
  211. Observable<SignalingSettingsOverall> getSignalingSettings(@Nullable @Header("Authorization") String authorization,
  212. @Url String url);
  213. /*
  214. QueryMap items are as follows:
  215. - "messages" : "message"
  216. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /signaling
  217. */
  218. @FormUrlEncoded
  219. @POST
  220. Observable<SignalingOverall> sendSignalingMessages(@Nullable @Header("Authorization") String authorization,
  221. @Url String url,
  222. @Field("messages") String messages);
  223. /*
  224. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /signaling
  225. */
  226. @GET
  227. Observable<SignalingOverall> pullSignalingMessages(@Nullable @Header("Authorization") String authorization,
  228. @Url String url);
  229. /*
  230. QueryMap items are as follows:
  231. - "format" : "json"
  232. Server URL is: baseUrl + ocsApiVersion + "/cloud/user"
  233. */
  234. @GET
  235. Observable<UserProfileOverall> getUserProfile(@Header("Authorization") String authorization, @Url String url);
  236. @GET
  237. Observable<UserProfileOverall> getUserData(@Header("Authorization") String authorization, @Url String url);
  238. @DELETE
  239. Observable<GenericOverall> revertStatus(@Header("Authentication") String authorization, @Url String url);
  240. @FormUrlEncoded
  241. @PUT
  242. Observable<GenericOverall> setUserData(@Header("Authorization") String authorization,
  243. @Url String url,
  244. @Field("key") String key,
  245. @Field("value") String value);
  246. /*
  247. Server URL is: baseUrl + /status.php
  248. */
  249. @GET
  250. Observable<Status> getServerStatus(@Url String url);
  251. /*
  252. QueryMap items are as follows:
  253. - "format" : "json"
  254. - "pushTokenHash" : ""
  255. - "devicePublicKey" : ""
  256. - "proxyServer" : ""
  257. Server URL is: baseUrl + ocsApiVersion + "/apps/notifications/api/v2/push
  258. */
  259. @POST
  260. Observable<PushRegistrationOverall> registerDeviceForNotificationsWithNextcloud(
  261. @Header("Authorization") String authorization,
  262. @Url String url,
  263. @QueryMap Map<String, String> options);
  264. @DELETE
  265. Observable<GenericOverall> unregisterDeviceForNotificationsWithNextcloud(
  266. @Header("Authorization") String authorization,
  267. @Url String url);
  268. @FormUrlEncoded
  269. @POST
  270. Observable<Unit> registerDeviceForNotificationsWithPushProxy(@Url String url,
  271. @FieldMap Map<String, String> fields);
  272. /*
  273. QueryMap items are as follows:
  274. - "deviceIdentifier": "{{deviceIdentifier}}",
  275. - "deviceIdentifierSignature": "{{signature}}",
  276. - "userPublicKey": "{{userPublicKey}}"
  277. */
  278. @DELETE
  279. Observable<Void> unregisterDeviceForNotificationsWithProxy(@Url String url,
  280. @QueryMap Map<String, String> fields);
  281. @FormUrlEncoded
  282. @PUT
  283. Observable<Response<GenericOverall>> setPassword2(@Header("Authorization") String authorization,
  284. @Url String url,
  285. @Field("password") String password);
  286. @GET
  287. Observable<CapabilitiesOverall> getCapabilities(@Header("Authorization") String authorization, @Url String url);
  288. @GET
  289. Observable<CapabilitiesOverall> getCapabilities(@Url String url);
  290. @GET
  291. Observable<RoomCapabilitiesOverall> getRoomCapabilities(@Header("Authorization") String authorization,
  292. @Url String url);
  293. /*
  294. QueryMap items are as follows:
  295. - "lookIntoFuture": int (0 or 1),
  296. - "limit" : int, range 100-200,
  297. - "timeout": used with look into future, 30 default, 60 at most
  298. - "lastKnownMessageId", int, use one from X-Chat-Last-Given
  299. */
  300. @GET
  301. Observable<Response<ChatOverall>> pullChatMessages(@Header("Authorization") String authorization,
  302. @Url String url,
  303. @QueryMap Map<String, Integer> fields);
  304. /*
  305. Fieldmap items are as follows:
  306. - "message": ,
  307. - "actorDisplayName"
  308. */
  309. @FormUrlEncoded
  310. @POST
  311. Observable<GenericOverall> sendChatMessage(@Header("Authorization") String authorization,
  312. @Url String url,
  313. @Field("message") CharSequence message,
  314. @Field("actorDisplayName") String actorDisplayName,
  315. @Field("replyTo") Integer replyTo,
  316. @Field("silent") Boolean sendWithoutNotification);
  317. @FormUrlEncoded
  318. @PUT
  319. Observable<ChatOverallSingleMessage> editChatMessage(@Header("Authorization") String authorization,
  320. @Url String url,
  321. @Field("message") String message);
  322. @GET
  323. Observable<Response<ChatShareOverall>> getSharedItems(
  324. @Header("Authorization") String authorization,
  325. @Url String url,
  326. @Query("objectType") String objectType,
  327. @Nullable @Query("lastKnownMessageId") Integer lastKnownMessageId,
  328. @Nullable @Query("limit") Integer limit);
  329. @GET
  330. Observable<Response<ChatShareOverviewOverall>> getSharedItemsOverview(@Header("Authorization") String authorization,
  331. @Url String url,
  332. @Nullable @Query("limit") Integer limit);
  333. @GET
  334. Observable<MentionOverall> getMentionAutocompleteSuggestions(@Header("Authorization") String authorization,
  335. @Url String url,
  336. @Query("search") String query,
  337. @Nullable @Query("limit") Integer limit,
  338. @QueryMap Map<String, String> fields);
  339. // Url is: /api/{apiVersion}/room/{token}/pin
  340. @POST
  341. Observable<GenericOverall> addConversationToFavorites(@Header("Authorization") String authorization,
  342. @Url String url);
  343. // Url is: /api/{apiVersion}/room/{token}/favorites
  344. @DELETE
  345. Observable<GenericOverall> removeConversationFromFavorites(@Header("Authorization") String authorization,
  346. @Url String url);
  347. @GET
  348. Observable<NotificationOverall> getNcNotification(@Header("Authorization") String authorization,
  349. @Url String url);
  350. @FormUrlEncoded
  351. @POST
  352. Observable<GenericOverall> setNotificationLevel(@Header("Authorization") String authorization,
  353. @Url String url,
  354. @Field("level") int level);
  355. @FormUrlEncoded
  356. @PUT
  357. Observable<GenericOverall> setConversationReadOnly(@Header("Authorization") String authorization,
  358. @Url String url,
  359. @Field("state") int state);
  360. @FormUrlEncoded
  361. @POST
  362. Observable<GenericOverall> createRemoteShare(@Nullable @Header("Authorization") String authorization,
  363. @Url String url,
  364. @Field("path") String remotePath,
  365. @Field("shareWith") String roomToken,
  366. @Field("shareType") String shareType,
  367. @Field("talkMetaData") String talkMetaData);
  368. @FormUrlEncoded
  369. @PUT
  370. Observable<GenericOverall> setLobbyForConversation(@Header("Authorization") String authorization,
  371. @Url String url,
  372. @Field("state") Integer state,
  373. @Field("timer") Long timer);
  374. @POST
  375. Observable<ContactsByNumberOverall> searchContactsByPhoneNumber(@Header("Authorization") String authorization,
  376. @Url String url,
  377. @Body RequestBody search);
  378. @PUT
  379. Observable<Response<GenericOverall>> uploadFile(@Header("Authorization") String authorization,
  380. @Url String url,
  381. @Body RequestBody body);
  382. @HEAD
  383. Observable<Response<Void>> checkIfFileExists(@Header("Authorization") String authorization,
  384. @Url String url);
  385. @GET
  386. Call<ResponseBody> downloadFile(@Header("Authorization") String authorization,
  387. @Url String url);
  388. @DELETE
  389. Observable<ChatOverallSingleMessage> deleteChatMessage(@Header("Authorization") String authorization,
  390. @Url String url);
  391. @DELETE
  392. Observable<GenericOverall> deleteAvatar(@Header("Authorization") String authorization, @Url String url);
  393. @DELETE
  394. Observable<RoomOverall> deleteConversationAvatar(@Header("Authorization") String authorization, @Url String url);
  395. @Multipart
  396. @POST
  397. Observable<GenericOverall> uploadAvatar(@Header("Authorization") String authorization,
  398. @Url String url,
  399. @Part MultipartBody.Part attachment);
  400. @Multipart
  401. @POST
  402. Observable<RoomOverall> uploadConversationAvatar(@Header("Authorization") String authorization,
  403. @Url String url,
  404. @Part MultipartBody.Part attachment);
  405. @GET
  406. Observable<UserProfileFieldsOverall> getEditableUserProfileFields(@Header("Authorization") String authorization,
  407. @Url String url);
  408. @GET
  409. Call<ResponseBody> downloadResizedImage(@Header("Authorization") String authorization,
  410. @Url String url);
  411. @FormUrlEncoded
  412. @POST
  413. Observable<GenericOverall> sendLocation(@Header("Authorization") String authorization,
  414. @Url String url,
  415. @Field("objectType") String objectType,
  416. @Field("objectId") String objectId,
  417. @Field("metaData") String metaData);
  418. @DELETE
  419. Observable<GenericOverall> clearChatHistory(@Header("Authorization") String authorization, @Url String url);
  420. @FormUrlEncoded
  421. @POST
  422. Observable<GenericOverall> notificationCalls(@Header("Authorization") String authorization,
  423. @Url String url,
  424. @Field("level") Integer level);
  425. @GET
  426. Observable<HoverCardOverall> hoverCard(@Header("Authorization") String authorization, @Url String url);
  427. // Url is: /api/{apiVersion}/chat/{token}/read
  428. @FormUrlEncoded
  429. @POST
  430. Observable<GenericOverall> setChatReadMarker(@Header("Authorization") String authorization,
  431. @Url String url,
  432. @Nullable @Field("lastReadMessage") Integer lastReadMessage);
  433. // Url is: /api/{apiVersion}/chat/{token}/read
  434. @DELETE
  435. Observable<GenericOverall> markRoomAsUnread(@Header("Authorization") String authorization, @Url String url);
  436. /*
  437. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /listed-room
  438. */
  439. @GET
  440. Observable<RoomsOverall> getOpenConversations(@Header("Authorization") String authorization, @Url String url);
  441. @GET
  442. Observable<StatusOverall> status(@Header("Authorization") String authorization, @Url String url);
  443. @GET
  444. Observable<StatusOverall> backupStatus(@Header("Authorization") String authorization, @Url String url);
  445. @GET
  446. Observable<ResponseBody> getPredefinedStatuses(@Header("Authorization") String authorization, @Url String url);
  447. @DELETE
  448. Observable<GenericOverall> statusDeleteMessage(@Header("Authorization") String authorization, @Url String url);
  449. @FormUrlEncoded
  450. @PUT
  451. Observable<GenericOverall> setPredefinedStatusMessage(@Header("Authorization") String authorization,
  452. @Url String url,
  453. @Field("messageId") String selectedPredefinedMessageId,
  454. @Field("clearAt") Long clearAt);
  455. @FormUrlEncoded
  456. @PUT
  457. Observable<GenericOverall> setCustomStatusMessage(@Header("Authorization") String authorization,
  458. @Url String url,
  459. @Field("statusIcon") String statusIcon,
  460. @Field("message") String message,
  461. @Field("clearAt") Long clearAt);
  462. @FormUrlEncoded
  463. @PUT
  464. Observable<GenericOverall> setStatusType(@Header("Authorization") String authorization,
  465. @Url String url,
  466. @Field("statusType") String statusType);
  467. @POST
  468. Observable<GenericOverall> sendReaction(@Header("Authorization") String authorization,
  469. @Url String url,
  470. @Query("reaction") String reaction);
  471. @DELETE
  472. Observable<GenericOverall> deleteReaction(@Header("Authorization") String authorization,
  473. @Url String url,
  474. @Query("reaction") String reaction);
  475. @GET
  476. Observable<ReactionsOverall> getReactions(@Header("Authorization") String authorization,
  477. @Url String url,
  478. @Query("reaction") String reaction);
  479. @GET
  480. Observable<UnifiedSearchOverall> performUnifiedSearch(@Header("Authorization") String authorization,
  481. @Url String url,
  482. @Query("term") String term,
  483. @Query("from") String fromUrl,
  484. @Query("limit") Integer limit,
  485. @Query("cursor") Integer cursor);
  486. @GET
  487. Observable<PollOverall> getPoll(@Header("Authorization") String authorization,
  488. @Url String url);
  489. @FormUrlEncoded
  490. @POST
  491. Observable<PollOverall> createPoll(@Header("Authorization") String authorization,
  492. @Url String url,
  493. @Query("question") String question,
  494. @Field("options[]") List<String> options,
  495. @Query("resultMode") Integer resultMode,
  496. @Query("maxVotes") Integer maxVotes);
  497. @FormUrlEncoded
  498. @POST
  499. Observable<PollOverall> votePoll(@Header("Authorization") String authorization,
  500. @Url String url,
  501. @Field("optionIds[]") List<Integer> optionIds);
  502. @DELETE
  503. Observable<PollOverall> closePoll(@Header("Authorization") String authorization,
  504. @Url String url);
  505. @FormUrlEncoded
  506. @POST
  507. Observable<GenericOverall> setMessageExpiration(@Header("Authorization") String authorization,
  508. @Url String url,
  509. @Field("seconds") Integer seconds);
  510. @GET
  511. Observable<OpenGraphOverall> getOpenGraph(@Header("Authorization") String authorization,
  512. @Url String url,
  513. @Query("reference") String urlToFindPreviewFor);
  514. @FormUrlEncoded
  515. @POST
  516. Observable<GenericOverall> startRecording(@Header("Authorization") String authorization,
  517. @Url String url,
  518. @Field("status") Integer status);
  519. @DELETE
  520. Observable<GenericOverall> stopRecording(@Header("Authorization") String authorization,
  521. @Url String url);
  522. @POST
  523. Observable<GenericOverall> requestAssistance(@Header("Authorization") String authorization,
  524. @Url String url);
  525. @DELETE
  526. Observable<GenericOverall> withdrawRequestAssistance(@Header("Authorization") String authorization,
  527. @Url String url);
  528. @POST
  529. Observable<GenericOverall> sendCommonPostRequest(@Header("Authorization") String authorization, @Url String url);
  530. @DELETE
  531. Observable<GenericOverall> sendCommonDeleteRequest(@Header("Authorization") String authorization, @Url String url);
  532. @POST
  533. Observable<TranslationsOverall> translateMessage(@Header("Authorization") String authorization,
  534. @Url String url,
  535. @Query("text") String text,
  536. @Query("toLanguage") String toLanguage,
  537. @Nullable @Query("fromLanguage") String fromLanguage);
  538. @GET
  539. Observable<LanguagesOverall> getLanguages(@Header("Authorization") String authorization,
  540. @Url String url);
  541. @GET
  542. Observable<ReminderOverall> getReminder(@Header("Authorization") String authorization,
  543. @Url String url);
  544. @DELETE
  545. Observable<GenericOverall> deleteReminder(@Header("Authorization") String authorization,
  546. @Url String url);
  547. @FormUrlEncoded
  548. @POST
  549. Observable<ReminderOverall> setReminder(@Header("Authorization") String authorization,
  550. @Url String url,
  551. @Field("timestamp") int timestamp);
  552. @FormUrlEncoded
  553. @PUT
  554. Observable<GenericOverall> setRecordingConsent(@Header("Authorization") String authorization,
  555. @Url String url,
  556. @Field("recordingConsent") int recordingConsent);
  557. @GET
  558. Observable<InvitationOverall> getInvitations(@Header("Authorization") String authorization,
  559. @Url String url);
  560. @POST
  561. Observable<GenericOverall> acceptInvitation(@Header("Authorization") String authorization,
  562. @Url String url);
  563. @DELETE
  564. Observable<GenericOverall> rejectInvitation(@Header("Authorization") String authorization,
  565. @Url String url);
  566. @GET
  567. Observable<TalkBanOverall> listBans(@Header("Authorization") String authorization,
  568. @Url String url);
  569. @FormUrlEncoded
  570. @POST
  571. Observable<TalkBan> banActor(@Header("Authorization") String authorization,
  572. @Url String url,
  573. @Field("actorType") String actorType,
  574. @Field("actorId") String actorId,
  575. @Field("internalNote") String internalNote);
  576. @DELETE
  577. Observable<GenericOverall> unbanActor(@Header("Authorization") String authorization,
  578. @Url String url);
  579. }