NcApi.java 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  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. @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. @FormUrlEncoded
  239. @PUT
  240. Observable<GenericOverall> setUserData(@Header("Authorization") String authorization,
  241. @Url String url,
  242. @Field("key") String key,
  243. @Field("value") String value);
  244. /*
  245. Server URL is: baseUrl + /status.php
  246. */
  247. @GET
  248. Observable<Status> getServerStatus(@Url String url);
  249. /*
  250. QueryMap items are as follows:
  251. - "format" : "json"
  252. - "pushTokenHash" : ""
  253. - "devicePublicKey" : ""
  254. - "proxyServer" : ""
  255. Server URL is: baseUrl + ocsApiVersion + "/apps/notifications/api/v2/push
  256. */
  257. @POST
  258. Observable<PushRegistrationOverall> registerDeviceForNotificationsWithNextcloud(
  259. @Header("Authorization") String authorization,
  260. @Url String url,
  261. @QueryMap Map<String, String> options);
  262. @DELETE
  263. Observable<GenericOverall> unregisterDeviceForNotificationsWithNextcloud(
  264. @Header("Authorization") String authorization,
  265. @Url String url);
  266. @FormUrlEncoded
  267. @POST
  268. Observable<Unit> registerDeviceForNotificationsWithPushProxy(@Url String url,
  269. @FieldMap Map<String, String> fields);
  270. /*
  271. QueryMap items are as follows:
  272. - "deviceIdentifier": "{{deviceIdentifier}}",
  273. - "deviceIdentifierSignature": "{{signature}}",
  274. - "userPublicKey": "{{userPublicKey}}"
  275. */
  276. @DELETE
  277. Observable<Void> unregisterDeviceForNotificationsWithProxy(@Url String url,
  278. @QueryMap Map<String, String> fields);
  279. @FormUrlEncoded
  280. @PUT
  281. Observable<GenericOverall> setPassword(@Header("Authorization") String authorization,
  282. @Url String url,
  283. @Field("password") String password);
  284. @FormUrlEncoded
  285. @PUT
  286. Observable<Response<GenericOverall>> setPassword2(@Header("Authorization") String authorization,
  287. @Url String url,
  288. @Field("password") String password);
  289. @GET
  290. Observable<CapabilitiesOverall> getCapabilities(@Header("Authorization") String authorization, @Url String url);
  291. @GET
  292. Observable<CapabilitiesOverall> getCapabilities(@Url String url);
  293. @GET
  294. Observable<RoomCapabilitiesOverall> getRoomCapabilities(@Header("Authorization") String authorization,
  295. @Url String url);
  296. /*
  297. QueryMap items are as follows:
  298. - "lookIntoFuture": int (0 or 1),
  299. - "limit" : int, range 100-200,
  300. - "timeout": used with look into future, 30 default, 60 at most
  301. - "lastKnownMessageId", int, use one from X-Chat-Last-Given
  302. */
  303. @GET
  304. Observable<Response<ChatOverall>> pullChatMessages(@Header("Authorization") String authorization,
  305. @Url String url,
  306. @QueryMap Map<String, Integer> fields);
  307. /*
  308. Fieldmap items are as follows:
  309. - "message": ,
  310. - "actorDisplayName"
  311. */
  312. @FormUrlEncoded
  313. @POST
  314. Observable<GenericOverall> sendChatMessage(@Header("Authorization") String authorization,
  315. @Url String url,
  316. @Field("message") CharSequence message,
  317. @Field("actorDisplayName") String actorDisplayName,
  318. @Field("replyTo") Integer replyTo,
  319. @Field("silent") Boolean sendWithoutNotification);
  320. @FormUrlEncoded
  321. @PUT
  322. Observable<ChatOverallSingleMessage> editChatMessage(@Header("Authorization") String authorization,
  323. @Url String url,
  324. @Field("message") String message);
  325. @GET
  326. Observable<Response<ChatShareOverall>> getSharedItems(
  327. @Header("Authorization") String authorization,
  328. @Url String url,
  329. @Query("objectType") String objectType,
  330. @Nullable @Query("lastKnownMessageId") Integer lastKnownMessageId,
  331. @Nullable @Query("limit") Integer limit);
  332. @GET
  333. Observable<Response<ChatShareOverviewOverall>> getSharedItemsOverview(@Header("Authorization") String authorization,
  334. @Url String url,
  335. @Nullable @Query("limit") Integer limit);
  336. @GET
  337. Observable<MentionOverall> getMentionAutocompleteSuggestions(@Header("Authorization") String authorization,
  338. @Url String url,
  339. @Query("search") String query,
  340. @Nullable @Query("limit") Integer limit,
  341. @QueryMap Map<String, String> fields);
  342. // Url is: /api/{apiVersion}/room/{token}/pin
  343. @POST
  344. Observable<GenericOverall> addConversationToFavorites(@Header("Authorization") String authorization,
  345. @Url String url);
  346. // Url is: /api/{apiVersion}/room/{token}/favorites
  347. @DELETE
  348. Observable<GenericOverall> removeConversationFromFavorites(@Header("Authorization") String authorization,
  349. @Url String url);
  350. @GET
  351. Observable<NotificationOverall> getNcNotification(@Header("Authorization") String authorization,
  352. @Url String url);
  353. @FormUrlEncoded
  354. @POST
  355. Observable<GenericOverall> setNotificationLevel(@Header("Authorization") String authorization,
  356. @Url String url,
  357. @Field("level") int level);
  358. @FormUrlEncoded
  359. @PUT
  360. Observable<GenericOverall> setReadOnlyState(@Header("Authorization") String authorization,
  361. @Url String url,
  362. @Field("state") int state);
  363. @FormUrlEncoded
  364. @POST
  365. Observable<GenericOverall> createRemoteShare(@Nullable @Header("Authorization") String authorization,
  366. @Url String url,
  367. @Field("path") String remotePath,
  368. @Field("shareWith") String roomToken,
  369. @Field("shareType") String shareType,
  370. @Field("talkMetaData") String talkMetaData);
  371. @FormUrlEncoded
  372. @PUT
  373. Observable<GenericOverall> setLobbyForConversation(@Header("Authorization") String authorization,
  374. @Url String url,
  375. @Field("state") Integer state,
  376. @Field("timer") Long timer);
  377. @POST
  378. Observable<GenericOverall> setReadStatusPrivacy(@Header("Authorization") String authorization,
  379. @Url String url,
  380. @Body RequestBody body);
  381. @POST
  382. Observable<GenericOverall> setTypingStatusPrivacy(@Header("Authorization") String authorization,
  383. @Url String url,
  384. @Body RequestBody body);
  385. @POST
  386. Observable<ContactsByNumberOverall> searchContactsByPhoneNumber(@Header("Authorization") String authorization,
  387. @Url String url,
  388. @Body RequestBody search);
  389. @PUT
  390. Observable<Response<GenericOverall>> uploadFile(@Header("Authorization") String authorization,
  391. @Url String url,
  392. @Body RequestBody body);
  393. @HEAD
  394. Observable<Response<Void>> checkIfFileExists(@Header("Authorization") String authorization,
  395. @Url String url);
  396. @GET
  397. Call<ResponseBody> downloadFile(@Header("Authorization") String authorization,
  398. @Url String url);
  399. @DELETE
  400. Observable<ChatOverallSingleMessage> deleteChatMessage(@Header("Authorization") String authorization,
  401. @Url String url);
  402. @DELETE
  403. Observable<GenericOverall> deleteAvatar(@Header("Authorization") String authorization, @Url String url);
  404. @DELETE
  405. Observable<RoomOverall> deleteConversationAvatar(@Header("Authorization") String authorization, @Url String url);
  406. @Multipart
  407. @POST
  408. Observable<GenericOverall> uploadAvatar(@Header("Authorization") String authorization,
  409. @Url String url,
  410. @Part MultipartBody.Part attachment);
  411. @Multipart
  412. @POST
  413. Observable<RoomOverall> uploadConversationAvatar(@Header("Authorization") String authorization,
  414. @Url String url,
  415. @Part MultipartBody.Part attachment);
  416. @GET
  417. Observable<UserProfileFieldsOverall> getEditableUserProfileFields(@Header("Authorization") String authorization,
  418. @Url String url);
  419. @GET
  420. Call<ResponseBody> downloadResizedImage(@Header("Authorization") String authorization,
  421. @Url String url);
  422. @FormUrlEncoded
  423. @POST
  424. Observable<GenericOverall> sendLocation(@Header("Authorization") String authorization,
  425. @Url String url,
  426. @Field("objectType") String objectType,
  427. @Field("objectId") String objectId,
  428. @Field("metaData") String metaData);
  429. @DELETE
  430. Observable<GenericOverall> clearChatHistory(@Header("Authorization") String authorization, @Url String url);
  431. @FormUrlEncoded
  432. @POST
  433. Observable<GenericOverall> notificationCalls(@Header("Authorization") String authorization,
  434. @Url String url,
  435. @Field("level") Integer level);
  436. @GET
  437. Observable<HoverCardOverall> hoverCard(@Header("Authorization") String authorization, @Url String url);
  438. // Url is: /api/{apiVersion}/chat/{token}/read
  439. @FormUrlEncoded
  440. @POST
  441. Observable<GenericOverall> setChatReadMarker(@Header("Authorization") String authorization,
  442. @Url String url,
  443. @Nullable @Field("lastReadMessage") Integer lastReadMessage);
  444. // Url is: /api/{apiVersion}/chat/{token}/read
  445. @DELETE
  446. Observable<GenericOverall> markRoomAsUnread(@Header("Authorization") String authorization, @Url String url);
  447. /*
  448. Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /listed-room
  449. */
  450. @GET
  451. Observable<RoomsOverall> getOpenConversations(@Header("Authorization") String authorization, @Url String url);
  452. /*
  453. * OCS Status API
  454. */
  455. @GET
  456. Observable<StatusOverall> status(@Header("Authorization") String authorization, @Url String url);
  457. @GET
  458. Observable<ResponseBody> getPredefinedStatuses(@Header("Authorization") String authorization, @Url String url);
  459. @DELETE
  460. Observable<GenericOverall> statusDeleteMessage(@Header("Authorization") String authorization, @Url String url);
  461. @FormUrlEncoded
  462. @PUT
  463. Observable<GenericOverall> setPredefinedStatusMessage(@Header("Authorization") String authorization,
  464. @Url String url,
  465. @Field("messageId") String selectedPredefinedMessageId,
  466. @Field("clearAt") Long clearAt);
  467. @FormUrlEncoded
  468. @PUT
  469. Observable<GenericOverall> setCustomStatusMessage(@Header("Authorization") String authorization,
  470. @Url String url,
  471. @Field("statusIcon") String statusIcon,
  472. @Field("message") String message,
  473. @Field("clearAt") Long clearAt);
  474. @FormUrlEncoded
  475. @PUT
  476. Observable<GenericOverall> setStatusType(@Header("Authorization") String authorization,
  477. @Url String url,
  478. @Field("statusType") String statusType);
  479. @POST
  480. Observable<GenericOverall> sendReaction(@Header("Authorization") String authorization,
  481. @Url String url,
  482. @Query("reaction") String reaction);
  483. @DELETE
  484. Observable<GenericOverall> deleteReaction(@Header("Authorization") String authorization,
  485. @Url String url,
  486. @Query("reaction") String reaction);
  487. @GET
  488. Observable<ReactionsOverall> getReactions(@Header("Authorization") String authorization,
  489. @Url String url,
  490. @Query("reaction") String reaction);
  491. @GET
  492. Observable<UnifiedSearchOverall> performUnifiedSearch(@Header("Authorization") String authorization,
  493. @Url String url,
  494. @Query("term") String term,
  495. @Query("from") String fromUrl,
  496. @Query("limit") Integer limit,
  497. @Query("cursor") Integer cursor);
  498. @GET
  499. Observable<PollOverall> getPoll(@Header("Authorization") String authorization,
  500. @Url String url);
  501. @FormUrlEncoded
  502. @POST
  503. Observable<PollOverall> createPoll(@Header("Authorization") String authorization,
  504. @Url String url,
  505. @Query("question") String question,
  506. @Field("options[]") List<String> options,
  507. @Query("resultMode") Integer resultMode,
  508. @Query("maxVotes") Integer maxVotes);
  509. @FormUrlEncoded
  510. @POST
  511. Observable<PollOverall> votePoll(@Header("Authorization") String authorization,
  512. @Url String url,
  513. @Field("optionIds[]") List<Integer> optionIds);
  514. @DELETE
  515. Observable<PollOverall> closePoll(@Header("Authorization") String authorization,
  516. @Url String url);
  517. @FormUrlEncoded
  518. @POST
  519. Observable<GenericOverall> setMessageExpiration(@Header("Authorization") String authorization,
  520. @Url String url,
  521. @Field("seconds") Integer seconds);
  522. @GET
  523. Observable<OpenGraphOverall> getOpenGraph(@Header("Authorization") String authorization,
  524. @Url String url,
  525. @Query("reference") String urlToFindPreviewFor);
  526. @FormUrlEncoded
  527. @POST
  528. Observable<GenericOverall> startRecording(@Header("Authorization") String authorization,
  529. @Url String url,
  530. @Field("status") Integer status);
  531. @DELETE
  532. Observable<GenericOverall> stopRecording(@Header("Authorization") String authorization,
  533. @Url String url);
  534. @POST
  535. Observable<GenericOverall> requestAssistance(@Header("Authorization") String authorization,
  536. @Url String url);
  537. @DELETE
  538. Observable<GenericOverall> withdrawRequestAssistance(@Header("Authorization") String authorization,
  539. @Url String url);
  540. @POST
  541. Observable<GenericOverall> sendCommonPostRequest(@Header("Authorization") String authorization, @Url String url);
  542. @DELETE
  543. Observable<GenericOverall> sendCommonDeleteRequest(@Header("Authorization") String authorization, @Url String url);
  544. @POST
  545. Observable<TranslationsOverall> translateMessage(@Header("Authorization") String authorization,
  546. @Url String url,
  547. @Query("text") String text,
  548. @Query("toLanguage") String toLanguage,
  549. @Nullable @Query("fromLanguage") String fromLanguage);
  550. @GET
  551. Observable<LanguagesOverall> getLanguages(@Header("Authorization") String authorization,
  552. @Url String url);
  553. @GET
  554. Observable<ReminderOverall> getReminder(@Header("Authorization") String authorization,
  555. @Url String url);
  556. @DELETE
  557. Observable<GenericOverall> deleteReminder(@Header("Authorization") String authorization,
  558. @Url String url);
  559. @FormUrlEncoded
  560. @POST
  561. Observable<ReminderOverall> setReminder(@Header("Authorization") String authorization,
  562. @Url String url,
  563. @Field("timestamp") int timestamp);
  564. @FormUrlEncoded
  565. @PUT
  566. Observable<GenericOverall> setRecordingConsent(@Header("Authorization") String authorization,
  567. @Url String url,
  568. @Field("recordingConsent") int recordingConsent);
  569. @GET
  570. Observable<InvitationOverall> getInvitations(@Header("Authorization") String authorization,
  571. @Url String url);
  572. @POST
  573. Observable<GenericOverall> acceptInvitation(@Header("Authorization") String authorization,
  574. @Url String url);
  575. @DELETE
  576. Observable<GenericOverall> rejectInvitation(@Header("Authorization") String authorization,
  577. @Url String url);
  578. @GET
  579. Observable<TalkBanOverall> listBans(@Header("Authorization") String authorization,
  580. @Url String url);
  581. @FormUrlEncoded
  582. @POST
  583. Observable<TalkBan> banActor(@Header("Authorization") String authorization,
  584. @Url String url,
  585. @Field("actorType") String actorType,
  586. @Field("actorId") String actorId,
  587. @Field("internalNote") String internalNote);
  588. @DELETE
  589. Observable<GenericOverall> unbanActor(@Header("Authorization") String authorization,
  590. @Url String url);
  591. }