66class STREAMCHATAPI_API
FChatApi :
public TSharedFromThis<FChatApi>
69 static TSharedRef<FChatApi> Create(
const FString& InApiKey,
const FString& InHost,
const TSharedPtr<FTokenManager>&);
71#pragma region Moderation
91 const FString& TargetUserId,
92 const FString&
Type = {},
93 const FString&
Id = {},
94 const TOptional<FTimespan>& Timeout = {},
95 const TOptional<FString>& Reason = {},
98 TCallback<FResponseDto> Callback = {})
const;
107 void UnbanUser(
const FString& TargetUserId,
const FString&
Type = {},
const FString&
Id = {}, TCallback<FResponseDto> Callback = {})
const;
123 void QueryBannedUsers(
124 const TSharedRef<FJsonObject>& Filter,
125 const TArray<FSortParamRequestDto>& SortOptions = {},
126 const TOptional<FDateTime> CreatedAtAfterOrEqual = {},
127 const TOptional<FDateTime> CreatedAtAfter = {},
128 const TOptional<FDateTime> CreatedAtBeforeOrEqual = {},
129 const TOptional<FDateTime> CreatedAtBefore = {},
130 TOptional<uint32> Limit = {},
131 TOptional<uint32> Offset = {},
132 TCallback<FQueryBannedUsersResponseDto> Callback = {})
const;
143 const FString& TargetMessageId = {},
144 const FString& TargetUserId = {},
145 const FString& Reason = {},
146 const TMap<FString, FString>& CustomData = {},
147 TCallback<FFlagResponseDto> Callback = {})
const;
155 void Unflag(
const FString& TargetMessageId = {},
const FString& TargetUserId = {}, TCallback<FFlagResponseDto> Callback = {})
const;
163 void MuteUsers(
const TArray<FString>& TargetUserIds, TOptional<FTimespan> Timeout = {}, TCallback<FMuteUserResponseDto> Callback = {})
const;
170 void UnmuteUsers(
const TArray<FString>& TargetUserIds, TCallback<FResponseDto> Callback = {})
const;
178 void MuteChannels(
const TArray<FString>& TargetCids, TOptional<FTimespan> Timeout = {}, TCallback<FMuteChannelResponseDto> Callback = {})
const;
185 void UnmuteChannels(
const TArray<FString>& TargetCids, TCallback<FResponseDto> Callback = {})
const;
196 void BlockUser(
const FString& TargetUserId, TCallback<FBlockUserResponseDto> Callback = {})
const;
203 void UnblockUser(
const FString& TargetUserId, TCallback<FResponseDto> Callback = {})
const;
209 void GetBlockedUsers(TCallback<FGetBlockedUsersResponseDto> Callback = {})
const;
212#pragma endregion Moderation
214#pragma region Channels
234 const FString& ChannelType,
235 const FString& ConnectionId,
238 const TOptional<FString>& ChannelId = {},
239 const TOptional<FMessagePaginationParamsRequestDto> MessagePagination = {},
240 const TOptional<FPaginationParamsRequestDto> MemberPagination = {},
241 const TOptional<FPaginationParamsRequestDto> WatcherPagination = {},
242 TCallback<FChannelStateResponseDto> Callback = {})
const;
250 void DeleteChannel(
const FString& ChannelType,
const FString& ChannelId, TCallback<FDeleteChannelResponseDto> Callback = {})
const;
260 void PartialUpdateChannel(
261 const FString& ChannelType,
262 const FString& ChannelId,
263 const TSharedRef<FJsonObject>& Set,
264 const TArray<FString>& Unset,
265 TCallback<FUpdateChannelPartialResponseDto> Callback = {})
const;
275 const FString& ChannelType,
276 const FString& ChannelId,
278 TCallback<FUpdateChannelResponseDto> Callback = {})
const;
288 void HideChannel(
const FString& ChannelType,
const FString& ChannelId,
bool bClearHistory =
false, TCallback<FResponseDto> Callback = {})
const;
296 void ShowChannel(
const FString& ChannelType,
const FString& ChannelId, TCallback<FResponseDto> Callback = {})
const;
314 const FString& ConnectionId,
316 const TOptional<TSharedRef<FJsonObject>>& Filter = {},
317 const TArray<FSortParamRequestDto>& SortOptions = {},
318 TOptional<uint32> MemberLimit = {},
319 TOptional<uint32> MessageLimit = {},
320 TOptional<uint32> Limit = {},
321 TOptional<uint32> Offset = {},
322 TCallback<FChannelsResponseDto> Callback = {})
const;
331 void StopWatchingChannel(
const FString& ChannelType,
const FString& ChannelId,
const FString& ConnectionId, TCallback<FResponseDto> Callback = {})
const;
349 const TSharedRef<FJsonObject>& ChannelFilter,
350 const TOptional<FString>&
Query = {},
351 const TOptional<TSharedRef<FJsonObject>>& MessageFilter = {},
352 const TArray<FSortParamRequestDto>& Sort = {},
353 TOptional<uint32> MessageLimit = {},
354 TOptional<uint32> Offset = {},
355 TOptional<FString> Next = {},
356 TCallback<FSearchResponseDto> Callback = {})
const;
362 void MarkChannelsRead(TCallback<FMarkReadResponseDto> Callback = {})
const;
371 void MarkChannelRead(
372 const FString& ChannelType,
373 const FString& ChannelId,
374 const TOptional<FString>& MessageId = {},
375 TCallback<FMarkReadResponseDto> Callback = {})
const;
390 const FString& ChannelType,
391 const TOptional<TSharedRef<FJsonObject>>& Filter = {},
392 const TOptional<FString>& ChannelId = {},
393 const TOptional<TArray<FString>>& Members = {},
394 const TArray<FSortParamRequestDto>& SortOptions = {},
396 TCallback<FMembersResponseDto> Callback = {})
const;
408 void TruncateChannel(
409 const FString& ChannelType,
410 const FString& ChannelId,
411 bool bHardDelete =
false,
412 const TOptional<FDateTime>& TruncatedAt = {},
413 const TOptional<FMessageRequestDto>& Message = {},
414 bool bSkipPush =
false,
415 TCallback<FTruncateChannelResponseDto> Callback = {})
const;
418#pragma endregion Channels
420#pragma region Messages
431 void GetMessage(
const FString& MessageId, TCallback<FMessageResponseDto> Callback = {})
const;
442 const FString& ChannelType,
443 const FString& ChannelId,
445 bool bSkipPush =
false,
446 TCallback<FMessageResponseDto> Callback = {})
const;
453 void UpdateMessage(
const FMessageRequestDto& MessageRequest, TCallback<FMessageResponseDto> Callback = {})
const;
461 void DeleteMessage(
const FString&
Id,
bool bHard =
false, TCallback<FMessageResponseDto> Callback = {})
const;
477 const FString& ChannelType,
478 const FString& ChannelId,
479 const FString& FileName,
480 const TArray<uint8>& Content,
481 TCallback<FFileUploadResponseDto> Callback = {})
const;
497 const FString& ChannelType,
498 const FString& ChannelId,
499 const FString& FileName,
500 const TArray<uint8>& Content,
501 TCallback<FFileUploadResponseDto> Callback = {})
const;
510 void DeleteFile(
const FString& ChannelType,
const FString& ChannelId,
const FString& Url, TCallback<FResponseDto> Callback = {})
const;
519 void DeleteImage(
const FString& ChannelType,
const FString& ChannelId,
const FString& Url, TCallback<FResponseDto> Callback = {})
const;
532 const FString& MessageId,
534 bool bEnforceUnique =
true,
535 TOptional<uint32> Score = {},
536 bool bSkipPush =
false,
537 TCallback<FReactionResponseDto> Callback = {})
const;
545 void DeleteReaction(
const FString& MessageId,
const FName&
Type, TCallback<FReactionResponseDto> Callback = {})
const;
554 void GetReactions(
const FString& MessageId, TOptional<uint32> Limit, TOptional<uint32> Offset, TCallback<FGetReactionsResponseDto> Callback = {})
const;
570#pragma endregion Messages
572#pragma region Threads
594 const FString& ConnectionId = {},
595 const TOptional<TSharedRef<FJsonObject>>& Filter = {},
596 const TArray<FSortParamRequestDto>& SortOptions = {},
597 TOptional<uint32> Limit = {},
598 TOptional<uint32> ReplyLimit = {},
599 TOptional<uint32> ParticipantLimit = {},
600 TOptional<uint32> MemberLimit = {},
601 const TOptional<FString>& Next = {},
603 TCallback<FQueryThreadsResponseDto> Callback = {})
const;
618 const FString& MessageId,
619 const FString& ConnectionId = {},
621 TOptional<uint32> ReplyLimit = {},
622 TOptional<uint32> ParticipantLimit = {},
623 TOptional<uint32> MemberLimit = {},
624 TCallback<FGetThreadResponseDto> Callback = {})
const;
627#pragma endregion Threads
642 template <
class TEvent>
643 void SendChannelEvent(
const FString& ChannelType,
const FString& ChannelId,
const TEvent&, TCallback<FEventResponseDto> Callback = {});
646#pragma endregion Events
655#pragma endregion Files
675 const FString& ConnectionId,
676 bool bPresence =
true,
677 const TOptional<TSharedRef<FJsonObject>>& Filter = {},
678 const TArray<FSortParamRequestDto>& SortOptions = {},
679 TOptional<uint32> Limit = {},
680 TOptional<uint32> Offset = {},
681 TCallback<FUsersResponseDto> Callback = {})
const;
683 void CreateGuest(
const FUserObjectRequestDto& User, TCallback<FGuestResponseDto> Callback = {})
const;
685 struct FPartialUpdateUser
688 const TSharedRef<FJsonObject>& Set;
689 const TArray<FString>& Unset;
697 void PartialUpdateUsers(
const TArray<FPartialUpdateUser>& Users, TCallback<FUpdateUsersResponseDto> Callback = {})
const;
704 void UpsertUsers(
const TMap<FString, FUserObjectRequestDto>& Users, TCallback<FUpdateUsersResponseDto> Callback = {})
const;
707#pragma endregion Users
709#pragma region Devices
721 void AddDevice(
const FString& DeviceId, EPushProvider PushProvider, TCallback<FResponseDto> Callback = {})
const;
728 void RemoveDevice(
const FString& DeviceId, TCallback<FResponseDto> Callback = {})
const;
734 void ListDevices(TCallback<FListDevicesResponseDto> Callback = {})
const;
737#pragma endregion Devices
740 explicit FChatApi(
const FString& InApiKey,
const FString& InHost,
const TSharedPtr<FTokenManager>&);
741 void SendChannelEventInternal(
742 const FString& ChannelType,
743 const FString& ChannelId,
744 const TSharedRef<FJsonObject>& Event,
745 TCallback<FEventResponseDto> Callback = {})
const;
747 FString BuildUrl(
const FString& Path)
const;
749 void AddAuth(FRequestBuilder&,
const FToken& Token)
const;
750 void OnRequest(FRequestBuilder&)
const;
751 void OnError(
const FHttpResponse&, FRequestBuilder&)
const;
753 TSharedPtr<FTokenManager> TokenManager;
756 TSharedPtr<FHttpClient> Client;