@sendbird/sendbird-platform-sdk-typescript 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/.env.test +2 -0
  2. package/.openapi-generator/FILES +158 -0
  3. package/.openapi-generator/VERSION +1 -0
  4. package/.openapi-generator-ignore +23 -0
  5. package/AnnouncementApi.md +100 -0
  6. package/BotApi.md +401 -0
  7. package/CHANGELOG +83 -0
  8. package/GroupChannelApi.md +1429 -0
  9. package/MessageApi.md +826 -0
  10. package/MetadataApi.md +274 -0
  11. package/ModerationApi.md +338 -0
  12. package/OpenChannelApi.md +540 -0
  13. package/PinAMessageApi.md +73 -0
  14. package/PollApi.md +787 -0
  15. package/PrivacyApi.md +251 -0
  16. package/PushNotificationsApi.md +124 -0
  17. package/README.md +104 -0
  18. package/ReportApi.md +554 -0
  19. package/ScheduledMessageApi.md +524 -0
  20. package/StatisticsApi.md +125 -0
  21. package/UserApi.md +1868 -0
  22. package/WebhookApi.md +132 -0
  23. package/apis/AnnouncementApi.ts +96 -0
  24. package/apis/BotApi.ts +471 -0
  25. package/apis/GroupChannelApi.ts +1865 -0
  26. package/apis/MessageApi.ts +1150 -0
  27. package/apis/MetadataApi.ts +365 -0
  28. package/apis/ModerationApi.ts +449 -0
  29. package/apis/OpenChannelApi.ts +676 -0
  30. package/apis/StatisticsApi.ts +155 -0
  31. package/apis/UserApi.ts +2454 -0
  32. package/apis/baseapi.ts +37 -0
  33. package/apis/exception.ts +15 -0
  34. package/auth/auth.ts +54 -0
  35. package/catalog-info.yaml +12 -0
  36. package/configuration.ts +66 -0
  37. package/dist/apis/AnnouncementApi.d.ts +11 -0
  38. package/dist/apis/AnnouncementApi.js +54 -0
  39. package/dist/apis/AnnouncementApi.js.map +1 -0
  40. package/dist/apis/BotApi.d.ts +26 -0
  41. package/dist/apis/BotApi.js +237 -0
  42. package/dist/apis/BotApi.js.map +1 -0
  43. package/dist/apis/GroupChannelApi.d.ts +63 -0
  44. package/dist/apis/GroupChannelApi.js +897 -0
  45. package/dist/apis/GroupChannelApi.js.map +1 -0
  46. package/dist/apis/MessageApi.d.ts +40 -0
  47. package/dist/apis/MessageApi.js +562 -0
  48. package/dist/apis/MessageApi.js.map +1 -0
  49. package/dist/apis/MetadataApi.d.ts +18 -0
  50. package/dist/apis/MetadataApi.js +186 -0
  51. package/dist/apis/MetadataApi.js.map +1 -0
  52. package/dist/apis/ModerationApi.d.ts +24 -0
  53. package/dist/apis/ModerationApi.js +224 -0
  54. package/dist/apis/ModerationApi.js.map +1 -0
  55. package/dist/apis/OpenChannelApi.d.ts +29 -0
  56. package/dist/apis/OpenChannelApi.js +335 -0
  57. package/dist/apis/OpenChannelApi.js.map +1 -0
  58. package/dist/apis/StatisticsApi.d.ts +13 -0
  59. package/dist/apis/StatisticsApi.js +83 -0
  60. package/dist/apis/StatisticsApi.js.map +1 -0
  61. package/dist/apis/UserApi.d.ts +92 -0
  62. package/dist/apis/UserApi.js +1185 -0
  63. package/dist/apis/UserApi.js.map +1 -0
  64. package/dist/apis/baseapi.d.ts +18 -0
  65. package/dist/apis/baseapi.js +22 -0
  66. package/dist/apis/baseapi.js.map +1 -0
  67. package/dist/apis/exception.d.ts +10 -0
  68. package/dist/apis/exception.js +10 -0
  69. package/dist/apis/exception.js.map +1 -0
  70. package/dist/auth/auth.d.ts +26 -0
  71. package/dist/auth/auth.js +9 -0
  72. package/dist/auth/auth.js.map +1 -0
  73. package/dist/configuration.d.ts +18 -0
  74. package/dist/configuration.js +17 -0
  75. package/dist/configuration.js.map +1 -0
  76. package/dist/http/http.d.ts +83 -0
  77. package/dist/http/http.js +145 -0
  78. package/dist/http/http.js.map +1 -0
  79. package/dist/http/isomorphic-fetch.d.ts +5 -0
  80. package/dist/http/isomorphic-fetch.js +27 -0
  81. package/dist/http/isomorphic-fetch.js.map +1 -0
  82. package/dist/index.d.ts +10 -0
  83. package/dist/index.js +9 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/jest.config.d.ts +3 -0
  86. package/dist/jest.config.js +9 -0
  87. package/dist/jest.config.js.map +1 -0
  88. package/dist/jest.setup.d.ts +1 -0
  89. package/dist/jest.setup.js +3 -0
  90. package/dist/jest.setup.js.map +1 -0
  91. package/dist/middleware.d.ts +16 -0
  92. package/dist/middleware.js +13 -0
  93. package/dist/middleware.js.map +1 -0
  94. package/dist/models/AcceptAnInvitationRequest.d.ts +18 -0
  95. package/dist/models/AcceptAnInvitationRequest.js +23 -0
  96. package/dist/models/AcceptAnInvitationRequest.js.map +1 -0
  97. package/dist/models/AddARegistrationOrDeviceTokenRequest.d.ts +19 -0
  98. package/dist/models/AddARegistrationOrDeviceTokenRequest.js +29 -0
  99. package/dist/models/AddARegistrationOrDeviceTokenRequest.js.map +1 -0
  100. package/dist/models/AddARegistrationOrDeviceTokenResponse.d.ts +20 -0
  101. package/dist/models/AddARegistrationOrDeviceTokenResponse.js +29 -0
  102. package/dist/models/AddARegistrationOrDeviceTokenResponse.js.map +1 -0
  103. package/dist/models/AddExtraDataToAMessageRequest.d.ts +18 -0
  104. package/dist/models/AddExtraDataToAMessageRequest.js +17 -0
  105. package/dist/models/AddExtraDataToAMessageRequest.js.map +1 -0
  106. package/dist/models/AddExtraDataToAMessageResponse.d.ts +18 -0
  107. package/dist/models/AddExtraDataToAMessageResponse.js +17 -0
  108. package/dist/models/AddExtraDataToAMessageResponse.js.map +1 -0
  109. package/dist/models/BlockAUserRequest.d.ts +18 -0
  110. package/dist/models/BlockAUserRequest.js +23 -0
  111. package/dist/models/BlockAUserRequest.js.map +1 -0
  112. package/dist/models/BlockAUserResponse.d.ts +19 -0
  113. package/dist/models/BlockAUserResponse.js +23 -0
  114. package/dist/models/BlockAUserResponse.js.map +1 -0
  115. package/dist/models/CheckIfMemberResponse.d.ts +19 -0
  116. package/dist/models/CheckIfMemberResponse.js +23 -0
  117. package/dist/models/CheckIfMemberResponse.js.map +1 -0
  118. package/dist/models/ChooseAPushNotificationContentTemplateRequest.d.ts +18 -0
  119. package/dist/models/ChooseAPushNotificationContentTemplateRequest.js +17 -0
  120. package/dist/models/ChooseAPushNotificationContentTemplateRequest.js.map +1 -0
  121. package/dist/models/ChooseAPushNotificationContentTemplateResponse.d.ts +17 -0
  122. package/dist/models/ChooseAPushNotificationContentTemplateResponse.js +17 -0
  123. package/dist/models/ChooseAPushNotificationContentTemplateResponse.js.map +1 -0
  124. package/dist/models/CreateABotRequest.d.ts +25 -0
  125. package/dist/models/CreateABotRequest.js +65 -0
  126. package/dist/models/CreateABotRequest.js.map +1 -0
  127. package/dist/models/CreateABotResponse.d.ts +26 -0
  128. package/dist/models/CreateABotResponse.js +59 -0
  129. package/dist/models/CreateABotResponse.js.map +1 -0
  130. package/dist/models/CreateABotResponseBot.d.ts +25 -0
  131. package/dist/models/CreateABotResponseBot.js +65 -0
  132. package/dist/models/CreateABotResponseBot.js.map +1 -0
  133. package/dist/models/CreateABotResponseBotStyle.d.ts +21 -0
  134. package/dist/models/CreateABotResponseBotStyle.js +35 -0
  135. package/dist/models/CreateABotResponseBotStyle.js.map +1 -0
  136. package/dist/models/CreateAChannelMetadataRequest.d.ts +18 -0
  137. package/dist/models/CreateAChannelMetadataRequest.js +23 -0
  138. package/dist/models/CreateAChannelMetadataRequest.js.map +1 -0
  139. package/dist/models/CreateAChannelMetadataResponse.d.ts +18 -0
  140. package/dist/models/CreateAChannelMetadataResponse.js +23 -0
  141. package/dist/models/CreateAChannelMetadataResponse.js.map +1 -0
  142. package/dist/models/CreateAGroupChannelRequest.d.ts +37 -0
  143. package/dist/models/CreateAGroupChannelRequest.js +125 -0
  144. package/dist/models/CreateAGroupChannelRequest.js.map +1 -0
  145. package/dist/models/CreateAUserRequest.d.ts +24 -0
  146. package/dist/models/CreateAUserRequest.js +53 -0
  147. package/dist/models/CreateAUserRequest.js.map +1 -0
  148. package/dist/models/CreateAnOpenChannelRequest.d.ts +26 -0
  149. package/dist/models/CreateAnOpenChannelRequest.js +65 -0
  150. package/dist/models/CreateAnOpenChannelRequest.js.map +1 -0
  151. package/dist/models/CreateUserTokenRequest.d.ts +17 -0
  152. package/dist/models/CreateUserTokenRequest.js +17 -0
  153. package/dist/models/CreateUserTokenRequest.js.map +1 -0
  154. package/dist/models/CreateUserTokenResponse.d.ts +18 -0
  155. package/dist/models/CreateUserTokenResponse.js +23 -0
  156. package/dist/models/CreateUserTokenResponse.js.map +1 -0
  157. package/dist/models/FreezeAGroupChannelRequest.d.ts +17 -0
  158. package/dist/models/FreezeAGroupChannelRequest.js +17 -0
  159. package/dist/models/FreezeAGroupChannelRequest.js.map +1 -0
  160. package/dist/models/FreezeAnOpenChannelRequest.d.ts +17 -0
  161. package/dist/models/FreezeAnOpenChannelRequest.js +17 -0
  162. package/dist/models/FreezeAnOpenChannelRequest.js.map +1 -0
  163. package/dist/models/GetAGroupChannelResponse.d.ts +75 -0
  164. package/dist/models/GetAGroupChannelResponse.js +287 -0
  165. package/dist/models/GetAGroupChannelResponse.js.map +1 -0
  166. package/dist/models/GetAGroupChannelResponseAllOf.d.ts +18 -0
  167. package/dist/models/GetAGroupChannelResponseAllOf.js +17 -0
  168. package/dist/models/GetAGroupChannelResponseAllOf.js.map +1 -0
  169. package/dist/models/GetChannelInvitationPreferenceResponse.d.ts +17 -0
  170. package/dist/models/GetChannelInvitationPreferenceResponse.js +17 -0
  171. package/dist/models/GetChannelInvitationPreferenceResponse.js.map +1 -0
  172. package/dist/models/GetTotalNumberOfMessagesInAChannelResponse.d.ts +17 -0
  173. package/dist/models/GetTotalNumberOfMessagesInAChannelResponse.js +17 -0
  174. package/dist/models/GetTotalNumberOfMessagesInAChannelResponse.js.map +1 -0
  175. package/dist/models/GroupChannelListMembersResponse.d.ts +19 -0
  176. package/dist/models/GroupChannelListMembersResponse.js +23 -0
  177. package/dist/models/GroupChannelListMembersResponse.js.map +1 -0
  178. package/dist/models/GroupChatListChannelsResponse.d.ts +20 -0
  179. package/dist/models/GroupChatListChannelsResponse.js +29 -0
  180. package/dist/models/GroupChatListChannelsResponse.js.map +1 -0
  181. package/dist/models/HideAChannelRequest.d.ts +20 -0
  182. package/dist/models/HideAChannelRequest.js +35 -0
  183. package/dist/models/HideAChannelRequest.js.map +1 -0
  184. package/dist/models/InviteAsMembersRequest.d.ts +20 -0
  185. package/dist/models/InviteAsMembersRequest.js +35 -0
  186. package/dist/models/InviteAsMembersRequest.js.map +1 -0
  187. package/dist/models/InviteAsMembersResponse.d.ts +75 -0
  188. package/dist/models/InviteAsMembersResponse.js +287 -0
  189. package/dist/models/InviteAsMembersResponse.js.map +1 -0
  190. package/dist/models/InviteAsMembersResponseAllOf.d.ts +18 -0
  191. package/dist/models/InviteAsMembersResponseAllOf.js +17 -0
  192. package/dist/models/InviteAsMembersResponseAllOf.js.map +1 -0
  193. package/dist/models/JoinAChannelRequest.d.ts +18 -0
  194. package/dist/models/JoinAChannelRequest.js +23 -0
  195. package/dist/models/JoinAChannelRequest.js.map +1 -0
  196. package/dist/models/JoinChannelsRequest.d.ts +17 -0
  197. package/dist/models/JoinChannelsRequest.js +17 -0
  198. package/dist/models/JoinChannelsRequest.js.map +1 -0
  199. package/dist/models/LeaveAChannelRequest.d.ts +21 -0
  200. package/dist/models/LeaveAChannelRequest.js +35 -0
  201. package/dist/models/LeaveAChannelRequest.js.map +1 -0
  202. package/dist/models/LeaveMyGroupChannelsRequest.d.ts +17 -0
  203. package/dist/models/LeaveMyGroupChannelsRequest.js +17 -0
  204. package/dist/models/LeaveMyGroupChannelsRequest.js.map +1 -0
  205. package/dist/models/ListBlockedUsersResponse.d.ts +19 -0
  206. package/dist/models/ListBlockedUsersResponse.js +23 -0
  207. package/dist/models/ListBlockedUsersResponse.js.map +1 -0
  208. package/dist/models/ListBotsResponse.d.ts +19 -0
  209. package/dist/models/ListBotsResponse.js +23 -0
  210. package/dist/models/ListBotsResponse.js.map +1 -0
  211. package/dist/models/ListBotsResponseBotsInner.d.ts +32 -0
  212. package/dist/models/ListBotsResponseBotsInner.js +77 -0
  213. package/dist/models/ListBotsResponseBotsInner.js.map +1 -0
  214. package/dist/models/ListBotsResponseBotsInnerAi.d.ts +28 -0
  215. package/dist/models/ListBotsResponseBotsInnerAi.js +83 -0
  216. package/dist/models/ListBotsResponseBotsInnerAi.js.map +1 -0
  217. package/dist/models/ListBotsResponseBotsInnerBot.d.ts +24 -0
  218. package/dist/models/ListBotsResponseBotsInnerBot.js +59 -0
  219. package/dist/models/ListBotsResponseBotsInnerBot.js.map +1 -0
  220. package/dist/models/ListBotsResponseBotsInnerBotStyle.d.ts +21 -0
  221. package/dist/models/ListBotsResponseBotsInnerBotStyle.js +35 -0
  222. package/dist/models/ListBotsResponseBotsInnerBotStyle.js.map +1 -0
  223. package/dist/models/ListBotsResponseBotsInnerBotStyleColor.d.ts +19 -0
  224. package/dist/models/ListBotsResponseBotsInnerBotStyleColor.js +29 -0
  225. package/dist/models/ListBotsResponseBotsInnerBotStyleColor.js.map +1 -0
  226. package/dist/models/ListBotsResponseBotsInnerFirstMessagesInner.d.ts +19 -0
  227. package/dist/models/ListBotsResponseBotsInnerFirstMessagesInner.js +23 -0
  228. package/dist/models/ListBotsResponseBotsInnerFirstMessagesInner.js.map +1 -0
  229. package/dist/models/ListBotsResponseBotsInnerFirstMessagesInnerData.d.ts +17 -0
  230. package/dist/models/ListBotsResponseBotsInnerFirstMessagesInnerData.js +17 -0
  231. package/dist/models/ListBotsResponseBotsInnerFirstMessagesInnerData.js.map +1 -0
  232. package/dist/models/ListBotsResponseBotsInnerSafeguard.d.ts +20 -0
  233. package/dist/models/ListBotsResponseBotsInnerSafeguard.js +35 -0
  234. package/dist/models/ListBotsResponseBotsInnerSafeguard.js.map +1 -0
  235. package/dist/models/ListMessagesResponse.d.ts +18 -0
  236. package/dist/models/ListMessagesResponse.js +17 -0
  237. package/dist/models/ListMessagesResponse.js.map +1 -0
  238. package/dist/models/ListMyGroupChannelsResponse.d.ts +20 -0
  239. package/dist/models/ListMyGroupChannelsResponse.js +29 -0
  240. package/dist/models/ListMyGroupChannelsResponse.js.map +1 -0
  241. package/dist/models/ListOpenChannelsResponse.d.ts +20 -0
  242. package/dist/models/ListOpenChannelsResponse.js +29 -0
  243. package/dist/models/ListOpenChannelsResponse.js.map +1 -0
  244. package/dist/models/ListOperatorsResponse.d.ts +19 -0
  245. package/dist/models/ListOperatorsResponse.js +23 -0
  246. package/dist/models/ListOperatorsResponse.js.map +1 -0
  247. package/dist/models/ListRegistrationOrDeviceTokensResponse.d.ts +21 -0
  248. package/dist/models/ListRegistrationOrDeviceTokensResponse.js +35 -0
  249. package/dist/models/ListRegistrationOrDeviceTokensResponse.js.map +1 -0
  250. package/dist/models/ListUsersResponse.d.ts +19 -0
  251. package/dist/models/ListUsersResponse.js +23 -0
  252. package/dist/models/ListUsersResponse.js.map +1 -0
  253. package/dist/models/MarkAllMessagesAsReadRequest.d.ts +17 -0
  254. package/dist/models/MarkAllMessagesAsReadRequest.js +17 -0
  255. package/dist/models/MarkAllMessagesAsReadRequest.js.map +1 -0
  256. package/dist/models/MarkChannelMessagesAsReadRequest.d.ts +17 -0
  257. package/dist/models/MarkChannelMessagesAsReadRequest.js +17 -0
  258. package/dist/models/MarkChannelMessagesAsReadRequest.js.map +1 -0
  259. package/dist/models/MigrateMessagesAdminMessageRequest.d.ts +26 -0
  260. package/dist/models/MigrateMessagesAdminMessageRequest.js +65 -0
  261. package/dist/models/MigrateMessagesAdminMessageRequest.js.map +1 -0
  262. package/dist/models/MigrateMessagesFileMessageRequest.d.ts +32 -0
  263. package/dist/models/MigrateMessagesFileMessageRequest.js +95 -0
  264. package/dist/models/MigrateMessagesFileMessageRequest.js.map +1 -0
  265. package/dist/models/MigrateMessagesFileMessageRequestThumbnailsInner.d.ts +16 -0
  266. package/dist/models/MigrateMessagesFileMessageRequestThumbnailsInner.js +10 -0
  267. package/dist/models/MigrateMessagesFileMessageRequestThumbnailsInner.js.map +1 -0
  268. package/dist/models/MigrateMessagesRequest.d.ts +20 -0
  269. package/dist/models/MigrateMessagesRequest.js +29 -0
  270. package/dist/models/MigrateMessagesRequest.js.map +1 -0
  271. package/dist/models/MigrateMessagesRequestMessagesInner.d.ts +35 -0
  272. package/dist/models/MigrateMessagesRequestMessagesInner.js +113 -0
  273. package/dist/models/MigrateMessagesRequestMessagesInner.js.map +1 -0
  274. package/dist/models/MigrateMessagesTextMessageRequest.d.ts +26 -0
  275. package/dist/models/MigrateMessagesTextMessageRequest.js +65 -0
  276. package/dist/models/MigrateMessagesTextMessageRequest.js.map +1 -0
  277. package/dist/models/ObjectSerializer.d.ts +128 -0
  278. package/dist/models/ObjectSerializer.js +576 -0
  279. package/dist/models/ObjectSerializer.js.map +1 -0
  280. package/dist/models/RegisterOperatorsToAGroupChannelRequest.d.ts +17 -0
  281. package/dist/models/RegisterOperatorsToAGroupChannelRequest.js +17 -0
  282. package/dist/models/RegisterOperatorsToAGroupChannelRequest.js.map +1 -0
  283. package/dist/models/RemoveARegistrationOrDeviceTokenResponse.d.ts +19 -0
  284. package/dist/models/RemoveARegistrationOrDeviceTokenResponse.js +23 -0
  285. package/dist/models/RemoveARegistrationOrDeviceTokenResponse.js.map +1 -0
  286. package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringASpecificTokenResponse.d.ts +19 -0
  287. package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringASpecificTokenResponse.js +23 -0
  288. package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringASpecificTokenResponse.js.map +1 -0
  289. package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringAllDeviceTokensResponse.d.ts +19 -0
  290. package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringAllDeviceTokensResponse.js +23 -0
  291. package/dist/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringAllDeviceTokensResponse.js.map +1 -0
  292. package/dist/models/RemoveAllRegistrationOrDeviceTokenResponse.d.ts +19 -0
  293. package/dist/models/RemoveAllRegistrationOrDeviceTokenResponse.js +23 -0
  294. package/dist/models/RemoveAllRegistrationOrDeviceTokenResponse.js.map +1 -0
  295. package/dist/models/ResetChatHistoryRequest.d.ts +18 -0
  296. package/dist/models/ResetChatHistoryRequest.js +23 -0
  297. package/dist/models/ResetChatHistoryRequest.js.map +1 -0
  298. package/dist/models/ResetChatHistoryResponse.d.ts +17 -0
  299. package/dist/models/ResetChatHistoryResponse.js +17 -0
  300. package/dist/models/ResetChatHistoryResponse.js.map +1 -0
  301. package/dist/models/ScheduleAnAnnouncementRequest.d.ts +36 -0
  302. package/dist/models/ScheduleAnAnnouncementRequest.js +119 -0
  303. package/dist/models/ScheduleAnAnnouncementRequest.js.map +1 -0
  304. package/dist/models/ScheduleAnAnnouncementRequestCreateChannelOptions.d.ts +21 -0
  305. package/dist/models/ScheduleAnAnnouncementRequestCreateChannelOptions.js +41 -0
  306. package/dist/models/ScheduleAnAnnouncementRequestCreateChannelOptions.js.map +1 -0
  307. package/dist/models/ScheduleAnAnnouncementRequestMessage.d.ts +21 -0
  308. package/dist/models/ScheduleAnAnnouncementRequestMessage.js +41 -0
  309. package/dist/models/ScheduleAnAnnouncementRequestMessage.js.map +1 -0
  310. package/dist/models/ScheduleAnAnnouncementResponse.d.ts +42 -0
  311. package/dist/models/ScheduleAnAnnouncementResponse.js +155 -0
  312. package/dist/models/ScheduleAnAnnouncementResponse.js.map +1 -0
  313. package/dist/models/ScheduleAnAnnouncementResponseMessage.d.ts +22 -0
  314. package/dist/models/ScheduleAnAnnouncementResponseMessage.js +47 -0
  315. package/dist/models/ScheduleAnAnnouncementResponseMessage.js.map +1 -0
  316. package/dist/models/SendABotMessageRequest.d.ts +27 -0
  317. package/dist/models/SendABotMessageRequest.js +71 -0
  318. package/dist/models/SendABotMessageRequest.js.map +1 -0
  319. package/dist/models/SendAMessageRequest.d.ts +46 -0
  320. package/dist/models/SendAMessageRequest.js +161 -0
  321. package/dist/models/SendAMessageRequest.js.map +1 -0
  322. package/dist/models/SendAdminMessageRequestBody.d.ts +32 -0
  323. package/dist/models/SendAdminMessageRequestBody.js +83 -0
  324. package/dist/models/SendAdminMessageRequestBody.js.map +1 -0
  325. package/dist/models/SendFileMessageRequestBody.d.ts +41 -0
  326. package/dist/models/SendFileMessageRequestBody.js +137 -0
  327. package/dist/models/SendFileMessageRequestBody.js.map +1 -0
  328. package/dist/models/SendTextMessageRequestBody.d.ts +39 -0
  329. package/dist/models/SendTextMessageRequestBody.js +125 -0
  330. package/dist/models/SendTextMessageRequestBody.js.map +1 -0
  331. package/dist/models/SendTextMessageRequestBodyPushMessageTemplate.d.ts +18 -0
  332. package/dist/models/SendTextMessageRequestBodyPushMessageTemplate.js +23 -0
  333. package/dist/models/SendTextMessageRequestBodyPushMessageTemplate.js.map +1 -0
  334. package/dist/models/SendTextMessageRequestBodyPushMessageTemplateOneOf.d.ts +18 -0
  335. package/dist/models/SendTextMessageRequestBodyPushMessageTemplateOneOf.js +23 -0
  336. package/dist/models/SendTextMessageRequestBodyPushMessageTemplateOneOf.js.map +1 -0
  337. package/dist/models/SendbirdBasicUserInfo.d.ts +25 -0
  338. package/dist/models/SendbirdBasicUserInfo.js +59 -0
  339. package/dist/models/SendbirdBasicUserInfo.js.map +1 -0
  340. package/dist/models/SendbirdDisappearingMessage.d.ts +18 -0
  341. package/dist/models/SendbirdDisappearingMessage.js +23 -0
  342. package/dist/models/SendbirdDisappearingMessage.js.map +1 -0
  343. package/dist/models/SendbirdExtendedMessagePayload.d.ts +18 -0
  344. package/dist/models/SendbirdExtendedMessagePayload.js +23 -0
  345. package/dist/models/SendbirdExtendedMessagePayload.js.map +1 -0
  346. package/dist/models/SendbirdFile.d.ts +23 -0
  347. package/dist/models/SendbirdFile.js +47 -0
  348. package/dist/models/SendbirdFile.js.map +1 -0
  349. package/dist/models/SendbirdGroupChannel.d.ts +73 -0
  350. package/dist/models/SendbirdGroupChannel.js +281 -0
  351. package/dist/models/SendbirdGroupChannel.js.map +1 -0
  352. package/dist/models/SendbirdGroupChannelDetail.d.ts +60 -0
  353. package/dist/models/SendbirdGroupChannelDetail.js +209 -0
  354. package/dist/models/SendbirdGroupChannelDetail.js.map +1 -0
  355. package/dist/models/SendbirdGroupChannelDetailChannel.d.ts +24 -0
  356. package/dist/models/SendbirdGroupChannelDetailChannel.js +59 -0
  357. package/dist/models/SendbirdGroupChannelDetailChannel.js.map +1 -0
  358. package/dist/models/SendbirdMember.d.ts +41 -0
  359. package/dist/models/SendbirdMember.js +143 -0
  360. package/dist/models/SendbirdMember.js.map +1 -0
  361. package/dist/models/SendbirdMessageResponse.d.ts +53 -0
  362. package/dist/models/SendbirdMessageResponse.js +191 -0
  363. package/dist/models/SendbirdMessageResponse.js.map +1 -0
  364. package/dist/models/SendbirdMessageResponseMessageEvents.d.ts +20 -0
  365. package/dist/models/SendbirdMessageResponseMessageEvents.js +35 -0
  366. package/dist/models/SendbirdMessageResponseMessageEvents.js.map +1 -0
  367. package/dist/models/SendbirdOpenChannel.d.ts +30 -0
  368. package/dist/models/SendbirdOpenChannel.js +89 -0
  369. package/dist/models/SendbirdOpenChannel.js.map +1 -0
  370. package/dist/models/SendbirdParentMessageInfo.d.ts +25 -0
  371. package/dist/models/SendbirdParentMessageInfo.js +53 -0
  372. package/dist/models/SendbirdParentMessageInfo.js.map +1 -0
  373. package/dist/models/SendbirdPushTriggerOption.d.ts +1 -0
  374. package/dist/models/SendbirdPushTriggerOption.js +2 -0
  375. package/dist/models/SendbirdPushTriggerOption.js.map +1 -0
  376. package/dist/models/SendbirdReaction.d.ts +19 -0
  377. package/dist/models/SendbirdReaction.js +29 -0
  378. package/dist/models/SendbirdReaction.js.map +1 -0
  379. package/dist/models/SendbirdSmsFallback.d.ts +18 -0
  380. package/dist/models/SendbirdSmsFallback.js +23 -0
  381. package/dist/models/SendbirdSmsFallback.js.map +1 -0
  382. package/dist/models/SendbirdSortedMetaarrayInner.d.ts +18 -0
  383. package/dist/models/SendbirdSortedMetaarrayInner.js +23 -0
  384. package/dist/models/SendbirdSortedMetaarrayInner.js.map +1 -0
  385. package/dist/models/SendbirdThumbnail.d.ts +22 -0
  386. package/dist/models/SendbirdThumbnail.js +47 -0
  387. package/dist/models/SendbirdThumbnail.js.map +1 -0
  388. package/dist/models/SendbirdUser.d.ts +39 -0
  389. package/dist/models/SendbirdUser.js +143 -0
  390. package/dist/models/SendbirdUser.js.map +1 -0
  391. package/dist/models/StartTypingIndicatorsRequest.d.ts +17 -0
  392. package/dist/models/StartTypingIndicatorsRequest.js +17 -0
  393. package/dist/models/StartTypingIndicatorsRequest.js.map +1 -0
  394. package/dist/models/UpdateAChannelMetadataRequest.d.ts +18 -0
  395. package/dist/models/UpdateAChannelMetadataRequest.js +23 -0
  396. package/dist/models/UpdateAChannelMetadataRequest.js.map +1 -0
  397. package/dist/models/UpdateAGroupChannelRequest.d.ts +27 -0
  398. package/dist/models/UpdateAGroupChannelRequest.js +71 -0
  399. package/dist/models/UpdateAGroupChannelRequest.js.map +1 -0
  400. package/dist/models/UpdateAMessageRequest.d.ts +24 -0
  401. package/dist/models/UpdateAMessageRequest.js +53 -0
  402. package/dist/models/UpdateAMessageRequest.js.map +1 -0
  403. package/dist/models/UpdateAUserRequest.d.ts +26 -0
  404. package/dist/models/UpdateAUserRequest.js +65 -0
  405. package/dist/models/UpdateAUserRequest.js.map +1 -0
  406. package/dist/models/UpdateAnOpenChannelRequest.d.ts +23 -0
  407. package/dist/models/UpdateAnOpenChannelRequest.js +47 -0
  408. package/dist/models/UpdateAnOpenChannelRequest.js.map +1 -0
  409. package/dist/models/UpdateChannelInvitationPreferenceRequest.d.ts +17 -0
  410. package/dist/models/UpdateChannelInvitationPreferenceRequest.js +17 -0
  411. package/dist/models/UpdateChannelInvitationPreferenceRequest.js.map +1 -0
  412. package/dist/models/UpdateChannelInvitationPreferenceResponse.d.ts +17 -0
  413. package/dist/models/UpdateChannelInvitationPreferenceResponse.js +17 -0
  414. package/dist/models/UpdateChannelInvitationPreferenceResponse.js.map +1 -0
  415. package/dist/models/UpdateCountPreferenceOfAChannelRequest.d.ts +18 -0
  416. package/dist/models/UpdateCountPreferenceOfAChannelRequest.js +17 -0
  417. package/dist/models/UpdateCountPreferenceOfAChannelRequest.js.map +1 -0
  418. package/dist/models/UpdateCountPreferenceOfChannelByUrlResponse.d.ts +18 -0
  419. package/dist/models/UpdateCountPreferenceOfChannelByUrlResponse.js +17 -0
  420. package/dist/models/UpdateCountPreferenceOfChannelByUrlResponse.js.map +1 -0
  421. package/dist/models/UpdateExtraDataInAMessageRequest.d.ts +20 -0
  422. package/dist/models/UpdateExtraDataInAMessageRequest.js +29 -0
  423. package/dist/models/UpdateExtraDataInAMessageRequest.js.map +1 -0
  424. package/dist/models/UpdateExtraDataInAMessageResponse.d.ts +18 -0
  425. package/dist/models/UpdateExtraDataInAMessageResponse.js +17 -0
  426. package/dist/models/UpdateExtraDataInAMessageResponse.js.map +1 -0
  427. package/dist/models/UpdatePushPreferencesForAChannelRequest.d.ts +19 -0
  428. package/dist/models/UpdatePushPreferencesForAChannelRequest.js +23 -0
  429. package/dist/models/UpdatePushPreferencesForAChannelRequest.js.map +1 -0
  430. package/dist/models/UpdatePushPreferencesForAChannelResponse.d.ts +20 -0
  431. package/dist/models/UpdatePushPreferencesForAChannelResponse.js +29 -0
  432. package/dist/models/UpdatePushPreferencesForAChannelResponse.js.map +1 -0
  433. package/dist/models/UpdatePushPreferencesRequest.d.ts +31 -0
  434. package/dist/models/UpdatePushPreferencesRequest.js +95 -0
  435. package/dist/models/UpdatePushPreferencesRequest.js.map +1 -0
  436. package/dist/models/UpdatePushPreferencesResponse.d.ts +31 -0
  437. package/dist/models/UpdatePushPreferencesResponse.js +95 -0
  438. package/dist/models/UpdatePushPreferencesResponse.js.map +1 -0
  439. package/dist/models/ViewCountPreferenceOfAChannelResponse.d.ts +18 -0
  440. package/dist/models/ViewCountPreferenceOfAChannelResponse.js +17 -0
  441. package/dist/models/ViewCountPreferenceOfAChannelResponse.js.map +1 -0
  442. package/dist/models/ViewNumberOfChannelsWithUnreadMessagesResponse.d.ts +17 -0
  443. package/dist/models/ViewNumberOfChannelsWithUnreadMessagesResponse.js +17 -0
  444. package/dist/models/ViewNumberOfChannelsWithUnreadMessagesResponse.js.map +1 -0
  445. package/dist/models/ViewNumberOfDailyActiveUsersResponse.d.ts +17 -0
  446. package/dist/models/ViewNumberOfDailyActiveUsersResponse.js +17 -0
  447. package/dist/models/ViewNumberOfDailyActiveUsersResponse.js.map +1 -0
  448. package/dist/models/ViewNumberOfMonthlyActiveUsersResponse.d.ts +17 -0
  449. package/dist/models/ViewNumberOfMonthlyActiveUsersResponse.js +17 -0
  450. package/dist/models/ViewNumberOfMonthlyActiveUsersResponse.js.map +1 -0
  451. package/dist/models/ViewNumberOfUnreadMessagesResponse.d.ts +17 -0
  452. package/dist/models/ViewNumberOfUnreadMessagesResponse.js +17 -0
  453. package/dist/models/ViewNumberOfUnreadMessagesResponse.js.map +1 -0
  454. package/dist/models/ViewPushPreferencesForAChannelResponse.d.ts +20 -0
  455. package/dist/models/ViewPushPreferencesForAChannelResponse.js +29 -0
  456. package/dist/models/ViewPushPreferencesForAChannelResponse.js.map +1 -0
  457. package/dist/models/ViewPushPreferencesResponse.d.ts +31 -0
  458. package/dist/models/ViewPushPreferencesResponse.js +95 -0
  459. package/dist/models/ViewPushPreferencesResponse.js.map +1 -0
  460. package/dist/models/ViewWhoOwnsARegistrationOrDeviceTokenResponseInner.d.ts +17 -0
  461. package/dist/models/ViewWhoOwnsARegistrationOrDeviceTokenResponseInner.js +17 -0
  462. package/dist/models/ViewWhoOwnsARegistrationOrDeviceTokenResponseInner.js.map +1 -0
  463. package/dist/models/all.d.ts +119 -0
  464. package/dist/models/all.js +120 -0
  465. package/dist/models/all.js.map +1 -0
  466. package/dist/rxjsStub.d.ts +10 -0
  467. package/dist/rxjsStub.js +24 -0
  468. package/dist/rxjsStub.js.map +1 -0
  469. package/dist/servers.d.ts +21 -0
  470. package/dist/servers.js +27 -0
  471. package/dist/servers.js.map +1 -0
  472. package/dist/tests/integration/bot.test.d.ts +1 -0
  473. package/dist/tests/integration/bot.test.js +153 -0
  474. package/dist/tests/integration/bot.test.js.map +1 -0
  475. package/dist/tests/integration/constants.d.ts +5 -0
  476. package/dist/tests/integration/constants.js +9 -0
  477. package/dist/tests/integration/constants.js.map +1 -0
  478. package/dist/tests/integration/groupChannel.test.d.ts +1 -0
  479. package/dist/tests/integration/groupChannel.test.js +1238 -0
  480. package/dist/tests/integration/groupChannel.test.js.map +1 -0
  481. package/dist/tests/integration/helper.d.ts +1 -0
  482. package/dist/tests/integration/helper.js +4 -0
  483. package/dist/tests/integration/helper.js.map +1 -0
  484. package/dist/tests/integration/metadata.test.d.ts +1 -0
  485. package/dist/tests/integration/metadata.test.js +17 -0
  486. package/dist/tests/integration/metadata.test.js.map +1 -0
  487. package/dist/tests/integration/moderation.test.d.ts +1 -0
  488. package/dist/tests/integration/moderation.test.js +142 -0
  489. package/dist/tests/integration/moderation.test.js.map +1 -0
  490. package/dist/tests/integration/openChannel.test.d.ts +1 -0
  491. package/dist/tests/integration/openChannel.test.js +194 -0
  492. package/dist/tests/integration/openChannel.test.js.map +1 -0
  493. package/dist/tests/integration/statistics.test.d.ts +1 -0
  494. package/dist/tests/integration/statistics.test.js +43 -0
  495. package/dist/tests/integration/statistics.test.js.map +1 -0
  496. package/dist/tests/integration/user.test.d.ts +1 -0
  497. package/dist/tests/integration/user.test.js +444 -0
  498. package/dist/tests/integration/user.test.js.map +1 -0
  499. package/dist/types/ObjectParamAPI.d.ts +772 -0
  500. package/dist/types/ObjectParamAPI.js +304 -0
  501. package/dist/types/ObjectParamAPI.js.map +1 -0
  502. package/dist/types/ObservableAPI.d.ts +228 -0
  503. package/dist/types/ObservableAPI.js +1320 -0
  504. package/dist/types/ObservableAPI.js.map +1 -0
  505. package/dist/types/PromiseAPI.d.ts +209 -0
  506. package/dist/types/PromiseAPI.js +387 -0
  507. package/dist/types/PromiseAPI.js.map +1 -0
  508. package/dist/util.d.ts +2 -0
  509. package/dist/util.js +24 -0
  510. package/dist/util.js.map +1 -0
  511. package/git_push.sh +51 -0
  512. package/http/http.ts +231 -0
  513. package/http/isomorphic-fetch.ts +32 -0
  514. package/index.ts +12 -0
  515. package/jest.config.ts +11 -0
  516. package/jest.setup.ts +5 -0
  517. package/middleware.ts +66 -0
  518. package/models/AcceptAnInvitationRequest.ts +42 -0
  519. package/models/AddARegistrationOrDeviceTokenRequest.ts +49 -0
  520. package/models/AddARegistrationOrDeviceTokenResponse.ts +50 -0
  521. package/models/AddExtraDataToAMessageRequest.ts +36 -0
  522. package/models/AddExtraDataToAMessageResponse.ts +36 -0
  523. package/models/BlockAUserRequest.ts +45 -0
  524. package/models/BlockAUserResponse.ts +43 -0
  525. package/models/CheckIfMemberResponse.ts +45 -0
  526. package/models/ChooseAPushNotificationContentTemplateRequest.ts +41 -0
  527. package/models/ChooseAPushNotificationContentTemplateResponse.ts +35 -0
  528. package/models/CreateABotRequest.ts +100 -0
  529. package/models/CreateABotResponse.ts +86 -0
  530. package/models/CreateABotResponseBot.ts +91 -0
  531. package/models/CreateABotResponseBotStyle.ts +57 -0
  532. package/models/CreateAChannelMetadataRequest.ts +42 -0
  533. package/models/CreateAChannelMetadataResponse.ts +42 -0
  534. package/models/CreateAGroupChannelRequest.ts +171 -0
  535. package/models/CreateAUserRequest.ts +80 -0
  536. package/models/CreateAnOpenChannelRequest.ts +91 -0
  537. package/models/CreateUserTokenRequest.ts +35 -0
  538. package/models/CreateUserTokenResponse.ts +42 -0
  539. package/models/FreezeAGroupChannelRequest.ts +35 -0
  540. package/models/FreezeAnOpenChannelRequest.ts +38 -0
  541. package/models/GetAGroupChannelResponse.ts +365 -0
  542. package/models/GetAGroupChannelResponseAllOf.ts +36 -0
  543. package/models/GetChannelInvitationPreferenceResponse.ts +35 -0
  544. package/models/GetTotalNumberOfMessagesInAChannelResponse.ts +35 -0
  545. package/models/GroupChannelListMembersResponse.ts +43 -0
  546. package/models/GroupChatListChannelsResponse.ts +50 -0
  547. package/models/HideAChannelRequest.ts +68 -0
  548. package/models/InviteAsMembersRequest.ts +62 -0
  549. package/models/InviteAsMembersResponse.ts +365 -0
  550. package/models/InviteAsMembersResponseAllOf.ts +36 -0
  551. package/models/JoinAChannelRequest.ts +48 -0
  552. package/models/JoinChannelsRequest.ts +35 -0
  553. package/models/LeaveAChannelRequest.ts +71 -0
  554. package/models/LeaveMyGroupChannelsRequest.ts +35 -0
  555. package/models/ListBlockedUsersResponse.ts +43 -0
  556. package/models/ListBotsResponse.ts +43 -0
  557. package/models/ListBotsResponseBotsInner.ts +110 -0
  558. package/models/ListBotsResponseBotsInnerAi.ts +112 -0
  559. package/models/ListBotsResponseBotsInnerBot.ts +84 -0
  560. package/models/ListBotsResponseBotsInnerBotStyle.ts +57 -0
  561. package/models/ListBotsResponseBotsInnerBotStyleColor.ts +49 -0
  562. package/models/ListBotsResponseBotsInnerFirstMessagesInner.ts +43 -0
  563. package/models/ListBotsResponseBotsInnerFirstMessagesInnerData.ts +35 -0
  564. package/models/ListBotsResponseBotsInnerSafeguard.ts +56 -0
  565. package/models/ListMessagesResponse.ts +36 -0
  566. package/models/ListMyGroupChannelsResponse.ts +50 -0
  567. package/models/ListOpenChannelsResponse.ts +50 -0
  568. package/models/ListOperatorsResponse.ts +43 -0
  569. package/models/ListRegistrationOrDeviceTokensResponse.ts +57 -0
  570. package/models/ListUsersResponse.ts +43 -0
  571. package/models/MarkAllMessagesAsReadRequest.ts +38 -0
  572. package/models/MarkChannelMessagesAsReadRequest.ts +35 -0
  573. package/models/MigrateMessagesAdminMessageRequest.ts +94 -0
  574. package/models/MigrateMessagesFileMessageRequest.ts +130 -0
  575. package/models/MigrateMessagesFileMessageRequestThumbnailsInner.ts +29 -0
  576. package/models/MigrateMessagesRequest.ts +50 -0
  577. package/models/MigrateMessagesRequestMessagesInner.ts +154 -0
  578. package/models/MigrateMessagesTextMessageRequest.ts +94 -0
  579. package/models/ObjectSerializer.ts +611 -0
  580. package/models/RegisterOperatorsToAGroupChannelRequest.ts +35 -0
  581. package/models/RemoveARegistrationOrDeviceTokenResponse.ts +43 -0
  582. package/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringASpecificTokenResponse.ts +43 -0
  583. package/models/RemoveARegistrationOrDeviceTokenWhenUnregisteringAllDeviceTokensResponse.ts +43 -0
  584. package/models/RemoveAllRegistrationOrDeviceTokenResponse.ts +43 -0
  585. package/models/ResetChatHistoryRequest.ts +42 -0
  586. package/models/ResetChatHistoryResponse.ts +38 -0
  587. package/models/ScheduleAnAnnouncementRequest.ts +156 -0
  588. package/models/ScheduleAnAnnouncementRequestCreateChannelOptions.ts +63 -0
  589. package/models/ScheduleAnAnnouncementRequestMessage.ts +63 -0
  590. package/models/ScheduleAnAnnouncementResponse.ts +198 -0
  591. package/models/ScheduleAnAnnouncementResponseMessage.ts +70 -0
  592. package/models/SendABotMessageRequest.ts +99 -0
  593. package/models/SendAMessageRequest.ts +219 -0
  594. package/models/SendAdminMessageRequestBody.ts +121 -0
  595. package/models/SendBirdFile.ts +71 -0
  596. package/models/SendBirdGroupChannel.ts +355 -0
  597. package/models/SendBirdMember.ts +187 -0
  598. package/models/SendBirdMessageResponse.ts +245 -0
  599. package/models/SendBirdParentMessageInfo.ts +79 -0
  600. package/models/SendBirdUser.ts +188 -0
  601. package/models/SendFileMessageRequestBody.ts +187 -0
  602. package/models/SendTextMessageRequestBody.ts +170 -0
  603. package/models/SendTextMessageRequestBodyPushMessageTemplate.ts +52 -0
  604. package/models/SendTextMessageRequestBodyPushMessageTemplateOneOf.ts +48 -0
  605. package/models/SendbirdBasicUserInfo.ts +87 -0
  606. package/models/SendbirdDisappearingMessage.ts +42 -0
  607. package/models/SendbirdExtendedMessagePayload.ts +51 -0
  608. package/models/SendbirdGroupChannelDetail.ts +266 -0
  609. package/models/SendbirdGroupChannelDetailChannel.ts +84 -0
  610. package/models/SendbirdMessageResponseMessageEvents.ts +56 -0
  611. package/models/SendbirdOpenChannel.ts +120 -0
  612. package/models/SendbirdPushTriggerOption.ts +15 -0
  613. package/models/SendbirdReaction.ts +49 -0
  614. package/models/SendbirdSmsFallback.ts +42 -0
  615. package/models/SendbirdSortedMetaarrayInner.ts +42 -0
  616. package/models/SendbirdThumbnail.ts +70 -0
  617. package/models/StartTypingIndicatorsRequest.ts +35 -0
  618. package/models/UpdateAChannelMetadataRequest.ts +42 -0
  619. package/models/UpdateAGroupChannelRequest.ts +98 -0
  620. package/models/UpdateAMessageRequest.ts +80 -0
  621. package/models/UpdateAUserRequest.ts +91 -0
  622. package/models/UpdateAnOpenChannelRequest.ts +70 -0
  623. package/models/UpdateChannelInvitationPreferenceRequest.ts +35 -0
  624. package/models/UpdateChannelInvitationPreferenceResponse.ts +35 -0
  625. package/models/UpdateCountPreferenceOfAChannelRequest.ts +38 -0
  626. package/models/UpdateCountPreferenceOfChannelByUrlResponse.ts +38 -0
  627. package/models/UpdateExtraDataInAMessageRequest.ts +50 -0
  628. package/models/UpdateExtraDataInAMessageResponse.ts +36 -0
  629. package/models/UpdatePushPreferencesForAChannelRequest.ts +48 -0
  630. package/models/UpdatePushPreferencesForAChannelResponse.ts +50 -0
  631. package/models/UpdatePushPreferencesRequest.ts +127 -0
  632. package/models/UpdatePushPreferencesResponse.ts +127 -0
  633. package/models/ViewCountPreferenceOfAChannelResponse.ts +38 -0
  634. package/models/ViewNumberOfChannelsWithUnreadMessagesResponse.ts +35 -0
  635. package/models/ViewNumberOfDailyActiveUsersResponse.ts +35 -0
  636. package/models/ViewNumberOfMonthlyActiveUsersResponse.ts +35 -0
  637. package/models/ViewNumberOfUnreadMessagesResponse.ts +35 -0
  638. package/models/ViewPushPreferencesForAChannelResponse.ts +50 -0
  639. package/models/ViewPushPreferencesResponse.ts +127 -0
  640. package/models/ViewWhoOwnsARegistrationOrDeviceTokenResponseInner.ts +35 -0
  641. package/models/all.ts +119 -0
  642. package/package.json +50 -0
  643. package/rxjsStub.ts +27 -0
  644. package/servers.ts +53 -0
  645. package/tests/integration/bot.test.ts +186 -0
  646. package/tests/integration/constants.ts +10 -0
  647. package/tests/integration/groupChannel.test.ts +1624 -0
  648. package/tests/integration/helper.ts +8 -0
  649. package/tests/integration/metadata.test.ts +22 -0
  650. package/tests/integration/moderation.test.ts +172 -0
  651. package/tests/integration/openChannel.test.ts +239 -0
  652. package/tests/integration/statistics.test.ts +44 -0
  653. package/tests/integration/user.test.ts +585 -0
  654. package/tsconfig.json +29 -0
  655. package/types/ObjectParamAPI.ts +3609 -0
  656. package/types/ObservableAPI.ts +2592 -0
  657. package/types/PromiseAPI.ts +1438 -0
  658. package/util.ts +37 -0
@@ -0,0 +1,1624 @@
1
+ import { ListOperatorsResponse } from "./../../models/ListOperatorsResponse";
2
+ import {
3
+ CreateAGroupChannelRequest,
4
+ SendbirdBasicUserInfo,
5
+ SendbirdDisappearingMessage,
6
+ SendbirdGroupChannelCountPreferenceEnum,
7
+ SendbirdGroupChannelHiddenStateEnum,
8
+ SendbirdGroupChannelMemberStateEnum,
9
+ SendbirdGroupChannelMyRoleEnum,
10
+ SendbirdMessageResponse,
11
+ SendbirdSmsFallback,
12
+ SendbirdUser,
13
+ SendbirdMemberRoleEnum,
14
+ SendbirdMemberStateEnum,
15
+ SendbirdGroupChannelDetailChannel,
16
+ } from "../../models/ObjectSerializer";
17
+ import { hasValidField } from "./helper";
18
+ import { ServerConfiguration } from "../../servers";
19
+ import { createConfiguration } from "../../configuration";
20
+ import { GroupChannelApi } from "../../index";
21
+ import {
22
+ GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
23
+ MASTER_USER_ID,
24
+ SECOND_USER_ID,
25
+ USERS,
26
+ } from "./constants";
27
+
28
+ describe("Group Channel API", () => {
29
+ const APP_ID = process.env.APP_ID || "";
30
+ const API_TOKEN = process.env.API_TOKEN || "";
31
+ let groupChannelApi: GroupChannelApi;
32
+ const validSendbirdGroupChannelCountPreferenceEnum: (
33
+ | SendbirdGroupChannelCountPreferenceEnum
34
+ | undefined
35
+ )[] = [
36
+ "false",
37
+ "all",
38
+ "unread_message_count_only",
39
+ "unread_mentioned_count_only",
40
+ ];
41
+
42
+ const validSendbirdGroupChannelMemberStateEnum: (
43
+ | SendbirdGroupChannelMemberStateEnum
44
+ | undefined
45
+ )[] = ["invited", "joined", "none"];
46
+
47
+ const validSendbirdGroupChannelHiddenStateEnum: (
48
+ | SendbirdGroupChannelHiddenStateEnum
49
+ | undefined
50
+ )[] = ["hidden_allow_auto_unhide", "hidden_prevent_auto_unhide", "unhidden"];
51
+
52
+ const validSendbirdGroupChannelMyRoleEnum: (
53
+ | SendbirdGroupChannelMyRoleEnum
54
+ | undefined
55
+ )[] = ["none", "operator", ""];
56
+
57
+ const validSendbirdMemberRoleEnum: (SendbirdMemberRoleEnum | undefined)[] = [
58
+ "",
59
+ "none",
60
+ "operator",
61
+ ];
62
+
63
+ const validSendbirdMemberStateEnum: (SendbirdMemberStateEnum | undefined)[] =
64
+ ["", "invited", "joined"];
65
+
66
+ beforeEach(() => {
67
+ const serverConfig = new ServerConfiguration(
68
+ `https://api-${APP_ID}.sendbird.com`,
69
+ { app_id: APP_ID }
70
+ );
71
+ const configuration = createConfiguration({
72
+ baseServer: serverConfig,
73
+ });
74
+ groupChannelApi = new GroupChannelApi(configuration);
75
+ });
76
+
77
+ it("call listChannels with positive query params", async () => {
78
+ const CHANNEL_URL =
79
+ "create-group-channel-before-call-list-channels-with-positive-params-test-channel-url";
80
+ // Cleanup first
81
+ try {
82
+ await groupChannelApi.deleteAGroupChannel({
83
+ channelUrl: CHANNEL_URL,
84
+ apiToken: API_TOKEN,
85
+ });
86
+ } catch (e) {
87
+ console.warn("ignore error in cleanup", e);
88
+ }
89
+
90
+ await new Promise((resolve) => setTimeout(resolve, 500));
91
+
92
+ const request: CreateAGroupChannelRequest = {
93
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
94
+ blockSdkUserChannelJoin: true,
95
+ channelUrl: CHANNEL_URL,
96
+ coverUrl: "empty",
97
+ customType: "data",
98
+ data: "data",
99
+ /**
100
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
101
+ */
102
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
103
+ inviterId: MASTER_USER_ID,
104
+ isDistinct: false,
105
+ isEphemeral: true,
106
+ isPublic: true,
107
+ isSuper: true,
108
+ name: "test",
109
+ operatorIds: [],
110
+ strict: true,
111
+ users: USERS.map((id) => ({ userId: id })),
112
+ };
113
+
114
+ const createGroupChannelresponse =
115
+ await groupChannelApi.createAGroupChannel({
116
+ apiToken: API_TOKEN,
117
+ createAGroupChannelRequest: request,
118
+ });
119
+
120
+ expect(createGroupChannelresponse).toBeDefined();
121
+ await new Promise((resolve) => setTimeout(resolve, 100));
122
+
123
+ const response = await groupChannelApi.listChannels({
124
+ apiToken: API_TOKEN,
125
+ limit: 10,
126
+ distinctMode: "all",
127
+ publicMode: "all",
128
+ superMode: "all",
129
+ showEmpty: true,
130
+ showMember: true,
131
+ showDeliveryReceipt: true,
132
+ showReadReceipt: true,
133
+ showMetadata: true,
134
+ showFrozen: true,
135
+ });
136
+ expect(response).toHaveProperty("channels");
137
+ expect(Array.isArray(response.channels)).toBe(true);
138
+
139
+ response.channels?.forEach((channel) => {
140
+ expect(channel).toHaveProperty("channelUrl");
141
+ expect(typeof channel.channelUrl).toBe("string");
142
+ if ("countPreference" in channel) {
143
+ expect(typeof channel.countPreference).toBe("string");
144
+ expect(
145
+ validSendbirdGroupChannelCountPreferenceEnum.includes(
146
+ channel.countPreference
147
+ )
148
+ ).toBe(true);
149
+ }
150
+ expect(channel).toHaveProperty("name");
151
+ expect(typeof channel.name).toBe("string");
152
+ expect(channel).toHaveProperty("coverUrl");
153
+ expect(typeof channel.coverUrl).toBe("string");
154
+
155
+ expect(channel).toHaveProperty("createdAt");
156
+ expect(typeof channel.createdAt).toBe("number");
157
+
158
+ if (hasValidField(channel, "createdBy")) {
159
+ expect(channel.createdBy).toBeInstanceOf(SendbirdBasicUserInfo);
160
+ }
161
+
162
+ expect(channel).toHaveProperty("customType");
163
+ expect(typeof channel.customType).toBe("string");
164
+
165
+ expect(channel).toHaveProperty("data");
166
+ expect(typeof channel.data).toBe("string");
167
+
168
+ expect(channel).toHaveProperty("deliveryReceipt");
169
+ expect(typeof channel.deliveryReceipt).toBe("object");
170
+
171
+ expect(channel).toHaveProperty("disappearingMessage");
172
+ expect(channel.disappearingMessage).toBeInstanceOf(
173
+ SendbirdDisappearingMessage
174
+ );
175
+
176
+ expect(channel).toHaveProperty("freeze");
177
+ expect(typeof channel.freeze).toBe("boolean");
178
+
179
+ expect(channel).toHaveProperty("hasAiBot");
180
+ expect(typeof channel.hasAiBot).toBe("boolean");
181
+
182
+ expect(channel).toHaveProperty("hasBot");
183
+ expect(typeof channel.hasBot).toBe("boolean");
184
+
185
+ if ("hiddenState" in channel) {
186
+ expect(
187
+ validSendbirdGroupChannelHiddenStateEnum.includes(channel.hiddenState)
188
+ ).toBe(true);
189
+ expect(typeof channel.hiddenState).toBe("string");
190
+ }
191
+
192
+ expect(channel).toHaveProperty("ignoreProfanityFilter");
193
+ expect(typeof channel.ignoreProfanityFilter).toBe("boolean");
194
+
195
+ expect(channel).toHaveProperty("invitedAt");
196
+ expect(typeof channel.invitedAt).toBe("number");
197
+
198
+ if (hasValidField(channel, "inviter")) {
199
+ expect(channel.inviter).toBeInstanceOf(SendbirdUser);
200
+ }
201
+
202
+ expect(channel).toHaveProperty("isAccessCodeRequired");
203
+ expect(typeof channel.isAccessCodeRequired).toBe("boolean");
204
+
205
+ expect(channel).toHaveProperty("isBroadcast");
206
+ expect(typeof channel.isBroadcast).toBe("boolean");
207
+
208
+ expect(channel).toHaveProperty("isDiscoverable");
209
+ expect(typeof channel.isDiscoverable).toBe("boolean");
210
+
211
+ expect(channel).toHaveProperty("isDistinct");
212
+ expect(typeof channel.isDistinct).toBe("boolean");
213
+
214
+ expect(channel).toHaveProperty("isEphemeral");
215
+ expect(typeof channel.isEphemeral).toBe("boolean");
216
+
217
+ expect(channel).toHaveProperty("isExclusive");
218
+ expect(typeof channel.isExclusive).toBe("boolean");
219
+
220
+ if ("isHidden" in channel) {
221
+ expect(typeof channel.isHidden).toBe("boolean");
222
+ }
223
+
224
+ // Object(channel).hasProe;
225
+ if ("isMuted" in channel) {
226
+ expect(typeof channel.isMuted).toBe("boolean");
227
+ }
228
+
229
+ if ("isPublic" in channel) {
230
+ expect(typeof channel.isPublic).toBe("boolean");
231
+ }
232
+
233
+ if ("isPushEnabled" in channel) {
234
+ expect(typeof channel.isPushEnabled).toBe("boolean");
235
+ }
236
+
237
+ expect(channel).toHaveProperty("isSuper");
238
+ expect(typeof channel.isSuper).toBe("boolean");
239
+
240
+ expect(channel).toHaveProperty("joinedMemberCount");
241
+ expect(typeof channel.joinedMemberCount).toBe("number");
242
+
243
+ if (hasValidField(channel, "joinedTs")) {
244
+ expect(typeof channel.joinedTs).toBe("number");
245
+ }
246
+
247
+ if (hasValidField(channel, "lastMessage")) {
248
+ expect(channel.lastMessage).toBeInstanceOf(SendbirdMessageResponse);
249
+ }
250
+
251
+ expect(channel).toHaveProperty("maxLengthMessage");
252
+ expect(typeof channel.maxLengthMessage).toBe("number");
253
+
254
+ expect(channel).toHaveProperty("memberCount");
255
+ expect(typeof channel.memberCount).toBe("number");
256
+
257
+ if (hasValidField(channel, "memberState")) {
258
+ expect(
259
+ validSendbirdGroupChannelMemberStateEnum.includes(channel.memberState)
260
+ ).toBe(true);
261
+ expect(typeof channel.memberState).toBe("string");
262
+ }
263
+
264
+ expect(channel).toHaveProperty("members");
265
+ expect(Array.isArray(channel.members)).toBe(true);
266
+
267
+ expect(channel).toHaveProperty("messageSurvivalSeconds");
268
+ expect(typeof channel.messageSurvivalSeconds).toBe("number");
269
+
270
+ expect(channel).toHaveProperty("metadata");
271
+ expect(typeof channel.metadata).toBe("object");
272
+
273
+ if (hasValidField(channel, "myRole")) {
274
+ expect(
275
+ validSendbirdGroupChannelMyRoleEnum.includes(channel.myRole)
276
+ ).toBe(true);
277
+ expect(typeof channel.myRole).toBe("string");
278
+ }
279
+
280
+ expect(channel).toHaveProperty("name");
281
+ expect(typeof channel.name).toBe("string");
282
+
283
+ expect(channel).toHaveProperty("readReceipt");
284
+ expect(typeof channel.readReceipt).toBe("object");
285
+
286
+ expect(channel).toHaveProperty("smsFallback");
287
+ expect(channel.smsFallback).toBeInstanceOf(SendbirdSmsFallback);
288
+
289
+ if (hasValidField(channel, "tsMessageOffset")) {
290
+ expect(typeof channel.tsMessageOffset).toBe("number");
291
+ }
292
+
293
+ expect(channel).toHaveProperty("unreadMentionCount");
294
+ expect(typeof channel.unreadMentionCount).toBe("number");
295
+
296
+ expect(channel).toHaveProperty("unreadMessageCount");
297
+ expect(typeof channel.unreadMessageCount).toBe("number");
298
+
299
+ if (hasValidField(channel, "userLastRead")) {
300
+ expect(typeof channel.userLastRead).toBe("number");
301
+ }
302
+ });
303
+
304
+ expect(response).toHaveProperty("next");
305
+ expect(typeof response.next).toBe("string");
306
+
307
+ // Cleanup last
308
+ try {
309
+ await groupChannelApi.deleteAGroupChannel({
310
+ channelUrl: CHANNEL_URL,
311
+ apiToken: API_TOKEN,
312
+ });
313
+ } catch (e) {
314
+ console.warn("ignore error in cleanup", e);
315
+ }
316
+ });
317
+
318
+ it("call listChannels with negative query params", async () => {
319
+ const CHANNEL_URL =
320
+ "create-group-channel-before-call-list-channels-with-negative-params-test-channel-url";
321
+ // Cleanup first
322
+ try {
323
+ await groupChannelApi.deleteAGroupChannel({
324
+ channelUrl: CHANNEL_URL,
325
+ apiToken: API_TOKEN,
326
+ });
327
+ } catch (e) {
328
+ console.warn("ignore error in cleanup", e);
329
+ }
330
+
331
+ await new Promise((resolve) => setTimeout(resolve, 500));
332
+
333
+ const request: CreateAGroupChannelRequest = {
334
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
335
+ blockSdkUserChannelJoin: true,
336
+ channelUrl: CHANNEL_URL,
337
+ coverUrl: "empty",
338
+ customType: "data",
339
+ data: "data",
340
+ /**
341
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
342
+ */
343
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
344
+ inviterId: MASTER_USER_ID,
345
+ isDistinct: false,
346
+ isEphemeral: true,
347
+ isPublic: true,
348
+ isSuper: true,
349
+ name: "test",
350
+ operatorIds: [],
351
+ strict: true,
352
+ users: USERS.map((id) => ({ userId: id })),
353
+ };
354
+
355
+ const createGroupChannelresponse =
356
+ await groupChannelApi.createAGroupChannel({
357
+ apiToken: API_TOKEN,
358
+ createAGroupChannelRequest: request,
359
+ });
360
+
361
+ expect(createGroupChannelresponse).toBeDefined();
362
+ await new Promise((resolve) => setTimeout(resolve, 100));
363
+
364
+ const response = await groupChannelApi.listChannels({
365
+ apiToken: API_TOKEN,
366
+ limit: 10,
367
+ distinctMode: "all",
368
+ publicMode: "all",
369
+ superMode: "all",
370
+ showEmpty: false,
371
+ showMember: false,
372
+ showDeliveryReceipt: false,
373
+ showReadReceipt: false,
374
+ showMetadata: false,
375
+ showFrozen: false,
376
+ });
377
+ expect(response).toHaveProperty("channels");
378
+ expect(Array.isArray(response.channels)).toBe(true);
379
+
380
+ response.channels?.forEach((channel) => {
381
+ expect(channel).toHaveProperty("channelUrl");
382
+ expect(typeof channel.channelUrl).toBe("string");
383
+
384
+ expect(channel).not.toHaveProperty("deliveryReceipt");
385
+ expect(channel).not.toHaveProperty("members");
386
+ expect(channel).not.toHaveProperty("metadata");
387
+ expect(channel).not.toHaveProperty("readReceipt");
388
+
389
+ expect(channel).toHaveProperty("name");
390
+ expect(typeof channel.name).toBe("string");
391
+
392
+ expect(channel).toHaveProperty("coverUrl");
393
+ expect(typeof channel.coverUrl).toBe("string");
394
+
395
+ expect(channel).toHaveProperty("createdAt");
396
+ expect(typeof channel.createdAt).toBe("number");
397
+ });
398
+
399
+ expect(response).toHaveProperty("next");
400
+ expect(typeof response.next).toBe("string");
401
+
402
+ // Cleanup last
403
+ try {
404
+ await groupChannelApi.deleteAGroupChannel({
405
+ channelUrl: CHANNEL_URL,
406
+ apiToken: API_TOKEN,
407
+ });
408
+ } catch (e) {
409
+ console.warn("ignore error in cleanup", e);
410
+ }
411
+ });
412
+
413
+ it("call createAGroupChannel with Error", async () => {
414
+ const CHANNEL_URL = "create-group-channel-with-error-test-channel-url";
415
+ // Cleanup first
416
+ try {
417
+ await groupChannelApi.deleteAGroupChannel({
418
+ channelUrl: CHANNEL_URL,
419
+ apiToken: API_TOKEN,
420
+ });
421
+ } catch (e) {
422
+ console.warn("ignore error in cleanup", e);
423
+ }
424
+
425
+ await new Promise((resolve) => setTimeout(resolve, 500));
426
+ const request: CreateAGroupChannelRequest = {
427
+ accessCode: "integration",
428
+ blockSdkUserChannelJoin: true,
429
+ channelUrl: CHANNEL_URL,
430
+ coverUrl: "empty",
431
+ customType: "data",
432
+ data: "data",
433
+ /**
434
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
435
+ */
436
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
437
+ inviterId: MASTER_USER_ID,
438
+ isDistinct: true,
439
+ isEphemeral: true,
440
+ isPublic: true,
441
+ isSuper: true,
442
+ name: "test",
443
+ operatorIds: [],
444
+ strict: true,
445
+ users: USERS.map((id) => ({ userId: id })),
446
+ };
447
+
448
+ try {
449
+ await groupChannelApi.createAGroupChannel({
450
+ apiToken: API_TOKEN,
451
+ createAGroupChannelRequest: request,
452
+ });
453
+ } catch (error) {
454
+ expect(JSON.parse((error as any).body).code).toBe(400111);
455
+ }
456
+ });
457
+
458
+ it("call createAGroupChannel and deleteAGroupChannel", async () => {
459
+ const CHANNEL_URL = "create-then-delete-group-channel-test-channel-url";
460
+ // Cleanup first
461
+ try {
462
+ await groupChannelApi.deleteAGroupChannel({
463
+ channelUrl: CHANNEL_URL,
464
+ apiToken: API_TOKEN,
465
+ });
466
+ } catch (e) {
467
+ console.warn("ignore error in cleanup", e);
468
+ }
469
+
470
+ await new Promise((resolve) => setTimeout(resolve, 500));
471
+
472
+ const request: CreateAGroupChannelRequest = {
473
+ accessCode: "integration",
474
+ blockSdkUserChannelJoin: true,
475
+ channelUrl: CHANNEL_URL,
476
+ coverUrl: "empty",
477
+ customType: "data",
478
+ data: "data",
479
+ /**
480
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
481
+ */
482
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
483
+ inviterId: MASTER_USER_ID,
484
+ isDistinct: false,
485
+ isEphemeral: true,
486
+ isPublic: true,
487
+ isSuper: true,
488
+ name: "test",
489
+ operatorIds: [],
490
+ strict: true,
491
+ users: USERS.map((id) => ({ userId: id })),
492
+ };
493
+
494
+ const response = await groupChannelApi.createAGroupChannel({
495
+ apiToken: API_TOKEN,
496
+ createAGroupChannelRequest: request,
497
+ });
498
+
499
+ await new Promise((resolve) => setTimeout(resolve, 100));
500
+
501
+ expect(response).toHaveProperty("channelUrl");
502
+ expect(response.channelUrl).toBe(CHANNEL_URL);
503
+ expect(typeof response.channelUrl).toBe("string");
504
+
505
+ expect(response).toHaveProperty("coverUrl");
506
+ expect(response.coverUrl).toBe("empty");
507
+ expect(typeof response.coverUrl).toBe("string");
508
+
509
+ expect(response).toHaveProperty("customType");
510
+ expect(response.customType).toBe("data");
511
+ expect(typeof response.customType).toBe("string");
512
+
513
+ // Cleanup last
514
+ try {
515
+ await groupChannelApi.deleteAGroupChannel({
516
+ channelUrl: response.channelUrl,
517
+ apiToken: API_TOKEN,
518
+ });
519
+ } catch (e) {
520
+ console.warn("ignore error in cleanup", e);
521
+ }
522
+ });
523
+
524
+ it("call getAGroupChannel", async () => {
525
+ const CHANNEL_URL = "get-group-channel-test-channel-url";
526
+ // Cleanup first
527
+ try {
528
+ await groupChannelApi.deleteAGroupChannel({
529
+ channelUrl: CHANNEL_URL,
530
+ apiToken: API_TOKEN,
531
+ });
532
+ } catch (e) {
533
+ console.warn("ignore error in cleanup", e);
534
+ }
535
+
536
+ await new Promise((resolve) => setTimeout(resolve, 500));
537
+
538
+ const request: CreateAGroupChannelRequest = {
539
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
540
+ blockSdkUserChannelJoin: true,
541
+ channelUrl: CHANNEL_URL,
542
+ coverUrl: "empty",
543
+ customType: "data",
544
+ data: "data",
545
+ /**
546
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
547
+ */
548
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
549
+ inviterId: MASTER_USER_ID,
550
+ isDistinct: false,
551
+ isEphemeral: true,
552
+ isPublic: true,
553
+ isSuper: true,
554
+ name: "test",
555
+ operatorIds: [],
556
+ strict: true,
557
+ users: USERS.map((id) => ({ userId: id })),
558
+ };
559
+
560
+ const createGroupChannelresponse =
561
+ await groupChannelApi.createAGroupChannel({
562
+ apiToken: API_TOKEN,
563
+ createAGroupChannelRequest: request,
564
+ });
565
+
566
+ await new Promise((resolve) => setTimeout(resolve, 100));
567
+
568
+ expect(createGroupChannelresponse).toHaveProperty("channelUrl");
569
+ expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
570
+ expect(typeof createGroupChannelresponse.channelUrl).toBe("string");
571
+
572
+ const groupChannelResponse = await groupChannelApi.getAGroupChannel({
573
+ channelUrl: createGroupChannelresponse.channelUrl,
574
+ apiToken: API_TOKEN,
575
+ showDeliveryReceipt: true,
576
+ showReadReceipt: true,
577
+ showMember: true,
578
+ memberActiveMode: "all",
579
+ });
580
+
581
+ const channel = groupChannelResponse;
582
+ expect(channel).toHaveProperty("channelUrl");
583
+ expect(channel.channelUrl).toBe(CHANNEL_URL);
584
+
585
+ expect(channel).toHaveProperty("channel");
586
+ expect(channel.channel).toBeInstanceOf(SendbirdGroupChannelDetailChannel);
587
+
588
+ expect(channel.channel).toHaveProperty("channelUrl");
589
+ expect(typeof channel.channel?.channelUrl).toBe("string");
590
+
591
+ expect(channel.channel).toHaveProperty("coverUrl");
592
+ expect(typeof channel.channel?.coverUrl).toBe("string");
593
+
594
+ expect(channel.channel).toHaveProperty("createdAt");
595
+ expect(typeof channel.channel?.createdAt).toBe("number");
596
+
597
+ expect(channel.channel).toHaveProperty("customType");
598
+ expect(typeof channel.channel?.customType).toBe("string");
599
+
600
+ expect(channel.channel).toHaveProperty("data");
601
+ expect(typeof channel.channel?.data).toBe("string");
602
+
603
+ expect(channel.channel).toHaveProperty("maxLengthMessage");
604
+ expect(typeof channel.channel?.maxLengthMessage).toBe("number");
605
+
606
+ expect(channel.channel).toHaveProperty("memberCount");
607
+ expect(typeof channel.channel?.memberCount).toBe("number");
608
+
609
+ expect(channel.channel).toHaveProperty("name");
610
+ expect(typeof channel.channel?.name).toBe("string");
611
+
612
+ expect(channel).toHaveProperty("name");
613
+ expect(typeof channel.name).toBe("string");
614
+
615
+ expect(channel).toHaveProperty("coverUrl");
616
+ expect(typeof channel.coverUrl).toBe("string");
617
+
618
+ expect(channel).toHaveProperty("createdAt");
619
+ expect(typeof channel.createdAt).toBe("number");
620
+
621
+ if (hasValidField(channel, "createdBy")) {
622
+ expect(channel.createdBy).toBeInstanceOf(SendbirdBasicUserInfo);
623
+ }
624
+
625
+ expect(channel).toHaveProperty("customType");
626
+ expect(typeof channel.customType).toBe("string");
627
+
628
+ expect(channel).toHaveProperty("data");
629
+ expect(typeof channel.data).toBe("string");
630
+
631
+ expect(channel).toHaveProperty("deliveryReceipt");
632
+ expect(typeof channel.deliveryReceipt).toBe("object");
633
+
634
+ expect(channel).toHaveProperty("disappearingMessage");
635
+ expect(channel.disappearingMessage).toBeInstanceOf(
636
+ SendbirdDisappearingMessage
637
+ );
638
+
639
+ expect(channel).toHaveProperty("freeze");
640
+ expect(typeof channel.freeze).toBe("boolean");
641
+
642
+ expect(channel).toHaveProperty("hasAiBot");
643
+ expect(typeof channel.hasAiBot).toBe("boolean");
644
+
645
+ expect(channel).toHaveProperty("hasBot");
646
+ expect(typeof channel.hasBot).toBe("boolean");
647
+
648
+ expect(channel).toHaveProperty("ignoreProfanityFilter");
649
+ expect(typeof channel.ignoreProfanityFilter).toBe("boolean");
650
+
651
+ expect(channel).toHaveProperty("isAccessCodeRequired");
652
+ expect(typeof channel.isAccessCodeRequired).toBe("boolean");
653
+
654
+ expect(channel).toHaveProperty("isBroadcast");
655
+ expect(typeof channel.isBroadcast).toBe("boolean");
656
+
657
+ expect(channel).toHaveProperty("isDiscoverable");
658
+ expect(typeof channel.isDiscoverable).toBe("boolean");
659
+
660
+ expect(channel).toHaveProperty("isDistinct");
661
+ expect(typeof channel.isDistinct).toBe("boolean");
662
+
663
+ expect(channel).toHaveProperty("isEphemeral");
664
+ expect(typeof channel.isEphemeral).toBe("boolean");
665
+
666
+ if ("isHidden" in channel) {
667
+ expect(typeof channel.isHidden).toBe("boolean");
668
+ }
669
+
670
+ if ("isMuted" in channel) {
671
+ expect(typeof channel.isMuted).toBe("boolean");
672
+ }
673
+
674
+ if ("isPublic" in channel) {
675
+ expect(typeof channel.isPublic).toBe("boolean");
676
+ }
677
+
678
+ if ("isPushEnabled" in channel) {
679
+ expect(typeof channel.isPushEnabled).toBe("boolean");
680
+ }
681
+
682
+ expect(channel).toHaveProperty("isSuper");
683
+ expect(typeof channel.isSuper).toBe("boolean");
684
+
685
+ expect(channel).toHaveProperty("joinedMemberCount");
686
+ expect(typeof channel.joinedMemberCount).toBe("number");
687
+
688
+ if (hasValidField(channel, "lastMessage")) {
689
+ expect(channel.lastMessage).toBeInstanceOf(SendbirdMessageResponse);
690
+ }
691
+
692
+ expect(channel).toHaveProperty("maxLengthMessage");
693
+ expect(typeof channel.maxLengthMessage).toBe("number");
694
+
695
+ expect(channel).toHaveProperty("memberCount");
696
+ expect(typeof channel.memberCount).toBe("number");
697
+
698
+ expect(channel).toHaveProperty("members");
699
+ expect(Array.isArray(channel.members)).toBe(true);
700
+
701
+ expect(channel).toHaveProperty("messageSurvivalSeconds");
702
+ expect(typeof channel.messageSurvivalSeconds).toBe("number");
703
+
704
+ expect(channel).toHaveProperty("name");
705
+ expect(typeof channel.name).toBe("string");
706
+
707
+ expect(channel).toHaveProperty("readReceipt");
708
+ expect(typeof channel.readReceipt).toBe("object");
709
+
710
+ expect(channel).toHaveProperty("smsFallback");
711
+ expect(channel.smsFallback).toBeInstanceOf(SendbirdSmsFallback);
712
+
713
+ expect(channel).toHaveProperty("unreadMentionCount");
714
+ expect(typeof channel.unreadMentionCount).toBe("number");
715
+
716
+ expect(channel).toHaveProperty("unreadMessageCount");
717
+ expect(typeof channel.unreadMessageCount).toBe("number");
718
+
719
+ // Cleanup last
720
+ try {
721
+ await groupChannelApi.deleteAGroupChannel({
722
+ channelUrl: createGroupChannelresponse.channelUrl,
723
+ apiToken: API_TOKEN,
724
+ });
725
+ } catch (e) {
726
+ console.warn("ignore error in cleanup", e);
727
+ }
728
+ });
729
+
730
+ it("call listMembers", async () => {
731
+ const CHANNEL_URL =
732
+ "create-group-channel-before-call-list-channels-with-then-list-members-test-channel-url";
733
+ // Cleanup first
734
+ try {
735
+ await groupChannelApi.deleteAGroupChannel({
736
+ channelUrl: CHANNEL_URL,
737
+ apiToken: API_TOKEN,
738
+ });
739
+ } catch (e) {
740
+ console.warn("ignore error in cleanup", e);
741
+ }
742
+
743
+ await new Promise((resolve) => setTimeout(resolve, 500));
744
+
745
+ const request: CreateAGroupChannelRequest = {
746
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
747
+ blockSdkUserChannelJoin: true,
748
+ channelUrl: CHANNEL_URL,
749
+ coverUrl: "empty",
750
+ customType: "data",
751
+ data: "data",
752
+ /**
753
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
754
+ */
755
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
756
+ inviterId: MASTER_USER_ID,
757
+ isDistinct: false,
758
+ isEphemeral: true,
759
+ isPublic: true,
760
+ isSuper: true,
761
+ name: "test",
762
+ operatorIds: [],
763
+ strict: true,
764
+ users: USERS.map((id) => ({ userId: id })),
765
+ };
766
+
767
+ const createGroupChannelresponse =
768
+ await groupChannelApi.createAGroupChannel({
769
+ apiToken: API_TOKEN,
770
+ createAGroupChannelRequest: request,
771
+ });
772
+
773
+ expect(createGroupChannelresponse).toBeDefined();
774
+ await new Promise((resolve) => setTimeout(resolve, 100));
775
+
776
+ const listResponse = await groupChannelApi.listChannels({
777
+ apiToken: API_TOKEN,
778
+ limit: 1,
779
+ distinctMode: "all",
780
+ publicMode: "all",
781
+ superMode: "all",
782
+ showEmpty: true,
783
+ showMember: true,
784
+ showDeliveryReceipt: true,
785
+ showReadReceipt: true,
786
+ showMetadata: true,
787
+ showFrozen: true,
788
+ });
789
+ expect(listResponse).toHaveProperty("channels");
790
+ expect(Array.isArray(listResponse.channels)).toBe(true);
791
+ expect(listResponse.channels?.length).toBe(1);
792
+
793
+ const channel = listResponse.channels?.[0];
794
+ expect(channel).toBeDefined();
795
+
796
+ if (channel) {
797
+ const listMembersResponse = await groupChannelApi.listMembers({
798
+ apiToken: API_TOKEN,
799
+ channelUrl: channel.channelUrl,
800
+ });
801
+
802
+ expect(listMembersResponse).toHaveProperty("members");
803
+ expect(Array.isArray(listMembersResponse.members)).toBe(true);
804
+ listMembersResponse.members.forEach((member) => {
805
+ expect(member).toHaveProperty("userId");
806
+ expect(typeof member.userId).toBe("string");
807
+
808
+ if (hasValidField(member, "deliveredTs")) {
809
+ expect(typeof member.deliveredTs).toBe("number");
810
+ }
811
+
812
+ if (hasValidField(member, "doNotDisturb")) {
813
+ expect(typeof member.doNotDisturb).toBe("boolean");
814
+ }
815
+
816
+ if (hasValidField(member, "friendDiscoveryKey")) {
817
+ expect(Array.isArray(member.friendDiscoveryKey)).toBe(true);
818
+ }
819
+
820
+ if (hasValidField(member, "friendName")) {
821
+ expect(typeof member.friendName).toBe("string");
822
+ }
823
+
824
+ if (hasValidField(member, "isActive")) {
825
+ expect(typeof member.isActive).toBe("boolean");
826
+ }
827
+
828
+ if (hasValidField(member, "isBlockedByMe")) {
829
+ expect(typeof member.isBlockedByMe).toBe("boolean");
830
+ }
831
+
832
+ if (hasValidField(member, "isBlockingMe")) {
833
+ expect(typeof member.isBlockingMe).toBe("boolean");
834
+ }
835
+
836
+ if (hasValidField(member, "isMuted")) {
837
+ expect(typeof member.isMuted).toBe("boolean");
838
+ }
839
+
840
+ if (hasValidField(member, "isOnline")) {
841
+ expect(typeof member.isOnline).toBe("boolean");
842
+ }
843
+
844
+ if (hasValidField(member, "lastSeenAt")) {
845
+ expect(typeof member.lastSeenAt).toBe("number");
846
+ }
847
+
848
+ if (hasValidField(member, "metadata")) {
849
+ expect(typeof member.metadata).toBe("object");
850
+ }
851
+
852
+ if (hasValidField(member, "mutedDescription")) {
853
+ expect(typeof member.mutedDescription).toBe("string");
854
+ }
855
+
856
+ if (hasValidField(member, "mutedEndAt")) {
857
+ expect(typeof member.mutedEndAt).toBe("number");
858
+ }
859
+
860
+ if (hasValidField(member, "nickname")) {
861
+ expect(typeof member.nickname).toBe("string");
862
+ }
863
+
864
+ if (hasValidField(member, "pushEnabled")) {
865
+ expect(typeof member.pushEnabled).toBe("boolean");
866
+ }
867
+
868
+ if (hasValidField(member, "pushTriggerOption")) {
869
+ expect(typeof member.pushTriggerOption).toBe("string");
870
+ }
871
+
872
+ if (hasValidField(member, "profileUrl")) {
873
+ expect(typeof member.profileUrl).toBe("string");
874
+ }
875
+
876
+ if (hasValidField(member, "requireAuthForProfileImage")) {
877
+ expect(typeof member.requireAuthForProfileImage).toBe("boolean");
878
+ }
879
+
880
+ if (hasValidField(member, "readTs")) {
881
+ expect(typeof member.readTs).toBe("number");
882
+ }
883
+
884
+ if (hasValidField(member, "role")) {
885
+ expect(typeof member.role).toBe("string");
886
+ expect(validSendbirdMemberRoleEnum.includes(member.role)).toBe(true);
887
+ }
888
+
889
+ if (hasValidField(member, "state")) {
890
+ expect(typeof member.state).toBe("string");
891
+ expect(validSendbirdMemberStateEnum.includes(member.state)).toBe(
892
+ true
893
+ );
894
+ }
895
+ });
896
+ }
897
+
898
+ // Cleanup last
899
+ try {
900
+ await groupChannelApi.deleteAGroupChannel({
901
+ channelUrl: CHANNEL_URL,
902
+ apiToken: API_TOKEN,
903
+ });
904
+ } catch (e) {
905
+ console.warn("ignore error in cleanup", e);
906
+ }
907
+ });
908
+
909
+ it("call registerOperatorsToAGroupChannel, listOperators then cancelTheRegistrationOfOperators", async () => {
910
+ const CHANNEL_URL = "list-operator-test-channel-url";
911
+ // Cleanup first
912
+ try {
913
+ await groupChannelApi.deleteAGroupChannel({
914
+ channelUrl: CHANNEL_URL,
915
+ apiToken: API_TOKEN,
916
+ });
917
+ } catch (e) {
918
+ console.warn("ignore error in cleanup", e);
919
+ }
920
+
921
+ await new Promise((resolve) => setTimeout(resolve, 500));
922
+
923
+ const request: CreateAGroupChannelRequest = {
924
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
925
+ blockSdkUserChannelJoin: true,
926
+ channelUrl: CHANNEL_URL,
927
+ coverUrl: "empty",
928
+ customType: "data",
929
+ data: "data",
930
+ /**
931
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
932
+ */
933
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
934
+ inviterId: MASTER_USER_ID,
935
+ isDistinct: false,
936
+ isEphemeral: true,
937
+ isPublic: true,
938
+ isSuper: true,
939
+ name: "test",
940
+ operatorIds: [],
941
+ strict: true,
942
+ users: USERS.map((id) => ({ userId: id })),
943
+ };
944
+
945
+ const createGroupChannelresponse =
946
+ await groupChannelApi.createAGroupChannel({
947
+ apiToken: API_TOKEN,
948
+ createAGroupChannelRequest: request,
949
+ });
950
+
951
+ await new Promise((resolve) => setTimeout(resolve, 100));
952
+
953
+ expect(createGroupChannelresponse).toHaveProperty("channelUrl");
954
+ expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
955
+ expect(typeof createGroupChannelresponse.channelUrl).toBe("string");
956
+
957
+ expect(createGroupChannelresponse).toHaveProperty("operators");
958
+ expect(createGroupChannelresponse.operators?.length || 0).toBe(0);
959
+
960
+ const registerOperatorResponse =
961
+ await groupChannelApi.registerOperatorsToAGroupChannel({
962
+ channelUrl: createGroupChannelresponse.channelUrl,
963
+ apiToken: API_TOKEN,
964
+ registerOperatorsToAGroupChannelRequest: {
965
+ operatorIds: [MASTER_USER_ID],
966
+ },
967
+ });
968
+
969
+ expect(registerOperatorResponse).toBeDefined();
970
+
971
+ const listOperatorsResponse = await groupChannelApi.listOperators({
972
+ channelUrl: createGroupChannelresponse.channelUrl,
973
+ apiToken: API_TOKEN,
974
+ });
975
+
976
+ expect(listOperatorsResponse).toHaveProperty("operators");
977
+ expect(Object.keys(listOperatorsResponse).length).toBe(2);
978
+
979
+ expect(listOperatorsResponse.operators?.length || 0).toBe(1);
980
+
981
+ listOperatorsResponse.operators?.map((operator) => {
982
+ expect(operator.userId).toEqual(MASTER_USER_ID);
983
+ expect(operator).toHaveProperty("nickname");
984
+ expect(typeof operator.nickname).toBe("string");
985
+ expect(operator).toHaveProperty("profileUrl");
986
+ expect(typeof operator.profileUrl).toBe("string");
987
+ expect(operator).toHaveProperty("metadata");
988
+ expect(typeof operator.metadata).toBe("object");
989
+ expect(operator).toHaveProperty("requireAuthForProfileImage");
990
+ expect(typeof operator.requireAuthForProfileImage).toBe("boolean");
991
+ });
992
+
993
+ const cancelTheRegistrationOfOperatorsResponse =
994
+ await groupChannelApi.cancelTheRegistrationOfOperators({
995
+ channelUrl: createGroupChannelresponse.channelUrl,
996
+ apiToken: API_TOKEN,
997
+ operatorIds: MASTER_USER_ID,
998
+ });
999
+
1000
+ expect(cancelTheRegistrationOfOperatorsResponse).toBeDefined();
1001
+
1002
+ const listOperatorsAfterCancelRegistrationResponse =
1003
+ await groupChannelApi.listOperators({
1004
+ channelUrl: createGroupChannelresponse.channelUrl,
1005
+ apiToken: API_TOKEN,
1006
+ });
1007
+
1008
+ expect(listOperatorsAfterCancelRegistrationResponse).toHaveProperty(
1009
+ "operators"
1010
+ );
1011
+ expect(
1012
+ Object.keys(listOperatorsAfterCancelRegistrationResponse).length
1013
+ ).toBe(2);
1014
+
1015
+ expect(
1016
+ listOperatorsAfterCancelRegistrationResponse.operators?.length || 0
1017
+ ).toBe(0);
1018
+
1019
+ // Cleanup last
1020
+ try {
1021
+ await groupChannelApi.deleteAGroupChannel({
1022
+ channelUrl: createGroupChannelresponse.channelUrl,
1023
+ apiToken: API_TOKEN,
1024
+ });
1025
+ } catch (e) {
1026
+ console.warn("ignore error in cleanup", e);
1027
+ }
1028
+ });
1029
+
1030
+ it("call startTypingIndicators and stopTypingIndicators", async () => {
1031
+ const CHANNEL_URL = "group-channel-typing-indicators-test-channel-url";
1032
+ // Cleanup first
1033
+ try {
1034
+ await groupChannelApi.deleteAGroupChannel({
1035
+ channelUrl: CHANNEL_URL,
1036
+ apiToken: API_TOKEN,
1037
+ });
1038
+ } catch (e) {
1039
+ console.warn("ignore error in cleanup", e);
1040
+ }
1041
+
1042
+ await new Promise((resolve) => setTimeout(resolve, 500));
1043
+
1044
+ const request: CreateAGroupChannelRequest = {
1045
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
1046
+ blockSdkUserChannelJoin: true,
1047
+ channelUrl: CHANNEL_URL,
1048
+ coverUrl: "empty",
1049
+ customType: "data",
1050
+ data: "data",
1051
+ /**
1052
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
1053
+ */
1054
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
1055
+ inviterId: MASTER_USER_ID,
1056
+ isDistinct: false,
1057
+ isEphemeral: true,
1058
+ isPublic: true,
1059
+ isSuper: true,
1060
+ name: "test",
1061
+ operatorIds: [],
1062
+ strict: true,
1063
+ users: USERS.map((id) => ({ userId: id })),
1064
+ };
1065
+
1066
+ const createGroupChannelresponse =
1067
+ await groupChannelApi.createAGroupChannel({
1068
+ apiToken: API_TOKEN,
1069
+ createAGroupChannelRequest: request,
1070
+ });
1071
+
1072
+ await new Promise((resolve) => setTimeout(resolve, 100));
1073
+
1074
+ expect(createGroupChannelresponse).toHaveProperty("channelUrl");
1075
+ expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
1076
+
1077
+ const startTypingResponse = await groupChannelApi.startTypingIndicators({
1078
+ channelUrl: createGroupChannelresponse.channelUrl,
1079
+ apiToken: API_TOKEN,
1080
+ startTypingIndicatorsRequest: {
1081
+ userIds: [MASTER_USER_ID],
1082
+ },
1083
+ });
1084
+
1085
+ const stopTypingResponse = await groupChannelApi.startTypingIndicators({
1086
+ channelUrl: createGroupChannelresponse.channelUrl,
1087
+ apiToken: API_TOKEN,
1088
+ startTypingIndicatorsRequest: {
1089
+ userIds: [MASTER_USER_ID],
1090
+ },
1091
+ });
1092
+
1093
+ expect(startTypingResponse).toBeDefined();
1094
+ expect(stopTypingResponse).toBeDefined();
1095
+
1096
+ // Cleanup last
1097
+ try {
1098
+ await groupChannelApi.deleteAGroupChannel({
1099
+ channelUrl: createGroupChannelresponse.channelUrl,
1100
+ apiToken: API_TOKEN,
1101
+ });
1102
+ } catch (e) {
1103
+ console.warn("ignore error in cleanup", e);
1104
+ }
1105
+ });
1106
+
1107
+ it("call hideAChannel then unhideAChannel", async () => {
1108
+ const CHANNEL_URL = "group-channel-hide-test-channel-url";
1109
+ // Cleanup first
1110
+ try {
1111
+ await groupChannelApi.deleteAGroupChannel({
1112
+ channelUrl: CHANNEL_URL,
1113
+ apiToken: API_TOKEN,
1114
+ });
1115
+ } catch (e) {
1116
+ console.warn("ignore error in cleanup", e);
1117
+ }
1118
+
1119
+ await new Promise((resolve) => setTimeout(resolve, 500));
1120
+
1121
+ const request: CreateAGroupChannelRequest = {
1122
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
1123
+ blockSdkUserChannelJoin: true,
1124
+ channelUrl: CHANNEL_URL,
1125
+ coverUrl: "empty",
1126
+ customType: "data",
1127
+ data: "data",
1128
+ /**
1129
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
1130
+ */
1131
+ invitationStatus: {
1132
+ MASTER_USER_ID: "joined",
1133
+ },
1134
+ inviterId: MASTER_USER_ID,
1135
+ isDistinct: false,
1136
+ isEphemeral: true,
1137
+ isPublic: true,
1138
+ isSuper: true,
1139
+ name: "test",
1140
+ operatorIds: [],
1141
+ strict: true,
1142
+ users: USERS.map((id) => ({ userId: id })),
1143
+ };
1144
+
1145
+ const createGroupChannelresponse =
1146
+ await groupChannelApi.createAGroupChannel({
1147
+ apiToken: API_TOKEN,
1148
+ createAGroupChannelRequest: request,
1149
+ });
1150
+
1151
+ await new Promise((resolve) => setTimeout(resolve, 100));
1152
+
1153
+ expect(createGroupChannelresponse).toHaveProperty("channelUrl");
1154
+ expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
1155
+
1156
+ const hideAChannelResponse = await groupChannelApi.hideAChannel({
1157
+ channelUrl: createGroupChannelresponse.channelUrl,
1158
+ apiToken: API_TOKEN,
1159
+ hideAChannelRequest: {
1160
+ userId: SECOND_USER_ID,
1161
+ allowAutoUnhide: true,
1162
+ shouldHideAll: false,
1163
+ },
1164
+ });
1165
+
1166
+ const groupChannelAfterHideResponse =
1167
+ await groupChannelApi.getAGroupChannel({
1168
+ channelUrl: createGroupChannelresponse.channelUrl,
1169
+ apiToken: API_TOKEN,
1170
+ showDeliveryReceipt: true,
1171
+ showReadReceipt: true,
1172
+ showMember: true,
1173
+ memberActiveMode: "all",
1174
+ userId: SECOND_USER_ID,
1175
+ });
1176
+
1177
+ const unhideAChannelResponse = await groupChannelApi.unhideAChannel({
1178
+ channelUrl: createGroupChannelresponse.channelUrl,
1179
+ apiToken: API_TOKEN,
1180
+ shouldUnhideAll: false,
1181
+ userId: SECOND_USER_ID,
1182
+ });
1183
+
1184
+ const groupChannelAfterUnHideResponse =
1185
+ await groupChannelApi.getAGroupChannel({
1186
+ channelUrl: createGroupChannelresponse.channelUrl,
1187
+ apiToken: API_TOKEN,
1188
+ showDeliveryReceipt: true,
1189
+ showReadReceipt: true,
1190
+ showMember: true,
1191
+ memberActiveMode: "all",
1192
+ userId: SECOND_USER_ID,
1193
+ });
1194
+
1195
+ expect(groupChannelAfterHideResponse.channelUrl).toBe(CHANNEL_URL);
1196
+ expect(groupChannelAfterHideResponse).toHaveProperty("hiddenState");
1197
+ expect(groupChannelAfterHideResponse.isHidden).toBeTruthy();
1198
+
1199
+ expect(groupChannelAfterHideResponse).toHaveProperty("hiddenState");
1200
+ expect(groupChannelAfterHideResponse.hiddenState).toBe(
1201
+ "hidden_allow_auto_unhide"
1202
+ );
1203
+ expect(
1204
+ validSendbirdGroupChannelHiddenStateEnum.includes(
1205
+ groupChannelAfterHideResponse.hiddenState
1206
+ )
1207
+ ).toBeTruthy();
1208
+
1209
+ expect(groupChannelAfterUnHideResponse).toHaveProperty("hiddenState");
1210
+ expect(groupChannelAfterUnHideResponse.isHidden).toBeFalsy();
1211
+ expect(groupChannelAfterUnHideResponse).toHaveProperty("hiddenState");
1212
+ expect(groupChannelAfterUnHideResponse.hiddenState).toBe("unhidden");
1213
+ expect(
1214
+ validSendbirdGroupChannelHiddenStateEnum.includes(
1215
+ groupChannelAfterUnHideResponse.hiddenState
1216
+ )
1217
+ ).toBeTruthy();
1218
+
1219
+ expect(hideAChannelResponse).toBeDefined();
1220
+ expect(unhideAChannelResponse).toBeDefined();
1221
+
1222
+ // Cleanup last
1223
+ try {
1224
+ await groupChannelApi.deleteAGroupChannel({
1225
+ channelUrl: createGroupChannelresponse.channelUrl,
1226
+ apiToken: API_TOKEN,
1227
+ });
1228
+ } catch (e) {
1229
+ console.warn("ignore error in cleanup", e);
1230
+ }
1231
+ });
1232
+
1233
+ it("call inviteAsMembers then acceptAnInvitation and checkIfMember", async () => {
1234
+ const CHANNEL_URL = "group-channel-member-invitation-test-channel-url";
1235
+ // Cleanup first
1236
+ try {
1237
+ await groupChannelApi.deleteAGroupChannel({
1238
+ channelUrl: CHANNEL_URL,
1239
+ apiToken: API_TOKEN,
1240
+ });
1241
+ } catch (e) {
1242
+ console.warn("ignore error in cleanup", e);
1243
+ }
1244
+
1245
+ await new Promise((resolve) => setTimeout(resolve, 500));
1246
+
1247
+ const request: CreateAGroupChannelRequest = {
1248
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
1249
+ blockSdkUserChannelJoin: true,
1250
+ channelUrl: CHANNEL_URL,
1251
+ coverUrl: "empty",
1252
+ customType: "data",
1253
+ data: "data",
1254
+ /**
1255
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
1256
+ */
1257
+ invitationStatus: {
1258
+ MASTER_USER_ID: "joined",
1259
+ },
1260
+ inviterId: MASTER_USER_ID,
1261
+ isDistinct: false,
1262
+ isEphemeral: true,
1263
+ isPublic: true,
1264
+ isSuper: true,
1265
+ name: "test",
1266
+ operatorIds: [],
1267
+ strict: true,
1268
+ users: USERS.map((id) => ({ userId: id })),
1269
+ };
1270
+
1271
+ const createGroupChannelresponse =
1272
+ await groupChannelApi.createAGroupChannel({
1273
+ apiToken: API_TOKEN,
1274
+ createAGroupChannelRequest: request,
1275
+ });
1276
+
1277
+ expect(createGroupChannelresponse).toHaveProperty("channelUrl");
1278
+ expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
1279
+
1280
+ await new Promise((resolve) => setTimeout(resolve, 100));
1281
+
1282
+ const inviteAsMembersResponse = await groupChannelApi.inviteAsMembers({
1283
+ channelUrl: CHANNEL_URL,
1284
+ apiToken: API_TOKEN,
1285
+ inviteAsMembersRequest: {
1286
+ inviterId: MASTER_USER_ID,
1287
+ userIds: [SECOND_USER_ID],
1288
+ },
1289
+ });
1290
+
1291
+ const groupChannelAfterInviteResponse =
1292
+ await groupChannelApi.getAGroupChannel({
1293
+ channelUrl: createGroupChannelresponse.channelUrl,
1294
+ apiToken: API_TOKEN,
1295
+ showDeliveryReceipt: true,
1296
+ showReadReceipt: true,
1297
+ showMember: true,
1298
+ memberActiveMode: "all",
1299
+ userId: SECOND_USER_ID,
1300
+ });
1301
+
1302
+ const acceptAnInvitationResponse = await groupChannelApi.acceptAnInvitation(
1303
+ {
1304
+ channelUrl: createGroupChannelresponse.channelUrl,
1305
+ apiToken: API_TOKEN,
1306
+ acceptAnInvitationRequest: {
1307
+ userId: SECOND_USER_ID,
1308
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
1309
+ },
1310
+ }
1311
+ );
1312
+
1313
+ const checkIfMemberResponse = await groupChannelApi.checkIfMember({
1314
+ channelUrl: createGroupChannelresponse.channelUrl,
1315
+ apiToken: API_TOKEN,
1316
+ userId: SECOND_USER_ID,
1317
+ });
1318
+
1319
+ const groupChannelAfterJoinedResponse =
1320
+ await groupChannelApi.getAGroupChannel({
1321
+ channelUrl: createGroupChannelresponse.channelUrl,
1322
+ apiToken: API_TOKEN,
1323
+ showDeliveryReceipt: true,
1324
+ showReadReceipt: true,
1325
+ showMember: true,
1326
+ memberActiveMode: "all",
1327
+ userId: SECOND_USER_ID,
1328
+ });
1329
+
1330
+ expect(inviteAsMembersResponse).toHaveProperty("invitedAt");
1331
+ expect(inviteAsMembersResponse).toHaveProperty("inviter");
1332
+ expect(inviteAsMembersResponse.inviter?.userId).toBe(MASTER_USER_ID);
1333
+ expect(inviteAsMembersResponse.inviter).toBeInstanceOf(
1334
+ SendbirdBasicUserInfo
1335
+ );
1336
+
1337
+ expect(groupChannelAfterInviteResponse).toHaveProperty("memberState");
1338
+ expect(groupChannelAfterInviteResponse.memberState).toBe("invited");
1339
+ expect(groupChannelAfterInviteResponse.memberCount).toBe(2);
1340
+ expect(groupChannelAfterInviteResponse.joinedMemberCount).toBe(1);
1341
+
1342
+ expect(acceptAnInvitationResponse.joinedMemberCount).toBe(2);
1343
+ expect(
1344
+ acceptAnInvitationResponse.members?.find(
1345
+ (member) => (member.state = "joined")
1346
+ )?.userId
1347
+ ).toBe(SECOND_USER_ID);
1348
+
1349
+ expect(groupChannelAfterJoinedResponse).toHaveProperty("memberState");
1350
+ expect(groupChannelAfterJoinedResponse).toHaveProperty("joinedTs");
1351
+ expect(groupChannelAfterJoinedResponse.joinedTs?.toString().length).toBe(
1352
+ 10
1353
+ );
1354
+ expect(groupChannelAfterJoinedResponse.memberState).toBe("joined");
1355
+ expect(groupChannelAfterJoinedResponse.memberCount).toBe(2);
1356
+ expect(groupChannelAfterJoinedResponse.joinedMemberCount).toBe(2);
1357
+
1358
+ expect(checkIfMemberResponse).toHaveProperty("isMember");
1359
+ expect(checkIfMemberResponse.isMember).toBeTruthy();
1360
+ expect(typeof checkIfMemberResponse.isMember).toBe("boolean");
1361
+
1362
+ expect(checkIfMemberResponse).toHaveProperty("state");
1363
+ expect(checkIfMemberResponse.state).toBeTruthy();
1364
+ expect(typeof checkIfMemberResponse.state).toBe("string");
1365
+ expect(
1366
+ validSendbirdGroupChannelMemberStateEnum.includes(
1367
+ checkIfMemberResponse.state
1368
+ )
1369
+ ).toBeTruthy();
1370
+
1371
+ // Cleanup last
1372
+ try {
1373
+ await groupChannelApi.deleteAGroupChannel({
1374
+ channelUrl: createGroupChannelresponse.channelUrl,
1375
+ apiToken: API_TOKEN,
1376
+ });
1377
+ } catch (e) {
1378
+ console.warn("ignore error in cleanup", e);
1379
+ }
1380
+ });
1381
+
1382
+ it("call joinAChannel then leaveAChannel", async () => {
1383
+ const CHANNEL_URL = "group-channel-join-leave-channel-test-channel-url";
1384
+ // Cleanup first
1385
+ try {
1386
+ await groupChannelApi.deleteAGroupChannel({
1387
+ channelUrl: CHANNEL_URL,
1388
+ apiToken: API_TOKEN,
1389
+ });
1390
+ } catch (e) {
1391
+ console.warn("ignore error in cleanup", e);
1392
+ }
1393
+
1394
+ await new Promise((resolve) => setTimeout(resolve, 500));
1395
+
1396
+ const request: CreateAGroupChannelRequest = {
1397
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
1398
+ blockSdkUserChannelJoin: true,
1399
+ channelUrl: CHANNEL_URL,
1400
+ coverUrl: "empty",
1401
+ customType: "data",
1402
+ data: "data",
1403
+ /**
1404
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
1405
+ */
1406
+ invitationStatus: {
1407
+ MASTER_USER_ID: "joined",
1408
+ },
1409
+ inviterId: MASTER_USER_ID,
1410
+ isDistinct: false,
1411
+ isEphemeral: true,
1412
+ isPublic: true,
1413
+ isSuper: true,
1414
+ name: "test",
1415
+ operatorIds: [],
1416
+ strict: true,
1417
+ users: USERS.map((id) => ({ userId: id })),
1418
+ };
1419
+
1420
+ const createGroupChannelresponse =
1421
+ await groupChannelApi.createAGroupChannel({
1422
+ apiToken: API_TOKEN,
1423
+ createAGroupChannelRequest: request,
1424
+ });
1425
+
1426
+ await new Promise((resolve) => setTimeout(resolve, 100));
1427
+
1428
+ expect(createGroupChannelresponse).toHaveProperty("channelUrl");
1429
+ expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
1430
+
1431
+ const joinAChannelResponse = await groupChannelApi.joinAChannel({
1432
+ channelUrl: CHANNEL_URL,
1433
+ apiToken: API_TOKEN,
1434
+ joinAChannelRequest: {
1435
+ userId: SECOND_USER_ID,
1436
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
1437
+ },
1438
+ });
1439
+
1440
+ const leaveAChannelResponse = await groupChannelApi.leaveAChannel({
1441
+ channelUrl: createGroupChannelresponse.channelUrl,
1442
+ apiToken: API_TOKEN,
1443
+ leaveAChannelRequest: {
1444
+ shouldLeaveAll: false,
1445
+ userIds: [SECOND_USER_ID],
1446
+ },
1447
+ });
1448
+
1449
+ const getAGroupChannelResponse = await groupChannelApi.getAGroupChannel({
1450
+ channelUrl: createGroupChannelresponse.channelUrl,
1451
+ apiToken: API_TOKEN,
1452
+ showDeliveryReceipt: true,
1453
+ showReadReceipt: true,
1454
+ showMember: true,
1455
+ memberActiveMode: "all",
1456
+ userId: MASTER_USER_ID,
1457
+ });
1458
+
1459
+ expect(joinAChannelResponse.memberCount).toBe(2);
1460
+ expect(joinAChannelResponse.joinedMemberCount).toBe(2);
1461
+
1462
+ expect(leaveAChannelResponse).toBeDefined();
1463
+
1464
+ expect(getAGroupChannelResponse.memberCount).toBe(1);
1465
+ expect(getAGroupChannelResponse.joinedMemberCount).toBe(1);
1466
+
1467
+ // Cleanup last
1468
+ try {
1469
+ await groupChannelApi.deleteAGroupChannel({
1470
+ channelUrl: createGroupChannelresponse.channelUrl,
1471
+ apiToken: API_TOKEN,
1472
+ });
1473
+ } catch (e) {
1474
+ console.warn("ignore error in cleanup", e);
1475
+ }
1476
+ });
1477
+
1478
+ it("call updateAGroupChannel", async () => {
1479
+ const CHANNEL_URL = "group-channel-update-channel-test-channel-url";
1480
+ // Cleanup first
1481
+ try {
1482
+ await groupChannelApi.deleteAGroupChannel({
1483
+ channelUrl: CHANNEL_URL,
1484
+ apiToken: API_TOKEN,
1485
+ });
1486
+ } catch (e) {
1487
+ //ignore
1488
+ console.warn("ignore error in cleanup", e);
1489
+ }
1490
+
1491
+ await new Promise((resolve) => setTimeout(resolve, 500));
1492
+
1493
+ const request: CreateAGroupChannelRequest = {
1494
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
1495
+ blockSdkUserChannelJoin: true,
1496
+ channelUrl: CHANNEL_URL,
1497
+ coverUrl: "empty",
1498
+ customType: "data",
1499
+ data: "data",
1500
+ /**
1501
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
1502
+ */
1503
+ invitationStatus: {
1504
+ MASTER_USER_ID: "joined",
1505
+ },
1506
+ inviterId: MASTER_USER_ID,
1507
+ isDistinct: false,
1508
+ isEphemeral: true,
1509
+ isPublic: true,
1510
+ isSuper: true,
1511
+ name: "test",
1512
+ operatorIds: [],
1513
+ strict: true,
1514
+ users: USERS.map((id) => ({ userId: id })),
1515
+ };
1516
+
1517
+ const createGroupChannelResponse =
1518
+ await groupChannelApi.createAGroupChannel({
1519
+ apiToken: API_TOKEN,
1520
+ createAGroupChannelRequest: request,
1521
+ });
1522
+
1523
+ expect(createGroupChannelResponse).toHaveProperty("channelUrl");
1524
+ expect(createGroupChannelResponse.channelUrl).toBe(CHANNEL_URL);
1525
+
1526
+ await new Promise((resolve) => setTimeout(resolve, 100));
1527
+
1528
+ const updateAGroupChannelResponse =
1529
+ await groupChannelApi.updateAGroupChannel({
1530
+ channelUrl: CHANNEL_URL,
1531
+ apiToken: API_TOKEN,
1532
+ updateAGroupChannelRequest: {
1533
+ name: "test2",
1534
+ data: "data2",
1535
+ },
1536
+ });
1537
+
1538
+ expect(updateAGroupChannelResponse.name).toBe("test2");
1539
+ expect(updateAGroupChannelResponse.data).toBe("data2");
1540
+
1541
+ // Cleanup last
1542
+ try {
1543
+ await groupChannelApi.deleteAGroupChannel({
1544
+ channelUrl: CHANNEL_URL,
1545
+ apiToken: API_TOKEN,
1546
+ });
1547
+ } catch (e) {
1548
+ console.warn("ignore error in cleanup", e);
1549
+ }
1550
+ });
1551
+
1552
+ it("call resetChatHistory", async () => {
1553
+ const CHANNEL_URL = "group-channel-reset-chat-history-test-channel-url";
1554
+ // Cleanup first
1555
+ try {
1556
+ await groupChannelApi.deleteAGroupChannel({
1557
+ channelUrl: CHANNEL_URL,
1558
+ apiToken: API_TOKEN,
1559
+ });
1560
+ } catch (e) {
1561
+ //ignore
1562
+ console.warn("ignore error in cleanup", e);
1563
+ }
1564
+
1565
+ await new Promise((resolve) => setTimeout(resolve, 500));
1566
+
1567
+ const request: CreateAGroupChannelRequest = {
1568
+ accessCode: GLOBAL_GROUP_CHANNEL_ACCESS_CODE,
1569
+ blockSdkUserChannelJoin: true,
1570
+ channelUrl: CHANNEL_URL,
1571
+ coverUrl: "empty",
1572
+ customType: "data",
1573
+ data: "data",
1574
+ /**
1575
+ * Specifies one or more key-value pair items which set the invitation status of each user invited to the channel. The key should be a user_id and the value should be their joining status. Acceptable values are joined, invited_by_friend, and invited_by_non_friend. (Default: joined)
1576
+ */
1577
+ invitationStatus: Object.fromEntries(USERS.map((id) => [id, "joined"])),
1578
+ inviterId: MASTER_USER_ID,
1579
+ isDistinct: false,
1580
+ isEphemeral: true,
1581
+ isPublic: true,
1582
+ isSuper: true,
1583
+ name: "test",
1584
+ operatorIds: [],
1585
+ strict: true,
1586
+ users: USERS.map((id) => ({ userId: id })),
1587
+ };
1588
+ const createGroupChannelresponse =
1589
+ await groupChannelApi.createAGroupChannel({
1590
+ apiToken: API_TOKEN,
1591
+ createAGroupChannelRequest: request,
1592
+ });
1593
+
1594
+ await new Promise((resolve) => setTimeout(resolve, 100));
1595
+
1596
+ expect(createGroupChannelresponse).toHaveProperty("channelUrl");
1597
+ expect(createGroupChannelresponse.channelUrl).toBe(CHANNEL_URL);
1598
+
1599
+ const resetChatHistoryresponse = await groupChannelApi.resetChatHistory({
1600
+ apiToken: API_TOKEN,
1601
+ channelUrl: createGroupChannelresponse.channelUrl,
1602
+ resetChatHistoryRequest: {
1603
+ userId: MASTER_USER_ID,
1604
+ resetAll: true,
1605
+ },
1606
+ });
1607
+
1608
+ expect(resetChatHistoryresponse).toHaveProperty("tsMessageOffset");
1609
+ expect(typeof resetChatHistoryresponse.tsMessageOffset).toBe("number");
1610
+ expect(resetChatHistoryresponse.tsMessageOffset?.toString().length).toBe(
1611
+ 13
1612
+ );
1613
+
1614
+ // Cleanup last
1615
+ try {
1616
+ await groupChannelApi.deleteAGroupChannel({
1617
+ channelUrl: createGroupChannelresponse.channelUrl,
1618
+ apiToken: API_TOKEN,
1619
+ });
1620
+ } catch (e) {
1621
+ console.warn("ignore error in cleanup", e);
1622
+ }
1623
+ });
1624
+ });