@getlatedev/node 0.1.24 → 0.1.26
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.
- package/README.md +14 -16
- package/dist/index.d.mts +73 -545
- package/dist/index.d.ts +73 -545
- package/dist/index.js +0 -14
- package/dist/index.mjs +0 -14
- package/package.json +1 -1
- package/src/client.ts +0 -4
- package/src/generated/sdk.gen.ts +128 -534
- package/src/generated/types.gen.ts +72 -550
package/src/generated/sdk.gen.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// This file is auto-generated by @hey-api/openapi-ts
|
|
2
2
|
|
|
3
3
|
import { createClient, createConfig, type OptionsLegacyParser, formDataBodySerializer } from '@hey-api/client-fetch';
|
|
4
|
-
import type { DownloadYouTubeVideoData, DownloadYouTubeVideoError, DownloadYouTubeVideoResponse, GetYouTubeTranscriptData, GetYouTubeTranscriptError, GetYouTubeTranscriptResponse, DownloadInstagramMediaData, DownloadInstagramMediaError, DownloadInstagramMediaResponse, CheckInstagramHashtagsData, CheckInstagramHashtagsError, CheckInstagramHashtagsResponse, DownloadTikTokVideoData, DownloadTikTokVideoError, DownloadTikTokVideoResponse, DownloadTwitterMediaData, DownloadTwitterMediaError, DownloadTwitterMediaResponse, DownloadFacebookVideoData, DownloadFacebookVideoError, DownloadFacebookVideoResponse, DownloadLinkedInVideoData, DownloadLinkedInVideoError, DownloadLinkedInVideoResponse, DownloadBlueskyMediaData, DownloadBlueskyMediaError, DownloadBlueskyMediaResponse, GetAnalyticsData, GetAnalyticsError, GetAnalyticsResponse, GetYouTubeDailyViewsData, GetYouTubeDailyViewsError, GetYouTubeDailyViewsResponse, ListAccountGroupsError, ListAccountGroupsResponse, CreateAccountGroupData, CreateAccountGroupError, CreateAccountGroupResponse, UpdateAccountGroupData, UpdateAccountGroupError, UpdateAccountGroupResponse, DeleteAccountGroupData, DeleteAccountGroupError, DeleteAccountGroupResponse, GetMediaPresignedUrlData, GetMediaPresignedUrlError, GetMediaPresignedUrlResponse, SearchRedditData, SearchRedditError, SearchRedditResponse, GetRedditFeedData, GetRedditFeedError, GetRedditFeedResponse, GetUsageStatsError, GetUsageStatsResponse, ListPostsData, ListPostsError, ListPostsResponse, CreatePostData, CreatePostError, CreatePostResponse, GetPostData, GetPostError, GetPostResponse, UpdatePostData, UpdatePostError, UpdatePostResponse, DeletePostData, DeletePostError, DeletePostResponse, BulkUploadPostsData, BulkUploadPostsError, BulkUploadPostsResponse, RetryPostData, RetryPostError, RetryPostResponse, UnpublishPostData, UnpublishPostError, UnpublishPostResponse, ListUsersError, ListUsersResponse, GetUserData, GetUserError, GetUserResponse, ListProfilesData, ListProfilesError, ListProfilesResponse, CreateProfileData, CreateProfileError, CreateProfileResponse, GetProfileData, GetProfileError, GetProfileResponse, UpdateProfileData, UpdateProfileError, UpdateProfileResponse, DeleteProfileData, DeleteProfileError, DeleteProfileResponse, ListAccountsData, ListAccountsError, ListAccountsResponse, GetFollowerStatsData, GetFollowerStatsError, GetFollowerStatsResponse, UpdateAccountData, UpdateAccountError, UpdateAccountResponse, DeleteAccountData, DeleteAccountError, DeleteAccountResponse, GetAllAccountsHealthData, GetAllAccountsHealthError, GetAllAccountsHealthResponse, GetAccountHealthData, GetAccountHealthError, GetAccountHealthResponse, ListApiKeysError, ListApiKeysResponse, CreateApiKeyData, CreateApiKeyError, CreateApiKeyResponse, DeleteApiKeyData, DeleteApiKeyError, DeleteApiKeyResponse, CreateInviteTokenData, CreateInviteTokenError, CreateInviteTokenResponse, GetConnectUrlData, GetConnectUrlError, GetConnectUrlResponse, HandleOAuthCallbackData, HandleOAuthCallbackError, HandleOAuthCallbackResponse, ListFacebookPagesData, ListFacebookPagesError, ListFacebookPagesResponse, SelectFacebookPageData, SelectFacebookPageError, SelectFacebookPageResponse, ListGoogleBusinessLocationsData, ListGoogleBusinessLocationsError, ListGoogleBusinessLocationsResponse, SelectGoogleBusinessLocationData, SelectGoogleBusinessLocationError, SelectGoogleBusinessLocationResponse, GetGoogleBusinessReviewsData, GetGoogleBusinessReviewsError, GetGoogleBusinessReviewsResponse, GetGoogleBusinessFoodMenusData, GetGoogleBusinessFoodMenusError, GetGoogleBusinessFoodMenusResponse, UpdateGoogleBusinessFoodMenusData, UpdateGoogleBusinessFoodMenusError, UpdateGoogleBusinessFoodMenusResponse, GetGoogleBusinessLocationDetailsData, GetGoogleBusinessLocationDetailsError, GetGoogleBusinessLocationDetailsResponse, UpdateGoogleBusinessLocationDetailsData, UpdateGoogleBusinessLocationDetailsError, UpdateGoogleBusinessLocationDetailsResponse, ListGoogleBusinessMediaData, ListGoogleBusinessMediaError, ListGoogleBusinessMediaResponse, CreateGoogleBusinessMediaData, CreateGoogleBusinessMediaError, CreateGoogleBusinessMediaResponse, DeleteGoogleBusinessMediaData, DeleteGoogleBusinessMediaError, DeleteGoogleBusinessMediaResponse, GetGoogleBusinessAttributesData, GetGoogleBusinessAttributesError, GetGoogleBusinessAttributesResponse, UpdateGoogleBusinessAttributesData, UpdateGoogleBusinessAttributesError, UpdateGoogleBusinessAttributesResponse, ListGoogleBusinessPlaceActionsData, ListGoogleBusinessPlaceActionsError, ListGoogleBusinessPlaceActionsResponse, CreateGoogleBusinessPlaceActionData, CreateGoogleBusinessPlaceActionError, CreateGoogleBusinessPlaceActionResponse, DeleteGoogleBusinessPlaceActionData, DeleteGoogleBusinessPlaceActionError, DeleteGoogleBusinessPlaceActionResponse, GetPendingOAuthDataData, GetPendingOAuthDataError, GetPendingOAuthDataResponse, ListLinkedInOrganizationsData, ListLinkedInOrganizationsError, ListLinkedInOrganizationsResponse, SelectLinkedInOrganizationData, SelectLinkedInOrganizationError, SelectLinkedInOrganizationResponse, ListPinterestBoardsForSelectionData, ListPinterestBoardsForSelectionError, ListPinterestBoardsForSelectionResponse, SelectPinterestBoardData, SelectPinterestBoardError, SelectPinterestBoardResponse, ListSnapchatProfilesData, ListSnapchatProfilesError, ListSnapchatProfilesResponse, SelectSnapchatProfileData, SelectSnapchatProfileError, SelectSnapchatProfileResponse, ConnectBlueskyCredentialsData, ConnectBlueskyCredentialsError, ConnectBlueskyCredentialsResponse, GetTelegramConnectStatusData, GetTelegramConnectStatusError, GetTelegramConnectStatusResponse, InitiateTelegramConnectData, InitiateTelegramConnectError, InitiateTelegramConnectResponse, CompleteTelegramConnectData, CompleteTelegramConnectError, CompleteTelegramConnectResponse, GetFacebookPagesData, GetFacebookPagesError, GetFacebookPagesResponse, UpdateFacebookPageData, UpdateFacebookPageError, UpdateFacebookPageResponse, GetLinkedInOrganizationsData, GetLinkedInOrganizationsError, GetLinkedInOrganizationsResponse, GetLinkedInAggregateAnalyticsData, GetLinkedInAggregateAnalyticsError, GetLinkedInAggregateAnalyticsResponse, GetLinkedInPostAnalyticsData, GetLinkedInPostAnalyticsError, GetLinkedInPostAnalyticsResponse, UpdateLinkedInOrganizationData, UpdateLinkedInOrganizationError, UpdateLinkedInOrganizationResponse, GetLinkedInMentionsData, GetLinkedInMentionsError, GetLinkedInMentionsResponse, GetPinterestBoardsData, GetPinterestBoardsError, GetPinterestBoardsResponse, UpdatePinterestBoardsData, UpdatePinterestBoardsError, UpdatePinterestBoardsResponse, GetGmbLocationsData, GetGmbLocationsError, GetGmbLocationsResponse, UpdateGmbLocationData, UpdateGmbLocationError, UpdateGmbLocationResponse, GetRedditSubredditsData, GetRedditSubredditsError, GetRedditSubredditsResponse, UpdateRedditSubredditsData, UpdateRedditSubredditsError, UpdateRedditSubredditsResponse, GetRedditFlairsData, GetRedditFlairsError, GetRedditFlairsResponse, ListQueueSlotsData, ListQueueSlotsError, ListQueueSlotsResponse, CreateQueueSlotData, CreateQueueSlotError, CreateQueueSlotResponse, UpdateQueueSlotData, UpdateQueueSlotError, UpdateQueueSlotResponse, DeleteQueueSlotData, DeleteQueueSlotError, DeleteQueueSlotResponse, PreviewQueueData, PreviewQueueError, PreviewQueueResponse, GetNextQueueSlotData, GetNextQueueSlotError, GetNextQueueSlotResponse, GetWebhookSettingsError, GetWebhookSettingsResponse, CreateWebhookSettingsData, CreateWebhookSettingsError, CreateWebhookSettingsResponse, UpdateWebhookSettingsData, UpdateWebhookSettingsError, UpdateWebhookSettingsResponse, DeleteWebhookSettingsData, DeleteWebhookSettingsError, DeleteWebhookSettingsResponse, TestWebhookData, TestWebhookError, TestWebhookResponse, GetWebhookLogsData, GetWebhookLogsError, GetWebhookLogsResponse, ListLogsData, ListLogsError, ListLogsResponse, GetLogData, GetLogError, GetLogResponse, ListPostsLogsData, ListPostsLogsError, ListPostsLogsResponse, ListConnectionLogsData, ListConnectionLogsError, ListConnectionLogsResponse, GetPostLogsData, GetPostLogsError, GetPostLogsResponse, ListInboxConversationsData, ListInboxConversationsError, ListInboxConversationsResponse, GetInboxConversationData, GetInboxConversationError, GetInboxConversationResponse, UpdateInboxConversationData, UpdateInboxConversationError, UpdateInboxConversationResponse, GetInboxConversationMessagesData, GetInboxConversationMessagesError, GetInboxConversationMessagesResponse, SendInboxMessageData, SendInboxMessageError, SendInboxMessageResponse, EditInboxMessageData, EditInboxMessageError, EditInboxMessageResponse, GetMessengerMenuData, GetMessengerMenuError, GetMessengerMenuResponse, SetMessengerMenuData, SetMessengerMenuError, SetMessengerMenuResponse, DeleteMessengerMenuData, DeleteMessengerMenuError, DeleteMessengerMenuResponse, GetInstagramIceBreakersData, GetInstagramIceBreakersError, GetInstagramIceBreakersResponse, SetInstagramIceBreakersData, SetInstagramIceBreakersError, SetInstagramIceBreakersResponse, DeleteInstagramIceBreakersData, DeleteInstagramIceBreakersError, DeleteInstagramIceBreakersResponse, GetTelegramCommandsData, GetTelegramCommandsError, GetTelegramCommandsResponse, SetTelegramCommandsData, SetTelegramCommandsError, SetTelegramCommandsResponse, DeleteTelegramCommandsData, DeleteTelegramCommandsError, DeleteTelegramCommandsResponse, ListInboxCommentsData, ListInboxCommentsError, ListInboxCommentsResponse, GetInboxPostCommentsData, GetInboxPostCommentsError, GetInboxPostCommentsResponse, ReplyToInboxPostData, ReplyToInboxPostError, ReplyToInboxPostResponse, DeleteInboxCommentData, DeleteInboxCommentError, DeleteInboxCommentResponse, HideInboxCommentData, HideInboxCommentError, HideInboxCommentResponse, UnhideInboxCommentData, UnhideInboxCommentError, UnhideInboxCommentResponse, LikeInboxCommentData, LikeInboxCommentError, LikeInboxCommentResponse, UnlikeInboxCommentData, UnlikeInboxCommentError, UnlikeInboxCommentResponse, SendPrivateReplyToCommentData, SendPrivateReplyToCommentError, SendPrivateReplyToCommentResponse, ListInboxReviewsData, ListInboxReviewsError, ListInboxReviewsResponse, ReplyToInboxReviewData, ReplyToInboxReviewError, ReplyToInboxReviewResponse, DeleteInboxReviewReplyData, DeleteInboxReviewReplyError, DeleteInboxReviewReplyResponse } from './types.gen';
|
|
4
|
+
import type { DownloadYouTubeVideoData, DownloadYouTubeVideoError, DownloadYouTubeVideoResponse, GetYouTubeTranscriptData, GetYouTubeTranscriptError, GetYouTubeTranscriptResponse, DownloadInstagramMediaData, DownloadInstagramMediaError, DownloadInstagramMediaResponse, CheckInstagramHashtagsData, CheckInstagramHashtagsError, CheckInstagramHashtagsResponse, DownloadTikTokVideoData, DownloadTikTokVideoError, DownloadTikTokVideoResponse, DownloadTwitterMediaData, DownloadTwitterMediaError, DownloadTwitterMediaResponse, DownloadFacebookVideoData, DownloadFacebookVideoError, DownloadFacebookVideoResponse, DownloadLinkedInVideoData, DownloadLinkedInVideoError, DownloadLinkedInVideoResponse, DownloadBlueskyMediaData, DownloadBlueskyMediaError, DownloadBlueskyMediaResponse, GetAnalyticsData, GetAnalyticsError, GetAnalyticsResponse, GetYouTubeDailyViewsData, GetYouTubeDailyViewsError, GetYouTubeDailyViewsResponse, ListAccountGroupsError, ListAccountGroupsResponse, CreateAccountGroupData, CreateAccountGroupError, CreateAccountGroupResponse, UpdateAccountGroupData, UpdateAccountGroupError, UpdateAccountGroupResponse, DeleteAccountGroupData, DeleteAccountGroupError, DeleteAccountGroupResponse, GetMediaPresignedUrlData, GetMediaPresignedUrlError, GetMediaPresignedUrlResponse, SearchRedditData, SearchRedditError, SearchRedditResponse, GetRedditFeedData, GetRedditFeedError, GetRedditFeedResponse, GetUsageStatsError, GetUsageStatsResponse, ListPostsData, ListPostsError, ListPostsResponse, CreatePostData, CreatePostError, CreatePostResponse, GetPostData, GetPostError, GetPostResponse, UpdatePostData, UpdatePostError, UpdatePostResponse, DeletePostData, DeletePostError, DeletePostResponse, BulkUploadPostsData, BulkUploadPostsError, BulkUploadPostsResponse, RetryPostData, RetryPostError, RetryPostResponse, UnpublishPostData, UnpublishPostError, UnpublishPostResponse, ListUsersError, ListUsersResponse, GetUserData, GetUserError, GetUserResponse, ListProfilesData, ListProfilesError, ListProfilesResponse, CreateProfileData, CreateProfileError, CreateProfileResponse, GetProfileData, GetProfileError, GetProfileResponse, UpdateProfileData, UpdateProfileError, UpdateProfileResponse, DeleteProfileData, DeleteProfileError, DeleteProfileResponse, ListAccountsData, ListAccountsError, ListAccountsResponse, GetFollowerStatsData, GetFollowerStatsError, GetFollowerStatsResponse, UpdateAccountData, UpdateAccountError, UpdateAccountResponse, DeleteAccountData, DeleteAccountError, DeleteAccountResponse, GetAllAccountsHealthData, GetAllAccountsHealthError, GetAllAccountsHealthResponse, GetAccountHealthData, GetAccountHealthError, GetAccountHealthResponse, ListApiKeysError, ListApiKeysResponse, CreateApiKeyData, CreateApiKeyError, CreateApiKeyResponse, DeleteApiKeyData, DeleteApiKeyError, DeleteApiKeyResponse, CreateInviteTokenData, CreateInviteTokenError, CreateInviteTokenResponse, GetConnectUrlData, GetConnectUrlError, GetConnectUrlResponse, HandleOAuthCallbackData, HandleOAuthCallbackError, HandleOAuthCallbackResponse, ListFacebookPagesData, ListFacebookPagesError, ListFacebookPagesResponse, SelectFacebookPageData, SelectFacebookPageError, SelectFacebookPageResponse, ListGoogleBusinessLocationsData, ListGoogleBusinessLocationsError, ListGoogleBusinessLocationsResponse, SelectGoogleBusinessLocationData, SelectGoogleBusinessLocationError, SelectGoogleBusinessLocationResponse, GetGoogleBusinessReviewsData, GetGoogleBusinessReviewsError, GetGoogleBusinessReviewsResponse, GetGoogleBusinessFoodMenusData, GetGoogleBusinessFoodMenusError, GetGoogleBusinessFoodMenusResponse, UpdateGoogleBusinessFoodMenusData, UpdateGoogleBusinessFoodMenusError, UpdateGoogleBusinessFoodMenusResponse, GetGoogleBusinessLocationDetailsData, GetGoogleBusinessLocationDetailsError, GetGoogleBusinessLocationDetailsResponse, UpdateGoogleBusinessLocationDetailsData, UpdateGoogleBusinessLocationDetailsError, UpdateGoogleBusinessLocationDetailsResponse, ListGoogleBusinessMediaData, ListGoogleBusinessMediaError, ListGoogleBusinessMediaResponse, CreateGoogleBusinessMediaData, CreateGoogleBusinessMediaError, CreateGoogleBusinessMediaResponse, DeleteGoogleBusinessMediaData, DeleteGoogleBusinessMediaError, DeleteGoogleBusinessMediaResponse, GetGoogleBusinessAttributesData, GetGoogleBusinessAttributesError, GetGoogleBusinessAttributesResponse, UpdateGoogleBusinessAttributesData, UpdateGoogleBusinessAttributesError, UpdateGoogleBusinessAttributesResponse, ListGoogleBusinessPlaceActionsData, ListGoogleBusinessPlaceActionsError, ListGoogleBusinessPlaceActionsResponse, CreateGoogleBusinessPlaceActionData, CreateGoogleBusinessPlaceActionError, CreateGoogleBusinessPlaceActionResponse, DeleteGoogleBusinessPlaceActionData, DeleteGoogleBusinessPlaceActionError, DeleteGoogleBusinessPlaceActionResponse, GetPendingOAuthDataData, GetPendingOAuthDataError, GetPendingOAuthDataResponse, ListLinkedInOrganizationsData, ListLinkedInOrganizationsError, ListLinkedInOrganizationsResponse, SelectLinkedInOrganizationData, SelectLinkedInOrganizationError, SelectLinkedInOrganizationResponse, ListPinterestBoardsForSelectionData, ListPinterestBoardsForSelectionError, ListPinterestBoardsForSelectionResponse, SelectPinterestBoardData, SelectPinterestBoardError, SelectPinterestBoardResponse, ListSnapchatProfilesData, ListSnapchatProfilesError, ListSnapchatProfilesResponse, SelectSnapchatProfileData, SelectSnapchatProfileError, SelectSnapchatProfileResponse, ConnectBlueskyCredentialsData, ConnectBlueskyCredentialsError, ConnectBlueskyCredentialsResponse, GetTelegramConnectStatusData, GetTelegramConnectStatusError, GetTelegramConnectStatusResponse, InitiateTelegramConnectData, InitiateTelegramConnectError, InitiateTelegramConnectResponse, CompleteTelegramConnectData, CompleteTelegramConnectError, CompleteTelegramConnectResponse, GetFacebookPagesData, GetFacebookPagesError, GetFacebookPagesResponse, UpdateFacebookPageData, UpdateFacebookPageError, UpdateFacebookPageResponse, GetLinkedInOrganizationsData, GetLinkedInOrganizationsError, GetLinkedInOrganizationsResponse, GetLinkedInAggregateAnalyticsData, GetLinkedInAggregateAnalyticsError, GetLinkedInAggregateAnalyticsResponse, GetLinkedInPostAnalyticsData, GetLinkedInPostAnalyticsError, GetLinkedInPostAnalyticsResponse, UpdateLinkedInOrganizationData, UpdateLinkedInOrganizationError, UpdateLinkedInOrganizationResponse, GetLinkedInMentionsData, GetLinkedInMentionsError, GetLinkedInMentionsResponse, GetPinterestBoardsData, GetPinterestBoardsError, GetPinterestBoardsResponse, UpdatePinterestBoardsData, UpdatePinterestBoardsError, UpdatePinterestBoardsResponse, GetGmbLocationsData, GetGmbLocationsError, GetGmbLocationsResponse, UpdateGmbLocationData, UpdateGmbLocationError, UpdateGmbLocationResponse, GetRedditSubredditsData, GetRedditSubredditsError, GetRedditSubredditsResponse, UpdateRedditSubredditsData, UpdateRedditSubredditsError, UpdateRedditSubredditsResponse, GetRedditFlairsData, GetRedditFlairsError, GetRedditFlairsResponse, ListQueueSlotsData, ListQueueSlotsError, ListQueueSlotsResponse, CreateQueueSlotData, CreateQueueSlotError, CreateQueueSlotResponse, UpdateQueueSlotData, UpdateQueueSlotError, UpdateQueueSlotResponse, DeleteQueueSlotData, DeleteQueueSlotError, DeleteQueueSlotResponse, PreviewQueueData, PreviewQueueError, PreviewQueueResponse, GetNextQueueSlotData, GetNextQueueSlotError, GetNextQueueSlotResponse, GetWebhookSettingsError, GetWebhookSettingsResponse, CreateWebhookSettingsData, CreateWebhookSettingsError, CreateWebhookSettingsResponse, UpdateWebhookSettingsData, UpdateWebhookSettingsError, UpdateWebhookSettingsResponse, DeleteWebhookSettingsData, DeleteWebhookSettingsError, DeleteWebhookSettingsResponse, TestWebhookData, TestWebhookError, TestWebhookResponse, GetWebhookLogsData, GetWebhookLogsError, GetWebhookLogsResponse, ListPostsLogsData, ListPostsLogsError, ListPostsLogsResponse, ListConnectionLogsData, ListConnectionLogsError, ListConnectionLogsResponse, GetPostLogsData, GetPostLogsError, GetPostLogsResponse, ListInboxConversationsData, ListInboxConversationsError, ListInboxConversationsResponse, GetInboxConversationData, GetInboxConversationError, GetInboxConversationResponse, UpdateInboxConversationData, UpdateInboxConversationError, UpdateInboxConversationResponse, GetInboxConversationMessagesData, GetInboxConversationMessagesError, GetInboxConversationMessagesResponse, SendInboxMessageData, SendInboxMessageError, SendInboxMessageResponse, EditInboxMessageData, EditInboxMessageError, EditInboxMessageResponse, GetMessengerMenuData, GetMessengerMenuError, GetMessengerMenuResponse, SetMessengerMenuData, SetMessengerMenuError, SetMessengerMenuResponse, DeleteMessengerMenuData, DeleteMessengerMenuError, DeleteMessengerMenuResponse, GetInstagramIceBreakersData, GetInstagramIceBreakersError, GetInstagramIceBreakersResponse, SetInstagramIceBreakersData, SetInstagramIceBreakersError, SetInstagramIceBreakersResponse, DeleteInstagramIceBreakersData, DeleteInstagramIceBreakersError, DeleteInstagramIceBreakersResponse, GetTelegramCommandsData, GetTelegramCommandsError, GetTelegramCommandsResponse, SetTelegramCommandsData, SetTelegramCommandsError, SetTelegramCommandsResponse, DeleteTelegramCommandsData, DeleteTelegramCommandsError, DeleteTelegramCommandsResponse, ListInboxCommentsData, ListInboxCommentsError, ListInboxCommentsResponse, GetInboxPostCommentsData, GetInboxPostCommentsError, GetInboxPostCommentsResponse, ReplyToInboxPostData, ReplyToInboxPostError, ReplyToInboxPostResponse, DeleteInboxCommentData, DeleteInboxCommentError, DeleteInboxCommentResponse, HideInboxCommentData, HideInboxCommentError, HideInboxCommentResponse, UnhideInboxCommentData, UnhideInboxCommentError, UnhideInboxCommentResponse, LikeInboxCommentData, LikeInboxCommentError, LikeInboxCommentResponse, UnlikeInboxCommentData, UnlikeInboxCommentError, UnlikeInboxCommentResponse, SendPrivateReplyToCommentData, SendPrivateReplyToCommentError, SendPrivateReplyToCommentResponse, ListInboxReviewsData, ListInboxReviewsError, ListInboxReviewsResponse, ReplyToInboxReviewData, ReplyToInboxReviewError, ReplyToInboxReviewResponse, DeleteInboxReviewReplyData, DeleteInboxReviewReplyError, DeleteInboxReviewReplyResponse } from './types.gen';
|
|
5
5
|
|
|
6
6
|
export const client = createClient(createConfig());
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ export const client = createClient(createConfig());
|
|
|
9
9
|
* Download YouTube video
|
|
10
10
|
* Download YouTube videos or audio. Returns available formats or direct download URL.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
13
13
|
*
|
|
14
14
|
*/
|
|
15
15
|
export const downloadYouTubeVideo = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DownloadYouTubeVideoData, ThrowOnError>) => {
|
|
@@ -23,7 +23,7 @@ export const downloadYouTubeVideo = <ThrowOnError extends boolean = false>(optio
|
|
|
23
23
|
* Get YouTube transcript
|
|
24
24
|
* Extract transcript/captions from a YouTube video.
|
|
25
25
|
*
|
|
26
|
-
*
|
|
26
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
27
27
|
*
|
|
28
28
|
*/
|
|
29
29
|
export const getYouTubeTranscript = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetYouTubeTranscriptData, ThrowOnError>) => {
|
|
@@ -37,7 +37,7 @@ export const getYouTubeTranscript = <ThrowOnError extends boolean = false>(optio
|
|
|
37
37
|
* Download Instagram media
|
|
38
38
|
* Download Instagram reels, posts, or photos.
|
|
39
39
|
*
|
|
40
|
-
*
|
|
40
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
41
41
|
*
|
|
42
42
|
*/
|
|
43
43
|
export const downloadInstagramMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DownloadInstagramMediaData, ThrowOnError>) => {
|
|
@@ -48,10 +48,10 @@ export const downloadInstagramMedia = <ThrowOnError extends boolean = false>(opt
|
|
|
48
48
|
};
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
|
-
* Check
|
|
51
|
+
* Check IG hashtag bans
|
|
52
52
|
* Check if Instagram hashtags are banned, restricted, or safe to use.
|
|
53
53
|
*
|
|
54
|
-
*
|
|
54
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
55
55
|
*
|
|
56
56
|
*/
|
|
57
57
|
export const checkInstagramHashtags = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CheckInstagramHashtagsData, ThrowOnError>) => {
|
|
@@ -65,7 +65,7 @@ export const checkInstagramHashtags = <ThrowOnError extends boolean = false>(opt
|
|
|
65
65
|
* Download TikTok video
|
|
66
66
|
* Download TikTok videos with or without watermark.
|
|
67
67
|
*
|
|
68
|
-
*
|
|
68
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
69
69
|
*
|
|
70
70
|
*/
|
|
71
71
|
export const downloadTikTokVideo = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DownloadTikTokVideoData, ThrowOnError>) => {
|
|
@@ -79,7 +79,7 @@ export const downloadTikTokVideo = <ThrowOnError extends boolean = false>(option
|
|
|
79
79
|
* Download Twitter/X media
|
|
80
80
|
* Download videos from Twitter/X posts.
|
|
81
81
|
*
|
|
82
|
-
*
|
|
82
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
83
83
|
*
|
|
84
84
|
*/
|
|
85
85
|
export const downloadTwitterMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DownloadTwitterMediaData, ThrowOnError>) => {
|
|
@@ -93,7 +93,7 @@ export const downloadTwitterMedia = <ThrowOnError extends boolean = false>(optio
|
|
|
93
93
|
* Download Facebook video
|
|
94
94
|
* Download videos and reels from Facebook.
|
|
95
95
|
*
|
|
96
|
-
*
|
|
96
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
97
97
|
*
|
|
98
98
|
*/
|
|
99
99
|
export const downloadFacebookVideo = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DownloadFacebookVideoData, ThrowOnError>) => {
|
|
@@ -107,7 +107,7 @@ export const downloadFacebookVideo = <ThrowOnError extends boolean = false>(opti
|
|
|
107
107
|
* Download LinkedIn video
|
|
108
108
|
* Download videos from LinkedIn posts.
|
|
109
109
|
*
|
|
110
|
-
*
|
|
110
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
111
111
|
*
|
|
112
112
|
*/
|
|
113
113
|
export const downloadLinkedInVideo = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DownloadLinkedInVideoData, ThrowOnError>) => {
|
|
@@ -121,7 +121,7 @@ export const downloadLinkedInVideo = <ThrowOnError extends boolean = false>(opti
|
|
|
121
121
|
* Download Bluesky media
|
|
122
122
|
* Download videos from Bluesky posts.
|
|
123
123
|
*
|
|
124
|
-
*
|
|
124
|
+
* Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
125
125
|
*
|
|
126
126
|
*/
|
|
127
127
|
export const downloadBlueskyMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DownloadBlueskyMediaData, ThrowOnError>) => {
|
|
@@ -133,19 +133,8 @@ export const downloadBlueskyMedia = <ThrowOnError extends boolean = false>(optio
|
|
|
133
133
|
|
|
134
134
|
/**
|
|
135
135
|
* Get post analytics
|
|
136
|
-
* Returns analytics for posts. With
|
|
137
|
-
*
|
|
138
|
-
* **Post ID types:** This endpoint returns External Post IDs by default. The `postId` parameter accepts both Late Post IDs (from `POST /v1/posts`) and External Post IDs. Late Post IDs are automatically resolved to External Post analytics. Use `latePostId` in responses to link analytics back to your original Late post, or `platformPostUrl` as a stable identifier.
|
|
139
|
-
*
|
|
140
|
-
* **List response:** Use `isExternal` to identify post origin. `isExternal: true` means synced from platform, `isExternal: false` means queried by Late post ID.
|
|
141
|
-
*
|
|
142
|
-
* For follower stats, use `/v1/accounts/follower-stats` instead.
|
|
143
|
-
*
|
|
144
|
-
* **Platform notes:**
|
|
145
|
-
* - LinkedIn personal accounts: per-post analytics only for posts published through Late (API restriction).
|
|
146
|
-
* - Telegram: analytics not available (Bot API limitation).
|
|
147
|
-
*
|
|
148
|
-
* **Data freshness:** Cached and refreshed at most once per hour. Stale caches trigger a background refresh.
|
|
136
|
+
* Returns analytics for posts. With postId, returns a single post. Without it, returns a paginated list with overview stats.
|
|
137
|
+
* Accepts both Late Post IDs and External Post IDs (auto-resolved). Data is cached and refreshed at most once per hour. For follower stats, use /v1/accounts/follower-stats.
|
|
149
138
|
*
|
|
150
139
|
*/
|
|
151
140
|
export const getAnalytics = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<GetAnalyticsData, ThrowOnError>) => {
|
|
@@ -157,18 +146,8 @@ export const getAnalytics = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
157
146
|
|
|
158
147
|
/**
|
|
159
148
|
* Get YouTube daily views
|
|
160
|
-
* Returns
|
|
161
|
-
*
|
|
162
|
-
* watch time, and subscriber changes.
|
|
163
|
-
*
|
|
164
|
-
* **Required Scope:** This endpoint requires the `yt-analytics.readonly` OAuth scope.
|
|
165
|
-
* Existing YouTube accounts may need to re-authorize to grant this permission.
|
|
166
|
-
* If the scope is missing, the response will include a `reauthorizeUrl`.
|
|
167
|
-
*
|
|
168
|
-
* **Data Latency:** YouTube Analytics data has a 2-3 day delay. The `endDate`
|
|
169
|
-
* is automatically capped to 3 days ago.
|
|
170
|
-
*
|
|
171
|
-
* **Date Range:** Maximum 90 days of historical data available. Defaults to last 30 days.
|
|
149
|
+
* Returns daily view counts for a YouTube video including views, watch time, and subscriber changes.
|
|
150
|
+
* Requires yt-analytics.readonly scope (re-authorization may be needed). Data has a 2-3 day delay. Max 90 days, defaults to last 30 days.
|
|
172
151
|
*
|
|
173
152
|
*/
|
|
174
153
|
export const getYouTubeDailyViews = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetYouTubeDailyViewsData, ThrowOnError>) => {
|
|
@@ -180,6 +159,7 @@ export const getYouTubeDailyViews = <ThrowOnError extends boolean = false>(optio
|
|
|
180
159
|
|
|
181
160
|
/**
|
|
182
161
|
* List groups
|
|
162
|
+
* Returns all account groups for the authenticated user, including group names and associated account IDs.
|
|
183
163
|
*/
|
|
184
164
|
export const listAccountGroups = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<unknown, ThrowOnError>) => {
|
|
185
165
|
return (options?.client ?? client).get<ListAccountGroupsResponse, ListAccountGroupsError, ThrowOnError>({
|
|
@@ -190,6 +170,7 @@ export const listAccountGroups = <ThrowOnError extends boolean = false>(options?
|
|
|
190
170
|
|
|
191
171
|
/**
|
|
192
172
|
* Create group
|
|
173
|
+
* Creates a new account group with a name and a list of social account IDs.
|
|
193
174
|
*/
|
|
194
175
|
export const createAccountGroup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAccountGroupData, ThrowOnError>) => {
|
|
195
176
|
return (options?.client ?? client).post<CreateAccountGroupResponse, CreateAccountGroupError, ThrowOnError>({
|
|
@@ -200,6 +181,7 @@ export const createAccountGroup = <ThrowOnError extends boolean = false>(options
|
|
|
200
181
|
|
|
201
182
|
/**
|
|
202
183
|
* Update group
|
|
184
|
+
* Updates the name or account list of an existing group. You can rename the group, change its accounts, or both.
|
|
203
185
|
*/
|
|
204
186
|
export const updateAccountGroup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAccountGroupData, ThrowOnError>) => {
|
|
205
187
|
return (options?.client ?? client).put<UpdateAccountGroupResponse, UpdateAccountGroupError, ThrowOnError>({
|
|
@@ -210,6 +192,7 @@ export const updateAccountGroup = <ThrowOnError extends boolean = false>(options
|
|
|
210
192
|
|
|
211
193
|
/**
|
|
212
194
|
* Delete group
|
|
195
|
+
* Permanently deletes an account group. The accounts themselves are not affected.
|
|
213
196
|
*/
|
|
214
197
|
export const deleteAccountGroup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAccountGroupData, ThrowOnError>) => {
|
|
215
198
|
return (options?.client ?? client).delete<DeleteAccountGroupResponse, DeleteAccountGroupError, ThrowOnError>({
|
|
@@ -220,14 +203,7 @@ export const deleteAccountGroup = <ThrowOnError extends boolean = false>(options
|
|
|
220
203
|
|
|
221
204
|
/**
|
|
222
205
|
* Get presigned upload URL
|
|
223
|
-
* Get a presigned URL to upload files directly to cloud storage.
|
|
224
|
-
*
|
|
225
|
-
* **How it works:**
|
|
226
|
-
* 1. Call this endpoint with the filename and content type
|
|
227
|
-
* 2. Receive an `uploadUrl` (presigned) and `publicUrl`
|
|
228
|
-
* 3. PUT your file directly to the `uploadUrl`
|
|
229
|
-
* 4. Use the `publicUrl` in your posts
|
|
230
|
-
*
|
|
206
|
+
* Get a presigned URL to upload files directly to cloud storage (up to 5GB). Returns an uploadUrl and publicUrl. PUT your file to the uploadUrl, then use the publicUrl in your posts.
|
|
231
207
|
*/
|
|
232
208
|
export const getMediaPresignedUrl = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetMediaPresignedUrlData, ThrowOnError>) => {
|
|
233
209
|
return (options?.client ?? client).post<GetMediaPresignedUrlResponse, GetMediaPresignedUrlError, ThrowOnError>({
|
|
@@ -238,6 +214,7 @@ export const getMediaPresignedUrl = <ThrowOnError extends boolean = false>(optio
|
|
|
238
214
|
|
|
239
215
|
/**
|
|
240
216
|
* Search posts
|
|
217
|
+
* Search Reddit posts using a connected account. Optionally scope to a specific subreddit.
|
|
241
218
|
*/
|
|
242
219
|
export const searchReddit = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SearchRedditData, ThrowOnError>) => {
|
|
243
220
|
return (options?.client ?? client).get<SearchRedditResponse, SearchRedditError, ThrowOnError>({
|
|
@@ -248,6 +225,7 @@ export const searchReddit = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
248
225
|
|
|
249
226
|
/**
|
|
250
227
|
* Get subreddit feed
|
|
228
|
+
* Fetch posts from a subreddit feed. Supports sorting, time filtering, and cursor-based pagination.
|
|
251
229
|
*/
|
|
252
230
|
export const getRedditFeed = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetRedditFeedData, ThrowOnError>) => {
|
|
253
231
|
return (options?.client ?? client).get<GetRedditFeedResponse, GetRedditFeedError, ThrowOnError>({
|
|
@@ -258,6 +236,7 @@ export const getRedditFeed = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
258
236
|
|
|
259
237
|
/**
|
|
260
238
|
* Get plan and usage stats
|
|
239
|
+
* Returns the current plan name, billing period, plan limits, and usage counts.
|
|
261
240
|
*/
|
|
262
241
|
export const getUsageStats = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<unknown, ThrowOnError>) => {
|
|
263
242
|
return (options?.client ?? client).get<GetUsageStatsResponse, GetUsageStatsError, ThrowOnError>({
|
|
@@ -268,15 +247,7 @@ export const getUsageStats = <ThrowOnError extends boolean = false>(options?: Op
|
|
|
268
247
|
|
|
269
248
|
/**
|
|
270
249
|
* List posts
|
|
271
|
-
*
|
|
272
|
-
* For published posts, each platform entry includes `platformPostUrl` with the public URL.
|
|
273
|
-
* Use `status=published` filter to fetch only published posts with their URLs.
|
|
274
|
-
*
|
|
275
|
-
* Notes and constraints by platform when interpreting the response:
|
|
276
|
-
* - YouTube: posts always include at least one video in mediaItems.
|
|
277
|
-
* - Instagram/TikTok: posts always include media; drafts may omit media until finalized in client.
|
|
278
|
-
* - TikTok: mediaItems will not mix photos and videos in the same post.
|
|
279
|
-
*
|
|
250
|
+
* Returns a paginated list of posts. Published posts include platformPostUrl with the public URL on each platform.
|
|
280
251
|
*/
|
|
281
252
|
export const listPosts = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListPostsData, ThrowOnError>) => {
|
|
282
253
|
return (options?.client ?? client).get<ListPostsResponse, ListPostsError, ThrowOnError>({
|
|
@@ -287,23 +258,8 @@ export const listPosts = <ThrowOnError extends boolean = false>(options?: Option
|
|
|
287
258
|
|
|
288
259
|
/**
|
|
289
260
|
* Create post
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
* - Scheduled posts: fetch via `GET /v1/posts/{postId}` after publish time for `platformPostUrl`.
|
|
293
|
-
*
|
|
294
|
-
* **Content requirements:**
|
|
295
|
-
* - `content` is optional when media is attached, all platforms have `customContent`, or posting to YouTube only.
|
|
296
|
-
* - Text-only posts require `content`. Stories ignore captions.
|
|
297
|
-
*
|
|
298
|
-
* **Platform constraints:**
|
|
299
|
-
* - YouTube: video required, optional thumbnail via `MediaItem.thumbnail`
|
|
300
|
-
* - Instagram/TikTok: media required; TikTok cannot mix videos and images
|
|
301
|
-
* - Instagram carousels: up to 10 items; Threads carousels: up to 10 images only
|
|
302
|
-
* - Facebook Stories: single image or video, set `contentType: 'story'`
|
|
303
|
-
* - LinkedIn: up to 20 images or a single PDF (max 100MB)
|
|
304
|
-
* - Pinterest: single image or video, `boardId` required
|
|
305
|
-
* - Bluesky: up to 4 images, auto-recompressed to ~1MB
|
|
306
|
-
* - Snapchat: single image or video, set `contentType` in platformSpecificData
|
|
261
|
+
* Create and optionally publish a post. Immediate posts (publishNow: true) include platformPostUrl in the response.
|
|
262
|
+
* Content is optional when media is attached or all platforms have customContent. See each platform's schema for media constraints.
|
|
307
263
|
*
|
|
308
264
|
*/
|
|
309
265
|
export const createPost = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreatePostData, ThrowOnError>) => {
|
|
@@ -315,8 +271,7 @@ export const createPost = <ThrowOnError extends boolean = false>(options: Option
|
|
|
315
271
|
|
|
316
272
|
/**
|
|
317
273
|
* Get post
|
|
318
|
-
* Fetch a single post by ID. For published posts, this returns
|
|
319
|
-
* for each platform - useful for retrieving post URLs after scheduled posts publish.
|
|
274
|
+
* Fetch a single post by ID. For published posts, this returns platformPostUrl for each platform.
|
|
320
275
|
*
|
|
321
276
|
*/
|
|
322
277
|
export const getPost = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetPostData, ThrowOnError>) => {
|
|
@@ -341,10 +296,7 @@ export const updatePost = <ThrowOnError extends boolean = false>(options: Option
|
|
|
341
296
|
|
|
342
297
|
/**
|
|
343
298
|
* Delete post
|
|
344
|
-
* Delete a draft or scheduled post from Late.
|
|
345
|
-
* To remove a published post from a social media platform, use the [Unpublish endpoint](#tag/Posts/operation/unpublishPost) instead.
|
|
346
|
-
* When deleting a scheduled or draft post that consumed upload quota, the quota will be automatically refunded.
|
|
347
|
-
*
|
|
299
|
+
* Delete a draft or scheduled post from Late. Published posts cannot be deleted; use the Unpublish endpoint instead. Upload quota is automatically refunded.
|
|
348
300
|
*/
|
|
349
301
|
export const deletePost = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeletePostData, ThrowOnError>) => {
|
|
350
302
|
return (options?.client ?? client).delete<DeletePostResponse, DeletePostError, ThrowOnError>({
|
|
@@ -355,6 +307,7 @@ export const deletePost = <ThrowOnError extends boolean = false>(options: Option
|
|
|
355
307
|
|
|
356
308
|
/**
|
|
357
309
|
* Bulk upload from CSV
|
|
310
|
+
* Create multiple posts by uploading a CSV file. Use dryRun=true to validate without creating posts.
|
|
358
311
|
*/
|
|
359
312
|
export const bulkUploadPosts = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<BulkUploadPostsData, ThrowOnError>) => {
|
|
360
313
|
return (options?.client ?? client).post<BulkUploadPostsResponse, BulkUploadPostsError, ThrowOnError>({
|
|
@@ -370,6 +323,7 @@ export const bulkUploadPosts = <ThrowOnError extends boolean = false>(options: O
|
|
|
370
323
|
|
|
371
324
|
/**
|
|
372
325
|
* Retry failed post
|
|
326
|
+
* Immediately retries publishing a failed post. Returns the updated post with its new status.
|
|
373
327
|
*/
|
|
374
328
|
export const retryPost = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RetryPostData, ThrowOnError>) => {
|
|
375
329
|
return (options?.client ?? client).post<RetryPostResponse, RetryPostError, ThrowOnError>({
|
|
@@ -380,21 +334,8 @@ export const retryPost = <ThrowOnError extends boolean = false>(options: Options
|
|
|
380
334
|
|
|
381
335
|
/**
|
|
382
336
|
* Unpublish post
|
|
383
|
-
*
|
|
384
|
-
*
|
|
385
|
-
* This does not delete the post from Late, only from the platform.
|
|
386
|
-
*
|
|
387
|
-
* **Supported platforms:** Threads, Facebook, Twitter/X, LinkedIn, YouTube, Pinterest, Reddit, Bluesky, Google Business, Telegram.
|
|
388
|
-
*
|
|
389
|
-
* **Not supported:**
|
|
390
|
-
* - **Instagram:** No deletion API available. Posts must be deleted manually.
|
|
391
|
-
* - **TikTok:** No deletion API available. Posts must be deleted manually.
|
|
392
|
-
* - **Snapchat:** No deletion API available. Posts must be deleted manually.
|
|
393
|
-
*
|
|
394
|
-
* **Platform notes:**
|
|
395
|
-
* - **Threaded posts (Twitter, Threads, Bluesky):** If the post was published as a thread, all items in the thread are deleted (not just the first one). Posts published before this feature was added will only have the first item deleted.
|
|
396
|
-
* - **Telegram:** Messages older than 48 hours may fail to delete (Telegram Bot API limitation).
|
|
397
|
-
* - **YouTube:** This permanently deletes the video from YouTube.
|
|
337
|
+
* Deletes a published post from the specified platform. The post record in Late is kept but its status is updated to cancelled.
|
|
338
|
+
* Not supported on Instagram, TikTok, or Snapchat. Threaded posts delete all items. YouTube deletion is permanent.
|
|
398
339
|
*
|
|
399
340
|
*/
|
|
400
341
|
export const unpublishPost = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UnpublishPostData, ThrowOnError>) => {
|
|
@@ -406,6 +347,7 @@ export const unpublishPost = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
406
347
|
|
|
407
348
|
/**
|
|
408
349
|
* List users
|
|
350
|
+
* Returns all users in the workspace including roles and profile access. Also returns the currentUserId of the caller.
|
|
409
351
|
*/
|
|
410
352
|
export const listUsers = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<unknown, ThrowOnError>) => {
|
|
411
353
|
return (options?.client ?? client).get<ListUsersResponse, ListUsersError, ThrowOnError>({
|
|
@@ -416,6 +358,7 @@ export const listUsers = <ThrowOnError extends boolean = false>(options?: Option
|
|
|
416
358
|
|
|
417
359
|
/**
|
|
418
360
|
* Get user
|
|
361
|
+
* Returns a single user's details by ID, including name, email, and role.
|
|
419
362
|
*/
|
|
420
363
|
export const getUser = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetUserData, ThrowOnError>) => {
|
|
421
364
|
return (options?.client ?? client).get<GetUserResponse, GetUserError, ThrowOnError>({
|
|
@@ -426,9 +369,7 @@ export const getUser = <ThrowOnError extends boolean = false>(options: OptionsLe
|
|
|
426
369
|
|
|
427
370
|
/**
|
|
428
371
|
* List profiles
|
|
429
|
-
* Returns profiles
|
|
430
|
-
* Use `includeOverLimit=true` to include profiles that exceed the plan limit (for management/deletion purposes).
|
|
431
|
-
*
|
|
372
|
+
* Returns profiles sorted by creation date. Use includeOverLimit=true to include profiles that exceed the plan limit.
|
|
432
373
|
*/
|
|
433
374
|
export const listProfiles = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListProfilesData, ThrowOnError>) => {
|
|
434
375
|
return (options?.client ?? client).get<ListProfilesResponse, ListProfilesError, ThrowOnError>({
|
|
@@ -439,6 +380,7 @@ export const listProfiles = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
439
380
|
|
|
440
381
|
/**
|
|
441
382
|
* Create profile
|
|
383
|
+
* Creates a new profile with a name, optional description, and color.
|
|
442
384
|
*/
|
|
443
385
|
export const createProfile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateProfileData, ThrowOnError>) => {
|
|
444
386
|
return (options?.client ?? client).post<CreateProfileResponse, CreateProfileError, ThrowOnError>({
|
|
@@ -449,6 +391,7 @@ export const createProfile = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
449
391
|
|
|
450
392
|
/**
|
|
451
393
|
* Get profile
|
|
394
|
+
* Returns a single profile by ID, including its name, color, and default status.
|
|
452
395
|
*/
|
|
453
396
|
export const getProfile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetProfileData, ThrowOnError>) => {
|
|
454
397
|
return (options?.client ?? client).get<GetProfileResponse, GetProfileError, ThrowOnError>({
|
|
@@ -459,6 +402,7 @@ export const getProfile = <ThrowOnError extends boolean = false>(options: Option
|
|
|
459
402
|
|
|
460
403
|
/**
|
|
461
404
|
* Update profile
|
|
405
|
+
* Updates a profile's name, description, color, or default status.
|
|
462
406
|
*/
|
|
463
407
|
export const updateProfile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateProfileData, ThrowOnError>) => {
|
|
464
408
|
return (options?.client ?? client).put<UpdateProfileResponse, UpdateProfileError, ThrowOnError>({
|
|
@@ -469,6 +413,7 @@ export const updateProfile = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
469
413
|
|
|
470
414
|
/**
|
|
471
415
|
* Delete profile
|
|
416
|
+
* Permanently deletes a profile by ID.
|
|
472
417
|
*/
|
|
473
418
|
export const deleteProfile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteProfileData, ThrowOnError>) => {
|
|
474
419
|
return (options?.client ?? client).delete<DeleteProfileResponse, DeleteProfileError, ThrowOnError>({
|
|
@@ -479,10 +424,7 @@ export const deleteProfile = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
479
424
|
|
|
480
425
|
/**
|
|
481
426
|
* List accounts
|
|
482
|
-
* Returns
|
|
483
|
-
* By default, only returns accounts from profiles within the user's plan limit.
|
|
484
|
-
* Follower count data (followersCount, followersLastUpdated) is only included if user has analytics add-on.
|
|
485
|
-
*
|
|
427
|
+
* Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on.
|
|
486
428
|
*/
|
|
487
429
|
export const listAccounts = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListAccountsData, ThrowOnError>) => {
|
|
488
430
|
return (options?.client ?? client).get<ListAccountsResponse, ListAccountsError, ThrowOnError>({
|
|
@@ -494,9 +436,7 @@ export const listAccounts = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
494
436
|
/**
|
|
495
437
|
* Get follower stats
|
|
496
438
|
* Returns follower count history and growth metrics for connected social accounts.
|
|
497
|
-
*
|
|
498
|
-
*
|
|
499
|
-
* **Data Freshness:** Follower counts are automatically refreshed once per day.
|
|
439
|
+
* Requires analytics add-on subscription. Follower counts are refreshed once per day.
|
|
500
440
|
*
|
|
501
441
|
*/
|
|
502
442
|
export const getFollowerStats = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<GetFollowerStatsData, ThrowOnError>) => {
|
|
@@ -508,6 +448,7 @@ export const getFollowerStats = <ThrowOnError extends boolean = false>(options?:
|
|
|
508
448
|
|
|
509
449
|
/**
|
|
510
450
|
* Update account
|
|
451
|
+
* Updates a connected social account's display name or username override.
|
|
511
452
|
*/
|
|
512
453
|
export const updateAccount = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAccountData, ThrowOnError>) => {
|
|
513
454
|
return (options?.client ?? client).put<UpdateAccountResponse, UpdateAccountError, ThrowOnError>({
|
|
@@ -518,6 +459,7 @@ export const updateAccount = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
518
459
|
|
|
519
460
|
/**
|
|
520
461
|
* Disconnect account
|
|
462
|
+
* Disconnects and removes a connected social account.
|
|
521
463
|
*/
|
|
522
464
|
export const deleteAccount = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAccountData, ThrowOnError>) => {
|
|
523
465
|
return (options?.client ?? client).delete<DeleteAccountResponse, DeleteAccountError, ThrowOnError>({
|
|
@@ -528,10 +470,7 @@ export const deleteAccount = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
528
470
|
|
|
529
471
|
/**
|
|
530
472
|
* Check accounts health
|
|
531
|
-
* Returns
|
|
532
|
-
* permissions status, and any issues that need attention. Useful for monitoring account
|
|
533
|
-
* connections and identifying accounts that need reconnection.
|
|
534
|
-
*
|
|
473
|
+
* Returns health status of all connected accounts including token validity, permissions, and issues needing attention.
|
|
535
474
|
*/
|
|
536
475
|
export const getAllAccountsHealth = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<GetAllAccountsHealthData, ThrowOnError>) => {
|
|
537
476
|
return (options?.client ?? client).get<GetAllAccountsHealthResponse, GetAllAccountsHealthError, ThrowOnError>({
|
|
@@ -542,9 +481,7 @@ export const getAllAccountsHealth = <ThrowOnError extends boolean = false>(optio
|
|
|
542
481
|
|
|
543
482
|
/**
|
|
544
483
|
* Check account health
|
|
545
|
-
* Returns detailed health
|
|
546
|
-
* granted permissions, missing permissions, and actionable recommendations.
|
|
547
|
-
*
|
|
484
|
+
* Returns detailed health info for a specific account including token status, permissions, and recommendations.
|
|
548
485
|
*/
|
|
549
486
|
export const getAccountHealth = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAccountHealthData, ThrowOnError>) => {
|
|
550
487
|
return (options?.client ?? client).get<GetAccountHealthResponse, GetAccountHealthError, ThrowOnError>({
|
|
@@ -555,6 +492,7 @@ export const getAccountHealth = <ThrowOnError extends boolean = false>(options:
|
|
|
555
492
|
|
|
556
493
|
/**
|
|
557
494
|
* List keys
|
|
495
|
+
* Returns all API keys for the authenticated user. Keys are returned with a preview only, not the full key value.
|
|
558
496
|
*/
|
|
559
497
|
export const listApiKeys = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<unknown, ThrowOnError>) => {
|
|
560
498
|
return (options?.client ?? client).get<ListApiKeysResponse, ListApiKeysError, ThrowOnError>({
|
|
@@ -565,6 +503,7 @@ export const listApiKeys = <ThrowOnError extends boolean = false>(options?: Opti
|
|
|
565
503
|
|
|
566
504
|
/**
|
|
567
505
|
* Create key
|
|
506
|
+
* Creates a new API key with an optional expiry. The full key value is only returned once in the response.
|
|
568
507
|
*/
|
|
569
508
|
export const createApiKey = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateApiKeyData, ThrowOnError>) => {
|
|
570
509
|
return (options?.client ?? client).post<CreateApiKeyResponse, CreateApiKeyError, ThrowOnError>({
|
|
@@ -575,6 +514,7 @@ export const createApiKey = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
575
514
|
|
|
576
515
|
/**
|
|
577
516
|
* Delete key
|
|
517
|
+
* Permanently revokes and deletes an API key.
|
|
578
518
|
*/
|
|
579
519
|
export const deleteApiKey = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteApiKeyData, ThrowOnError>) => {
|
|
580
520
|
return (options?.client ?? client).delete<DeleteApiKeyResponse, DeleteApiKeyError, ThrowOnError>({
|
|
@@ -598,27 +538,8 @@ export const createInviteToken = <ThrowOnError extends boolean = false>(options:
|
|
|
598
538
|
|
|
599
539
|
/**
|
|
600
540
|
* Get OAuth connect URL
|
|
601
|
-
* Initiate an OAuth connection flow
|
|
602
|
-
*
|
|
603
|
-
* **Standard Flow (Hosted UI):**
|
|
604
|
-
* 1. Call this endpoint with your API key and `redirect_url` (optional)
|
|
605
|
-
* 2. Redirect your user to the returned `authUrl`
|
|
606
|
-
* 3. After OAuth, Late hosts the page/account selection UI
|
|
607
|
-
* 4. Once the user picks, Late saves the connection and redirects to your `redirect_url` (if provided)
|
|
608
|
-
*
|
|
609
|
-
* **Headless Mode (Facebook, LinkedIn, Pinterest, Google Business, Snapchat):**
|
|
610
|
-
* Build your own branded selection UI while Late handles OAuth. Add `&headless=true` to this endpoint:
|
|
611
|
-
*
|
|
612
|
-
* `GET /v1/connect/{platform}?profileId=PROFILE_ID&redirect_url=https://yourapp.com/callback&headless=true`
|
|
613
|
-
*
|
|
614
|
-
* After OAuth, the user is redirected to your `redirect_url` with OAuth data including `profileId`, `tempToken`, `userProfile`, `connect_token`, `platform`, and a `step` parameter indicating what selection is needed.
|
|
615
|
-
*
|
|
616
|
-
* **Facebook example:**
|
|
617
|
-
* 1. Redirect params include `step=select_page`
|
|
618
|
-
* 2. Use `GET /v1/connect/facebook/select-page` to fetch pages
|
|
619
|
-
* 3. Use `POST /v1/connect/facebook/select-page` to save the selected page
|
|
620
|
-
*
|
|
621
|
-
* LinkedIn, Pinterest, Google Business, and Snapchat follow the same pattern with their respective selection endpoints. LinkedIn uses `pendingDataToken` instead of `tempToken` in redirect params; call `GET /v1/connect/pending-data?token=TOKEN` to retrieve the OAuth data (one-time use, expires in 10 minutes).
|
|
541
|
+
* Initiate an OAuth connection flow. Returns an authUrl to redirect the user to.
|
|
542
|
+
* Standard flow: Late hosts the selection UI, then redirects to your redirect_url. Headless mode (headless=true): user is redirected to your redirect_url with OAuth data for custom UI. Use the platform-specific selection endpoints to complete.
|
|
622
543
|
*
|
|
623
544
|
*/
|
|
624
545
|
export const getConnectUrl = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetConnectUrlData, ThrowOnError>) => {
|
|
@@ -630,6 +551,7 @@ export const getConnectUrl = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
630
551
|
|
|
631
552
|
/**
|
|
632
553
|
* Complete OAuth callback
|
|
554
|
+
* Exchange the OAuth authorization code for tokens and connect the account to the specified profile.
|
|
633
555
|
*/
|
|
634
556
|
export const handleOAuthCallback = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<HandleOAuthCallbackData, ThrowOnError>) => {
|
|
635
557
|
return (options?.client ?? client).post<HandleOAuthCallbackResponse, HandleOAuthCallbackError, ThrowOnError>({
|
|
@@ -640,18 +562,7 @@ export const handleOAuthCallback = <ThrowOnError extends boolean = false>(option
|
|
|
640
562
|
|
|
641
563
|
/**
|
|
642
564
|
* List Facebook pages
|
|
643
|
-
*
|
|
644
|
-
*
|
|
645
|
-
* After initiating Facebook OAuth via `/v1/connect/facebook`, you'll be redirected to
|
|
646
|
-
* `/connect/facebook/select-page` with query params including `tempToken` and `userProfile`.
|
|
647
|
-
*
|
|
648
|
-
* For a **headless/whitelabeled flow**, extract these params from the URL and call this
|
|
649
|
-
* endpoint to retrieve the list of Facebook Pages the user can manage. Then build your
|
|
650
|
-
* own UI to let users select a page.
|
|
651
|
-
*
|
|
652
|
-
* **Note:** Use the `X-Connect-Token` header if you initiated the connection via API key
|
|
653
|
-
* (rather than a browser session).
|
|
654
|
-
*
|
|
565
|
+
* Returns the list of Facebook Pages the user can manage after OAuth. Extract tempToken and userProfile from the OAuth redirect params and pass them here. Use the X-Connect-Token header if connecting via API key.
|
|
655
566
|
*/
|
|
656
567
|
export const listFacebookPages = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListFacebookPagesData, ThrowOnError>) => {
|
|
657
568
|
return (options?.client ?? client).get<ListFacebookPagesResponse, ListFacebookPagesError, ThrowOnError>({
|
|
@@ -662,16 +573,7 @@ export const listFacebookPages = <ThrowOnError extends boolean = false>(options:
|
|
|
662
573
|
|
|
663
574
|
/**
|
|
664
575
|
* Select Facebook page
|
|
665
|
-
*
|
|
666
|
-
*
|
|
667
|
-
* After displaying your custom UI with the list of pages from the GET endpoint, call this
|
|
668
|
-
* endpoint to finalize the connection with the user's selected page.
|
|
669
|
-
*
|
|
670
|
-
* The `userProfile` should be the decoded JSON object from the `userProfile` query param
|
|
671
|
-
* in the OAuth callback redirect URL.
|
|
672
|
-
*
|
|
673
|
-
* **Note:** Use the `X-Connect-Token` header if you initiated the connection via API key.
|
|
674
|
-
*
|
|
576
|
+
* Complete the headless flow by saving the user's selected Facebook page. Pass the userProfile from the OAuth redirect and use X-Connect-Token if connecting via API key.
|
|
675
577
|
*/
|
|
676
578
|
export const selectFacebookPage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SelectFacebookPageData, ThrowOnError>) => {
|
|
677
579
|
return (options?.client ?? client).post<SelectFacebookPageResponse, SelectFacebookPageError, ThrowOnError>({
|
|
@@ -681,19 +583,8 @@ export const selectFacebookPage = <ThrowOnError extends boolean = false>(options
|
|
|
681
583
|
};
|
|
682
584
|
|
|
683
585
|
/**
|
|
684
|
-
* List
|
|
685
|
-
*
|
|
686
|
-
*
|
|
687
|
-
* After initiating Google Business OAuth via `/v1/connect/googlebusiness?headless=true`, you'll be redirected
|
|
688
|
-
* to your `redirect_url` with query params including `tempToken` and `userProfile`.
|
|
689
|
-
*
|
|
690
|
-
* For a **headless/whitelabeled flow**, extract these params from the URL and call this
|
|
691
|
-
* endpoint to retrieve the list of Google Business locations the user can manage. Then build your
|
|
692
|
-
* own UI to let users select a location.
|
|
693
|
-
*
|
|
694
|
-
* **Note:** Use the `X-Connect-Token` header if you initiated the connection via API key
|
|
695
|
-
* (rather than a browser session).
|
|
696
|
-
*
|
|
586
|
+
* List GBP locations
|
|
587
|
+
* For headless flows. Returns the list of GBP locations the user can manage. Use X-Connect-Token if connecting via API key.
|
|
697
588
|
*/
|
|
698
589
|
export const listGoogleBusinessLocations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListGoogleBusinessLocationsData, ThrowOnError>) => {
|
|
699
590
|
return (options?.client ?? client).get<ListGoogleBusinessLocationsResponse, ListGoogleBusinessLocationsError, ThrowOnError>({
|
|
@@ -703,17 +594,8 @@ export const listGoogleBusinessLocations = <ThrowOnError extends boolean = false
|
|
|
703
594
|
};
|
|
704
595
|
|
|
705
596
|
/**
|
|
706
|
-
* Select
|
|
707
|
-
*
|
|
708
|
-
*
|
|
709
|
-
* After displaying your custom UI with the list of locations from the GET `/v1/connect/googlebusiness/locations`
|
|
710
|
-
* endpoint, call this endpoint to finalize the connection with the user's selected location.
|
|
711
|
-
*
|
|
712
|
-
* The `userProfile` should be the decoded JSON object from the `userProfile` query param
|
|
713
|
-
* in the OAuth callback redirect URL. It contains important token information (including refresh token).
|
|
714
|
-
*
|
|
715
|
-
* **Note:** Use the `X-Connect-Token` header if you initiated the connection via API key.
|
|
716
|
-
*
|
|
597
|
+
* Select GBP location
|
|
598
|
+
* Complete the headless flow by saving the user's selected GBP location. Include userProfile from the OAuth redirect (contains refresh token). Use X-Connect-Token if connecting via API key.
|
|
717
599
|
*/
|
|
718
600
|
export const selectGoogleBusinessLocation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SelectGoogleBusinessLocationData, ThrowOnError>) => {
|
|
719
601
|
return (options?.client ?? client).post<SelectGoogleBusinessLocationResponse, SelectGoogleBusinessLocationError, ThrowOnError>({
|
|
@@ -724,17 +606,7 @@ export const selectGoogleBusinessLocation = <ThrowOnError extends boolean = fals
|
|
|
724
606
|
|
|
725
607
|
/**
|
|
726
608
|
* Get reviews
|
|
727
|
-
*
|
|
728
|
-
*
|
|
729
|
-
* Returns all reviews for the business location, including:
|
|
730
|
-
* - Reviewer information (name, profile photo)
|
|
731
|
-
* - Star rating (1-5)
|
|
732
|
-
* - Review comment/text
|
|
733
|
-
* - Business owner's reply (if any)
|
|
734
|
-
* - Review timestamps
|
|
735
|
-
*
|
|
736
|
-
* Use pagination via `nextPageToken` to fetch all reviews for locations with many reviews.
|
|
737
|
-
*
|
|
609
|
+
* Returns reviews for a GBP account including ratings, comments, and owner replies. Use nextPageToken for pagination.
|
|
738
610
|
*/
|
|
739
611
|
export const getGoogleBusinessReviews = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessReviewsData, ThrowOnError>) => {
|
|
740
612
|
return (options?.client ?? client).get<GetGoogleBusinessReviewsResponse, GetGoogleBusinessReviewsError, ThrowOnError>({
|
|
@@ -745,16 +617,7 @@ export const getGoogleBusinessReviews = <ThrowOnError extends boolean = false>(o
|
|
|
745
617
|
|
|
746
618
|
/**
|
|
747
619
|
* Get food menus
|
|
748
|
-
*
|
|
749
|
-
*
|
|
750
|
-
* Returns the full menu structure including:
|
|
751
|
-
* - Menu names and descriptions
|
|
752
|
-
* - Sections (e.g. Appetizers, Entrees, Drinks)
|
|
753
|
-
* - Items with labels, pricing, dietary info, and allergens
|
|
754
|
-
* - Item options/variants
|
|
755
|
-
*
|
|
756
|
-
* Only available for locations with food menu support (restaurants, cafes, etc.).
|
|
757
|
-
*
|
|
620
|
+
* Returns food menus for a GBP location including sections, items, pricing, and dietary info. Only for locations with food menu support.
|
|
758
621
|
*/
|
|
759
622
|
export const getGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessFoodMenusData, ThrowOnError>) => {
|
|
760
623
|
return (options?.client ?? client).get<GetGoogleBusinessFoodMenusResponse, GetGoogleBusinessFoodMenusError, ThrowOnError>({
|
|
@@ -765,12 +628,7 @@ export const getGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>
|
|
|
765
628
|
|
|
766
629
|
/**
|
|
767
630
|
* Update food menus
|
|
768
|
-
* Updates
|
|
769
|
-
*
|
|
770
|
-
* Send the full menus array. Use `updateMask` for partial updates (e.g. `"menus"` to only update the menus field).
|
|
771
|
-
*
|
|
772
|
-
* Each menu can contain sections, and each section can contain items with pricing, dietary restrictions, allergens, and more.
|
|
773
|
-
*
|
|
631
|
+
* Updates food menus for a GBP location. Send the full menus array. Use updateMask for partial updates.
|
|
774
632
|
*/
|
|
775
633
|
export const updateGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGoogleBusinessFoodMenusData, ThrowOnError>) => {
|
|
776
634
|
return (options?.client ?? client).put<UpdateGoogleBusinessFoodMenusResponse, UpdateGoogleBusinessFoodMenusError, ThrowOnError>({
|
|
@@ -781,11 +639,7 @@ export const updateGoogleBusinessFoodMenus = <ThrowOnError extends boolean = fal
|
|
|
781
639
|
|
|
782
640
|
/**
|
|
783
641
|
* Get location details
|
|
784
|
-
*
|
|
785
|
-
* business description, phone numbers, website, categories, and more.
|
|
786
|
-
*
|
|
787
|
-
* Use the `readMask` query parameter to request specific fields.
|
|
788
|
-
*
|
|
642
|
+
* Returns detailed GBP location info (hours, description, phone, website, categories). Use readMask to request specific fields.
|
|
789
643
|
*/
|
|
790
644
|
export const getGoogleBusinessLocationDetails = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessLocationDetailsData, ThrowOnError>) => {
|
|
791
645
|
return (options?.client ?? client).get<GetGoogleBusinessLocationDetailsResponse, GetGoogleBusinessLocationDetailsError, ThrowOnError>({
|
|
@@ -796,18 +650,7 @@ export const getGoogleBusinessLocationDetails = <ThrowOnError extends boolean =
|
|
|
796
650
|
|
|
797
651
|
/**
|
|
798
652
|
* Update location details
|
|
799
|
-
* Updates location details
|
|
800
|
-
*
|
|
801
|
-
* The `updateMask` field is required and specifies which fields to update.
|
|
802
|
-
*
|
|
803
|
-
* Common update masks:
|
|
804
|
-
* - `regularHours` - Update opening hours
|
|
805
|
-
* - `specialHours` - Update holiday/special hours
|
|
806
|
-
* - `profile.description` - Update business description
|
|
807
|
-
* - `websiteUri` - Update website URL
|
|
808
|
-
* - `phoneNumbers` - Update phone numbers
|
|
809
|
-
* - `regularHours,specialHours` - Update both at once
|
|
810
|
-
*
|
|
653
|
+
* Updates GBP location details (hours, description, phone, website). The updateMask field is required and specifies which fields to update.
|
|
811
654
|
*/
|
|
812
655
|
export const updateGoogleBusinessLocationDetails = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGoogleBusinessLocationDetailsData, ThrowOnError>) => {
|
|
813
656
|
return (options?.client ?? client).put<UpdateGoogleBusinessLocationDetailsResponse, UpdateGoogleBusinessLocationDetailsError, ThrowOnError>({
|
|
@@ -833,17 +676,7 @@ export const listGoogleBusinessMedia = <ThrowOnError extends boolean = false>(op
|
|
|
833
676
|
* Upload photo
|
|
834
677
|
* Creates a media item (photo) for a location from a publicly accessible URL.
|
|
835
678
|
*
|
|
836
|
-
* Categories determine where the photo appears:
|
|
837
|
-
* - `COVER` - Cover photo
|
|
838
|
-
* - `PROFILE` - Profile photo
|
|
839
|
-
* - `LOGO` - Business logo
|
|
840
|
-
* - `EXTERIOR` - Exterior shots
|
|
841
|
-
* - `INTERIOR` - Interior shots
|
|
842
|
-
* - `FOOD_AND_DRINK` - Food and drink photos
|
|
843
|
-
* - `MENU` - Menu photos
|
|
844
|
-
* - `PRODUCT` - Product photos
|
|
845
|
-
* - `TEAMS` - Team/staff photos
|
|
846
|
-
* - `ADDITIONAL` - Other photos
|
|
679
|
+
* Categories determine where the photo appears: COVER, PROFILE, LOGO, EXTERIOR, INTERIOR, FOOD_AND_DRINK, MENU, PRODUCT, TEAMS, ADDITIONAL.
|
|
847
680
|
*
|
|
848
681
|
*/
|
|
849
682
|
export const createGoogleBusinessMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateGoogleBusinessMediaData, ThrowOnError>) => {
|
|
@@ -855,6 +688,7 @@ export const createGoogleBusinessMedia = <ThrowOnError extends boolean = false>(
|
|
|
855
688
|
|
|
856
689
|
/**
|
|
857
690
|
* Delete photo
|
|
691
|
+
* Deletes a photo or media item from a GBP location.
|
|
858
692
|
*/
|
|
859
693
|
export const deleteGoogleBusinessMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteGoogleBusinessMediaData, ThrowOnError>) => {
|
|
860
694
|
return (options?.client ?? client).delete<DeleteGoogleBusinessMediaResponse, DeleteGoogleBusinessMediaError, ThrowOnError>({
|
|
@@ -865,16 +699,7 @@ export const deleteGoogleBusinessMedia = <ThrowOnError extends boolean = false>(
|
|
|
865
699
|
|
|
866
700
|
/**
|
|
867
701
|
* Get attributes
|
|
868
|
-
*
|
|
869
|
-
*
|
|
870
|
-
* Common attributes for restaurants include:
|
|
871
|
-
* - Dining options: has_dine_in, has_takeout, has_delivery
|
|
872
|
-
* - Amenities: has_outdoor_seating, has_wifi, has_parking
|
|
873
|
-
* - Accessibility: has_wheelchair_accessible_entrance
|
|
874
|
-
* - Payments: pay_credit_card_types_accepted
|
|
875
|
-
*
|
|
876
|
-
* Available attributes vary by business category.
|
|
877
|
-
*
|
|
702
|
+
* Returns GBP location attributes (amenities, services, accessibility, payment types). Available attributes vary by business category.
|
|
878
703
|
*/
|
|
879
704
|
export const getGoogleBusinessAttributes = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessAttributesData, ThrowOnError>) => {
|
|
880
705
|
return (options?.client ?? client).get<GetGoogleBusinessAttributesResponse, GetGoogleBusinessAttributesError, ThrowOnError>({
|
|
@@ -887,7 +712,7 @@ export const getGoogleBusinessAttributes = <ThrowOnError extends boolean = false
|
|
|
887
712
|
* Update attributes
|
|
888
713
|
* Updates location attributes (amenities, services, etc.).
|
|
889
714
|
*
|
|
890
|
-
* The
|
|
715
|
+
* The attributeMask specifies which attributes to update (comma-separated).
|
|
891
716
|
*
|
|
892
717
|
*/
|
|
893
718
|
export const updateGoogleBusinessAttributes = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGoogleBusinessAttributesData, ThrowOnError>) => {
|
|
@@ -915,14 +740,7 @@ export const listGoogleBusinessPlaceActions = <ThrowOnError extends boolean = fa
|
|
|
915
740
|
* Create action link
|
|
916
741
|
* Creates a place action link for a location.
|
|
917
742
|
*
|
|
918
|
-
* Available action types:
|
|
919
|
-
* - `APPOINTMENT` - Booking an appointment
|
|
920
|
-
* - `ONLINE_APPOINTMENT` - Booking an online appointment
|
|
921
|
-
* - `DINING_RESERVATION` - Making a dining reservation (OpenTable, Resy, etc.)
|
|
922
|
-
* - `FOOD_ORDERING` - Ordering food for delivery and/or takeout (DoorDash, Uber Eats, etc.)
|
|
923
|
-
* - `FOOD_DELIVERY` - Ordering food for delivery only
|
|
924
|
-
* - `FOOD_TAKEOUT` - Ordering food for takeout only
|
|
925
|
-
* - `SHOP_ONLINE` - Shopping with delivery and/or pickup
|
|
743
|
+
* Available action types: APPOINTMENT, ONLINE_APPOINTMENT, DINING_RESERVATION, FOOD_ORDERING, FOOD_DELIVERY, FOOD_TAKEOUT, SHOP_ONLINE.
|
|
926
744
|
*
|
|
927
745
|
*/
|
|
928
746
|
export const createGoogleBusinessPlaceAction = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateGoogleBusinessPlaceActionData, ThrowOnError>) => {
|
|
@@ -934,6 +752,7 @@ export const createGoogleBusinessPlaceAction = <ThrowOnError extends boolean = f
|
|
|
934
752
|
|
|
935
753
|
/**
|
|
936
754
|
* Delete action link
|
|
755
|
+
* Deletes a place action link (e.g. booking or ordering URL) from a GBP location.
|
|
937
756
|
*/
|
|
938
757
|
export const deleteGoogleBusinessPlaceAction = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteGoogleBusinessPlaceActionData, ThrowOnError>) => {
|
|
939
758
|
return (options?.client ?? client).delete<DeleteGoogleBusinessPlaceActionResponse, DeleteGoogleBusinessPlaceActionError, ThrowOnError>({
|
|
@@ -944,19 +763,7 @@ export const deleteGoogleBusinessPlaceAction = <ThrowOnError extends boolean = f
|
|
|
944
763
|
|
|
945
764
|
/**
|
|
946
765
|
* Get pending OAuth data
|
|
947
|
-
*
|
|
948
|
-
*
|
|
949
|
-
* In headless mode, platforms like LinkedIn store OAuth selection data (organizations, pages, etc.)
|
|
950
|
-
* in the database instead of passing it via URL parameters. This prevents URI_TOO_LONG errors
|
|
951
|
-
* when users have many organizations/pages to select from.
|
|
952
|
-
*
|
|
953
|
-
* After OAuth redirect, use the `pendingDataToken` from the URL to fetch the stored data.
|
|
954
|
-
*
|
|
955
|
-
* **Important:**
|
|
956
|
-
* - This endpoint is one-time use: data is deleted after being fetched
|
|
957
|
-
* - Data expires automatically after 10 minutes if not fetched
|
|
958
|
-
* - No authentication required, just the token from the redirect URL
|
|
959
|
-
*
|
|
766
|
+
* Fetch pending OAuth data for headless mode using the pendingDataToken from the redirect URL. One-time use, expires after 10 minutes. No authentication required.
|
|
960
767
|
*/
|
|
961
768
|
export const getPendingOAuthData = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetPendingOAuthDataData, ThrowOnError>) => {
|
|
962
769
|
return (options?.client ?? client).get<GetPendingOAuthDataResponse, GetPendingOAuthDataError, ThrowOnError>({
|
|
@@ -967,17 +774,7 @@ export const getPendingOAuthData = <ThrowOnError extends boolean = false>(option
|
|
|
967
774
|
|
|
968
775
|
/**
|
|
969
776
|
* List LinkedIn orgs
|
|
970
|
-
*
|
|
971
|
-
*
|
|
972
|
-
* After LinkedIn OAuth in headless mode, the redirect URL contains organization data with only
|
|
973
|
-
* `id`, `urn`, and `name` fields (additional details are excluded to prevent URL length issues with many organizations).
|
|
974
|
-
*
|
|
975
|
-
* Use this endpoint to fetch full organization details including logos, vanity names, websites, and more
|
|
976
|
-
* if you want to display them in your custom selection UI.
|
|
977
|
-
*
|
|
978
|
-
* **Note:** This endpoint requires no authentication - just the `tempToken` from the OAuth redirect.
|
|
979
|
-
* Details are fetched directly from LinkedIn's API in parallel for fast response times.
|
|
980
|
-
*
|
|
777
|
+
* Fetch full LinkedIn organization details (logos, vanity names, websites) for custom UI. No authentication required, just the tempToken from OAuth.
|
|
981
778
|
*/
|
|
982
779
|
export const listLinkedInOrganizations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListLinkedInOrganizationsData, ThrowOnError>) => {
|
|
983
780
|
return (options?.client ?? client).get<ListLinkedInOrganizationsResponse, ListLinkedInOrganizationsError, ThrowOnError>({
|
|
@@ -988,20 +785,7 @@ export const listLinkedInOrganizations = <ThrowOnError extends boolean = false>(
|
|
|
988
785
|
|
|
989
786
|
/**
|
|
990
787
|
* Select LinkedIn org
|
|
991
|
-
*
|
|
992
|
-
*
|
|
993
|
-
* After OAuth, the user is redirected with `organizations` in the URL params (if they have org admin access).
|
|
994
|
-
* The organizations array contains `id`, `urn`, and `name` fields. Use this data to build your UI,
|
|
995
|
-
* then call this endpoint to save the selection.
|
|
996
|
-
*
|
|
997
|
-
* Set `accountType` to `personal` to connect as the user's personal LinkedIn profile, or
|
|
998
|
-
* `organization` to connect as a company page (requires `selectedOrganization` object).
|
|
999
|
-
*
|
|
1000
|
-
* **Personal Profile:** To connect a personal LinkedIn account, set `accountType` to `"personal"`
|
|
1001
|
-
* and **omit** the `selectedOrganization` field entirely. This is the simplest flow.
|
|
1002
|
-
*
|
|
1003
|
-
* **Headless Mode:** Use the `X-Connect-Token` header if you initiated the connection via API key.
|
|
1004
|
-
*
|
|
788
|
+
* Complete the LinkedIn connection flow. Set accountType to "personal" or "organization" to connect as a company page. Use X-Connect-Token if connecting via API key.
|
|
1005
789
|
*/
|
|
1006
790
|
export const selectLinkedInOrganization = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SelectLinkedInOrganizationData, ThrowOnError>) => {
|
|
1007
791
|
return (options?.client ?? client).post<SelectLinkedInOrganizationResponse, SelectLinkedInOrganizationError, ThrowOnError>({
|
|
@@ -1012,17 +796,7 @@ export const selectLinkedInOrganization = <ThrowOnError extends boolean = false>
|
|
|
1012
796
|
|
|
1013
797
|
/**
|
|
1014
798
|
* List Pinterest boards
|
|
1015
|
-
*
|
|
1016
|
-
*
|
|
1017
|
-
* After initiating Pinterest OAuth via `/v1/connect/pinterest` with `headless=true`, you'll be redirected to
|
|
1018
|
-
* your `redirect_url` with query params including `tempToken` and `userProfile`.
|
|
1019
|
-
*
|
|
1020
|
-
* If you want to build your own fully-branded board selector (instead of Late's hosted UI), call this
|
|
1021
|
-
* endpoint to retrieve the list of Pinterest Boards the user can post to. Then build your
|
|
1022
|
-
* UI and call `POST /v1/connect/pinterest/select-board` to save the selection.
|
|
1023
|
-
*
|
|
1024
|
-
* **Authentication:** Use `X-Connect-Token` header with the `connect_token` from the redirect URL.
|
|
1025
|
-
*
|
|
799
|
+
* For headless flows. Returns Pinterest boards the user can post to. Use X-Connect-Token from the redirect URL.
|
|
1026
800
|
*/
|
|
1027
801
|
export const listPinterestBoardsForSelection = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListPinterestBoardsForSelectionData, ThrowOnError>) => {
|
|
1028
802
|
return (options?.client ?? client).get<ListPinterestBoardsForSelectionResponse, ListPinterestBoardsForSelectionError, ThrowOnError>({
|
|
@@ -1033,11 +807,7 @@ export const listPinterestBoardsForSelection = <ThrowOnError extends boolean = f
|
|
|
1033
807
|
|
|
1034
808
|
/**
|
|
1035
809
|
* Select Pinterest board
|
|
1036
|
-
*
|
|
1037
|
-
*
|
|
1038
|
-
* After OAuth, use this endpoint to save the selected board and complete the Pinterest account connection.
|
|
1039
|
-
*
|
|
1040
|
-
* **Headless Mode:** Use the `X-Connect-Token` header if you initiated the connection via API key.
|
|
810
|
+
* Complete the Pinterest connection flow. After OAuth, use this endpoint to save the selected board and complete the account connection. Use the X-Connect-Token header if you initiated the connection via API key.
|
|
1041
811
|
*
|
|
1042
812
|
*/
|
|
1043
813
|
export const selectPinterestBoard = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SelectPinterestBoardData, ThrowOnError>) => {
|
|
@@ -1049,17 +819,7 @@ export const selectPinterestBoard = <ThrowOnError extends boolean = false>(optio
|
|
|
1049
819
|
|
|
1050
820
|
/**
|
|
1051
821
|
* List Snapchat profiles
|
|
1052
|
-
*
|
|
1053
|
-
*
|
|
1054
|
-
* After initiating Snapchat OAuth via `/v1/connect/snapchat?headless=true`, you'll be redirected to
|
|
1055
|
-
* your `redirect_url` with query params including `tempToken`, `userProfile`, and `publicProfiles`.
|
|
1056
|
-
*
|
|
1057
|
-
* If you want to build your own fully-branded profile selector (instead of Late's hosted UI), call this
|
|
1058
|
-
* endpoint to retrieve the list of Snapchat Public Profiles the user can post to. Then build your
|
|
1059
|
-
* UI and call `POST /v1/connect/snapchat/select-profile` to save the selection.
|
|
1060
|
-
*
|
|
1061
|
-
* **Authentication:** Use `X-Connect-Token` header with the `connect_token` from the redirect URL.
|
|
1062
|
-
*
|
|
822
|
+
* For headless flows. Returns Snapchat Public Profiles the user can post to. Use X-Connect-Token from the redirect URL.
|
|
1063
823
|
*/
|
|
1064
824
|
export const listSnapchatProfiles = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListSnapchatProfilesData, ThrowOnError>) => {
|
|
1065
825
|
return (options?.client ?? client).get<ListSnapchatProfilesResponse, ListSnapchatProfilesError, ThrowOnError>({
|
|
@@ -1070,24 +830,7 @@ export const listSnapchatProfiles = <ThrowOnError extends boolean = false>(optio
|
|
|
1070
830
|
|
|
1071
831
|
/**
|
|
1072
832
|
* Select Snapchat profile
|
|
1073
|
-
*
|
|
1074
|
-
*
|
|
1075
|
-
* After OAuth, use this endpoint to save the selected Public Profile and complete the Snapchat account connection.
|
|
1076
|
-
* Snapchat requires a Public Profile to publish Stories, Saved Stories, and Spotlight content.
|
|
1077
|
-
*
|
|
1078
|
-
* **Headless Mode:** Use the `X-Connect-Token` header if you initiated the connection via API key.
|
|
1079
|
-
*
|
|
1080
|
-
* After initiating Snapchat OAuth via `/v1/connect/snapchat?headless=true`, you'll be redirected to
|
|
1081
|
-
* your `redirect_url` with query params including:
|
|
1082
|
-
* - `tempToken` - Temporary access token
|
|
1083
|
-
* - `userProfile` - URL-encoded JSON with user info
|
|
1084
|
-
* - `publicProfiles` - URL-encoded JSON array of available public profiles
|
|
1085
|
-
* - `connect_token` - Short-lived token for API authentication
|
|
1086
|
-
* - `platform=snapchat`
|
|
1087
|
-
* - `step=select_public_profile`
|
|
1088
|
-
*
|
|
1089
|
-
* Parse `publicProfiles` to build your custom selector UI, then call this endpoint with the selected profile.
|
|
1090
|
-
*
|
|
833
|
+
* Complete the Snapchat connection flow by saving the selected Public Profile. Snapchat requires a Public Profile to publish content. Use X-Connect-Token if connecting via API key.
|
|
1091
834
|
*/
|
|
1092
835
|
export const selectSnapchatProfile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SelectSnapchatProfileData, ThrowOnError>) => {
|
|
1093
836
|
return (options?.client ?? client).post<SelectSnapchatProfileResponse, SelectSnapchatProfileError, ThrowOnError>({
|
|
@@ -1099,8 +842,7 @@ export const selectSnapchatProfile = <ThrowOnError extends boolean = false>(opti
|
|
|
1099
842
|
/**
|
|
1100
843
|
* Connect Bluesky account
|
|
1101
844
|
* Connect a Bluesky account using identifier (handle or email) and an app password.
|
|
1102
|
-
*
|
|
1103
|
-
* To get your userId for the state parameter, call `GET /v1/users` - the response includes a `currentUserId` field.
|
|
845
|
+
* To get your userId for the state parameter, call GET /v1/users which includes a currentUserId field.
|
|
1104
846
|
*
|
|
1105
847
|
*/
|
|
1106
848
|
export const connectBlueskyCredentials = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ConnectBlueskyCredentialsData, ThrowOnError>) => {
|
|
@@ -1112,17 +854,7 @@ export const connectBlueskyCredentials = <ThrowOnError extends boolean = false>(
|
|
|
1112
854
|
|
|
1113
855
|
/**
|
|
1114
856
|
* Generate Telegram code
|
|
1115
|
-
* Generate
|
|
1116
|
-
*
|
|
1117
|
-
* **Connection Flow:**
|
|
1118
|
-
* 1. Call this endpoint to get an access code (valid for 15 minutes)
|
|
1119
|
-
* 2. Add the bot (@LateScheduleBot or your configured bot) as an administrator in your Telegram channel/group
|
|
1120
|
-
* 3. Open a private chat with the bot
|
|
1121
|
-
* 4. Send: `{CODE} @yourchannel` (e.g., `LATE-ABC123 @mychannel`)
|
|
1122
|
-
* 5. Poll `PATCH /v1/connect/telegram?code={CODE}` to check connection status
|
|
1123
|
-
*
|
|
1124
|
-
* **Alternative for private channels:** If your channel has no public username, forward any message from the channel to the bot along with the access code.
|
|
1125
|
-
*
|
|
857
|
+
* Generate an access code (valid 15 minutes) for connecting a Telegram channel or group. Add the bot as admin, then send the code + @yourchannel to the bot. Poll PATCH /v1/connect/telegram to check status.
|
|
1126
858
|
*/
|
|
1127
859
|
export const getTelegramConnectStatus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetTelegramConnectStatusData, ThrowOnError>) => {
|
|
1128
860
|
return (options?.client ?? client).get<GetTelegramConnectStatusResponse, GetTelegramConnectStatusError, ThrowOnError>({
|
|
@@ -1133,11 +865,7 @@ export const getTelegramConnectStatus = <ThrowOnError extends boolean = false>(o
|
|
|
1133
865
|
|
|
1134
866
|
/**
|
|
1135
867
|
* Connect Telegram directly
|
|
1136
|
-
* Connect a Telegram channel/group directly using the chat ID.
|
|
1137
|
-
*
|
|
1138
|
-
* This is an alternative to the access code flow for power users who know their Telegram chat ID.
|
|
1139
|
-
* The bot must already be added as an administrator in the channel/group.
|
|
1140
|
-
*
|
|
868
|
+
* Connect a Telegram channel/group directly using the chat ID. Alternative to the access code flow. The bot must already be an admin in the channel/group.
|
|
1141
869
|
*/
|
|
1142
870
|
export const initiateTelegramConnect = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<InitiateTelegramConnectData, ThrowOnError>) => {
|
|
1143
871
|
return (options?.client ?? client).post<InitiateTelegramConnectResponse, InitiateTelegramConnectError, ThrowOnError>({
|
|
@@ -1148,14 +876,8 @@ export const initiateTelegramConnect = <ThrowOnError extends boolean = false>(op
|
|
|
1148
876
|
|
|
1149
877
|
/**
|
|
1150
878
|
* Check Telegram status
|
|
1151
|
-
* Poll this endpoint to check if a Telegram access code has been used to connect a channel/group.
|
|
1152
|
-
*
|
|
1153
|
-
* **Recommended polling interval:** 3 seconds
|
|
1154
|
-
*
|
|
1155
|
-
* **Status values:**
|
|
1156
|
-
* - `pending`: Code is valid, waiting for user to complete connection
|
|
1157
|
-
* - `connected`: Connection successful - channel/group is now linked
|
|
1158
|
-
* - `expired`: Code has expired, generate a new one
|
|
879
|
+
* Poll this endpoint to check if a Telegram access code has been used to connect a channel/group. Recommended polling interval: 3 seconds.
|
|
880
|
+
* Status values: pending (waiting for user), connected (channel/group linked), expired (generate a new code).
|
|
1159
881
|
*
|
|
1160
882
|
*/
|
|
1161
883
|
export const completeTelegramConnect = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CompleteTelegramConnectData, ThrowOnError>) => {
|
|
@@ -1178,6 +900,7 @@ export const getFacebookPages = <ThrowOnError extends boolean = false>(options:
|
|
|
1178
900
|
|
|
1179
901
|
/**
|
|
1180
902
|
* Update Facebook page
|
|
903
|
+
* Switch which Facebook Page is active for a connected account.
|
|
1181
904
|
*/
|
|
1182
905
|
export const updateFacebookPage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateFacebookPageData, ThrowOnError>) => {
|
|
1183
906
|
return (options?.client ?? client).put<UpdateFacebookPageResponse, UpdateFacebookPageError, ThrowOnError>({
|
|
@@ -1188,6 +911,7 @@ export const updateFacebookPage = <ThrowOnError extends boolean = false>(options
|
|
|
1188
911
|
|
|
1189
912
|
/**
|
|
1190
913
|
* List LinkedIn orgs
|
|
914
|
+
* Returns LinkedIn organizations (company pages) the connected account has admin access to.
|
|
1191
915
|
*/
|
|
1192
916
|
export const getLinkedInOrganizations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetLinkedInOrganizationsData, ThrowOnError>) => {
|
|
1193
917
|
return (options?.client ?? client).get<GetLinkedInOrganizationsResponse, GetLinkedInOrganizationsError, ThrowOnError>({
|
|
@@ -1198,12 +922,7 @@ export const getLinkedInOrganizations = <ThrowOnError extends boolean = false>(o
|
|
|
1198
922
|
|
|
1199
923
|
/**
|
|
1200
924
|
* Get LinkedIn aggregate stats
|
|
1201
|
-
* Returns aggregate analytics across all posts for a LinkedIn personal account.
|
|
1202
|
-
*
|
|
1203
|
-
* **Required scope:** `r_member_postAnalytics`. Missing scope returns 403 with reconnect instructions.
|
|
1204
|
-
*
|
|
1205
|
-
* **Aggregation:** `TOTAL` (default, lifetime totals) or `DAILY` (time series). Use `startDate`/`endDate` to filter by date range. Note: `MEMBERS_REACHED` is not available with `DAILY` aggregation.
|
|
1206
|
-
*
|
|
925
|
+
* Returns aggregate analytics across all posts for a LinkedIn personal account. Org accounts should use /v1/analytics instead. Requires r_member_postAnalytics scope.
|
|
1207
926
|
*/
|
|
1208
927
|
export const getLinkedInAggregateAnalytics = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetLinkedInAggregateAnalyticsData, ThrowOnError>) => {
|
|
1209
928
|
return (options?.client ?? client).get<GetLinkedInAggregateAnalyticsResponse, GetLinkedInAggregateAnalyticsError, ThrowOnError>({
|
|
@@ -1214,23 +933,7 @@ export const getLinkedInAggregateAnalytics = <ThrowOnError extends boolean = fal
|
|
|
1214
933
|
|
|
1215
934
|
/**
|
|
1216
935
|
* Get LinkedIn post stats
|
|
1217
|
-
* Returns analytics for a specific LinkedIn post
|
|
1218
|
-
* Works for both personal and organization accounts.
|
|
1219
|
-
*
|
|
1220
|
-
* This is useful for fetching analytics of posts that weren't published through Late,
|
|
1221
|
-
* as long as you have the post URN.
|
|
1222
|
-
*
|
|
1223
|
-
* **For Personal Accounts:**
|
|
1224
|
-
* - Uses `memberCreatorPostAnalytics` API + `memberCreatorVideoAnalytics` for video posts
|
|
1225
|
-
* - Requires `r_member_postAnalytics` scope
|
|
1226
|
-
* - Available metrics: impressions, reach, likes, comments, shares, video views (video posts only)
|
|
1227
|
-
* - **Clicks are NOT available** for personal accounts
|
|
1228
|
-
*
|
|
1229
|
-
* **For Organization Accounts:**
|
|
1230
|
-
* - Uses `organizationalEntityShareStatistics` API + `videoAnalytics` for video posts
|
|
1231
|
-
* - Requires `r_organization_social` scope
|
|
1232
|
-
* - Available metrics: impressions, reach, clicks, likes, comments, shares, video views (video posts only), engagement rate
|
|
1233
|
-
*
|
|
936
|
+
* Returns analytics for a specific LinkedIn post by URN. Works for both personal and organization accounts.
|
|
1234
937
|
*/
|
|
1235
938
|
export const getLinkedInPostAnalytics = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetLinkedInPostAnalyticsData, ThrowOnError>) => {
|
|
1236
939
|
return (options?.client ?? client).get<GetLinkedInPostAnalyticsResponse, GetLinkedInPostAnalyticsError, ThrowOnError>({
|
|
@@ -1241,6 +944,7 @@ export const getLinkedInPostAnalytics = <ThrowOnError extends boolean = false>(o
|
|
|
1241
944
|
|
|
1242
945
|
/**
|
|
1243
946
|
* Switch LinkedIn account type
|
|
947
|
+
* Switch a LinkedIn account between personal profile and organization (company page) posting.
|
|
1244
948
|
*/
|
|
1245
949
|
export const updateLinkedInOrganization = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateLinkedInOrganizationData, ThrowOnError>) => {
|
|
1246
950
|
return (options?.client ?? client).put<UpdateLinkedInOrganizationResponse, UpdateLinkedInOrganizationError, ThrowOnError>({
|
|
@@ -1251,14 +955,7 @@ export const updateLinkedInOrganization = <ThrowOnError extends boolean = false>
|
|
|
1251
955
|
|
|
1252
956
|
/**
|
|
1253
957
|
* Resolve LinkedIn mention
|
|
1254
|
-
* Converts a LinkedIn profile or company URL to a URN for @mentions in posts.
|
|
1255
|
-
*
|
|
1256
|
-
* Person mentions require the connected account to have admin access to at least one LinkedIn Organization. Organization mentions work with any account.
|
|
1257
|
-
*
|
|
1258
|
-
* For person mentions to be clickable, provide the `displayName` parameter matching the exact name on their LinkedIn profile. Organization names are fetched automatically.
|
|
1259
|
-
*
|
|
1260
|
-
* Use the returned `mentionFormat` value directly in your post content.
|
|
1261
|
-
*
|
|
958
|
+
* Converts a LinkedIn profile or company URL to a URN for @mentions in posts. Person mentions require org admin access. Use the returned mentionFormat in post content.
|
|
1262
959
|
*/
|
|
1263
960
|
export const getLinkedInMentions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetLinkedInMentionsData, ThrowOnError>) => {
|
|
1264
961
|
return (options?.client ?? client).get<GetLinkedInMentionsResponse, GetLinkedInMentionsError, ThrowOnError>({
|
|
@@ -1269,6 +966,7 @@ export const getLinkedInMentions = <ThrowOnError extends boolean = false>(option
|
|
|
1269
966
|
|
|
1270
967
|
/**
|
|
1271
968
|
* List Pinterest boards
|
|
969
|
+
* Returns the boards available for a connected Pinterest account. Use this to get a board ID when creating a Pinterest post.
|
|
1272
970
|
*/
|
|
1273
971
|
export const getPinterestBoards = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetPinterestBoardsData, ThrowOnError>) => {
|
|
1274
972
|
return (options?.client ?? client).get<GetPinterestBoardsResponse, GetPinterestBoardsError, ThrowOnError>({
|
|
@@ -1279,6 +977,7 @@ export const getPinterestBoards = <ThrowOnError extends boolean = false>(options
|
|
|
1279
977
|
|
|
1280
978
|
/**
|
|
1281
979
|
* Set default Pinterest board
|
|
980
|
+
* Sets the default board used when publishing pins for this account.
|
|
1282
981
|
*/
|
|
1283
982
|
export const updatePinterestBoards = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdatePinterestBoardsData, ThrowOnError>) => {
|
|
1284
983
|
return (options?.client ?? client).put<UpdatePinterestBoardsResponse, UpdatePinterestBoardsError, ThrowOnError>({
|
|
@@ -1288,7 +987,7 @@ export const updatePinterestBoards = <ThrowOnError extends boolean = false>(opti
|
|
|
1288
987
|
};
|
|
1289
988
|
|
|
1290
989
|
/**
|
|
1291
|
-
* List
|
|
990
|
+
* List GBP locations
|
|
1292
991
|
* Returns all Google Business Profile locations the connected account has access to, including the currently selected location.
|
|
1293
992
|
*/
|
|
1294
993
|
export const getGmbLocations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGmbLocationsData, ThrowOnError>) => {
|
|
@@ -1299,7 +998,8 @@ export const getGmbLocations = <ThrowOnError extends boolean = false>(options: O
|
|
|
1299
998
|
};
|
|
1300
999
|
|
|
1301
1000
|
/**
|
|
1302
|
-
* Update
|
|
1001
|
+
* Update GBP location
|
|
1002
|
+
* Switch which GBP location is active for a connected account.
|
|
1303
1003
|
*/
|
|
1304
1004
|
export const updateGmbLocation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGmbLocationData, ThrowOnError>) => {
|
|
1305
1005
|
return (options?.client ?? client).put<UpdateGmbLocationResponse, UpdateGmbLocationError, ThrowOnError>({
|
|
@@ -1310,6 +1010,7 @@ export const updateGmbLocation = <ThrowOnError extends boolean = false>(options:
|
|
|
1310
1010
|
|
|
1311
1011
|
/**
|
|
1312
1012
|
* List Reddit subreddits
|
|
1013
|
+
* Returns the subreddits the connected Reddit account can post to. Use this to get a subreddit name when creating a Reddit post.
|
|
1313
1014
|
*/
|
|
1314
1015
|
export const getRedditSubreddits = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetRedditSubredditsData, ThrowOnError>) => {
|
|
1315
1016
|
return (options?.client ?? client).get<GetRedditSubredditsResponse, GetRedditSubredditsError, ThrowOnError>({
|
|
@@ -1320,6 +1021,7 @@ export const getRedditSubreddits = <ThrowOnError extends boolean = false>(option
|
|
|
1320
1021
|
|
|
1321
1022
|
/**
|
|
1322
1023
|
* Set default subreddit
|
|
1024
|
+
* Sets the default subreddit used when publishing posts for this Reddit account.
|
|
1323
1025
|
*/
|
|
1324
1026
|
export const updateRedditSubreddits = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateRedditSubredditsData, ThrowOnError>) => {
|
|
1325
1027
|
return (options?.client ?? client).put<UpdateRedditSubredditsResponse, UpdateRedditSubredditsError, ThrowOnError>({
|
|
@@ -1330,6 +1032,7 @@ export const updateRedditSubreddits = <ThrowOnError extends boolean = false>(opt
|
|
|
1330
1032
|
|
|
1331
1033
|
/**
|
|
1332
1034
|
* List subreddit flairs
|
|
1035
|
+
* Returns available post flairs for a subreddit. Some subreddits require a flair when posting.
|
|
1333
1036
|
*/
|
|
1334
1037
|
export const getRedditFlairs = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetRedditFlairsData, ThrowOnError>) => {
|
|
1335
1038
|
return (options?.client ?? client).get<GetRedditFlairsResponse, GetRedditFlairsError, ThrowOnError>({
|
|
@@ -1340,10 +1043,7 @@ export const getRedditFlairs = <ThrowOnError extends boolean = false>(options: O
|
|
|
1340
1043
|
|
|
1341
1044
|
/**
|
|
1342
1045
|
* List schedules
|
|
1343
|
-
*
|
|
1344
|
-
* - Without `all=true`: Returns the default queue (or specific queue if queueId provided)
|
|
1345
|
-
* - With `all=true`: Returns all queues for the profile
|
|
1346
|
-
*
|
|
1046
|
+
* Returns queue schedules for a profile. Use all=true for all queues, or queueId for a specific one. Defaults to the default queue.
|
|
1347
1047
|
*/
|
|
1348
1048
|
export const listQueueSlots = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListQueueSlotsData, ThrowOnError>) => {
|
|
1349
1049
|
return (options?.client ?? client).get<ListQueueSlotsResponse, ListQueueSlotsError, ThrowOnError>({
|
|
@@ -1367,10 +1067,7 @@ export const createQueueSlot = <ThrowOnError extends boolean = false>(options: O
|
|
|
1367
1067
|
|
|
1368
1068
|
/**
|
|
1369
1069
|
* Update schedule
|
|
1370
|
-
* Create a new queue or update an existing one.
|
|
1371
|
-
* - Without queueId: Creates or updates the default queue
|
|
1372
|
-
* - With queueId: Updates the specific queue
|
|
1373
|
-
* - With setAsDefault=true: Makes this queue the default for the profile
|
|
1070
|
+
* Create a new queue or update an existing one. Without queueId, creates/updates the default queue. With queueId, updates a specific queue. With setAsDefault=true, makes this queue the default for the profile.
|
|
1374
1071
|
*
|
|
1375
1072
|
*/
|
|
1376
1073
|
export const updateQueueSlot = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateQueueSlotData, ThrowOnError>) => {
|
|
@@ -1395,6 +1092,7 @@ export const deleteQueueSlot = <ThrowOnError extends boolean = false>(options: O
|
|
|
1395
1092
|
|
|
1396
1093
|
/**
|
|
1397
1094
|
* Preview upcoming slots
|
|
1095
|
+
* Returns the next N upcoming queue slot times for a profile as ISO datetime strings.
|
|
1398
1096
|
*/
|
|
1399
1097
|
export const previewQueue = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<PreviewQueueData, ThrowOnError>) => {
|
|
1400
1098
|
return (options?.client ?? client).get<PreviewQueueResponse, PreviewQueueError, ThrowOnError>({
|
|
@@ -1405,22 +1103,7 @@ export const previewQueue = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
1405
1103
|
|
|
1406
1104
|
/**
|
|
1407
1105
|
* Get next available slot
|
|
1408
|
-
* Returns the next available queue slot for preview
|
|
1409
|
-
*
|
|
1410
|
-
* **Important: To schedule a post to the queue, do NOT use this endpoint's response
|
|
1411
|
-
* with `scheduledFor`.** That creates a manual post, not a queue post.
|
|
1412
|
-
*
|
|
1413
|
-
* Instead, use `POST /v1/posts` with `queuedFromProfile` (and optionally `queueId`).
|
|
1414
|
-
* The system will automatically assign the next available slot with proper locking
|
|
1415
|
-
* to prevent race conditions.
|
|
1416
|
-
*
|
|
1417
|
-
* This endpoint is useful for:
|
|
1418
|
-
* - Showing users when their next post will go out before they commit
|
|
1419
|
-
* - Debugging/verifying queue configuration
|
|
1420
|
-
* - Building UI previews
|
|
1421
|
-
*
|
|
1422
|
-
* If no queueId is specified, uses the profile's default queue.
|
|
1423
|
-
*
|
|
1106
|
+
* Returns the next available queue slot for preview purposes. To create a queue post, use POST /v1/posts with queuedFromProfile instead of scheduledFor.
|
|
1424
1107
|
*/
|
|
1425
1108
|
export const getNextQueueSlot = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetNextQueueSlotData, ThrowOnError>) => {
|
|
1426
1109
|
return (options?.client ?? client).get<GetNextQueueSlotResponse, GetNextQueueSlotError, ThrowOnError>({
|
|
@@ -1444,7 +1127,7 @@ export const getWebhookSettings = <ThrowOnError extends boolean = false>(options
|
|
|
1444
1127
|
* Create webhook
|
|
1445
1128
|
* Create a new webhook configuration. Maximum 10 webhooks per user.
|
|
1446
1129
|
*
|
|
1447
|
-
*
|
|
1130
|
+
* Webhooks are automatically disabled after 10 consecutive delivery failures.
|
|
1448
1131
|
*
|
|
1449
1132
|
*/
|
|
1450
1133
|
export const createWebhookSettings = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateWebhookSettingsData, ThrowOnError>) => {
|
|
@@ -1456,9 +1139,9 @@ export const createWebhookSettings = <ThrowOnError extends boolean = false>(opti
|
|
|
1456
1139
|
|
|
1457
1140
|
/**
|
|
1458
1141
|
* Update webhook
|
|
1459
|
-
* Update an existing webhook configuration. All fields except
|
|
1142
|
+
* Update an existing webhook configuration. All fields except _id are optional; only provided fields will be updated.
|
|
1460
1143
|
*
|
|
1461
|
-
*
|
|
1144
|
+
* Webhooks are automatically disabled after 10 consecutive delivery failures.
|
|
1462
1145
|
*
|
|
1463
1146
|
*/
|
|
1464
1147
|
export const updateWebhookSettings = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateWebhookSettingsData, ThrowOnError>) => {
|
|
@@ -1481,8 +1164,7 @@ export const deleteWebhookSettings = <ThrowOnError extends boolean = false>(opti
|
|
|
1481
1164
|
|
|
1482
1165
|
/**
|
|
1483
1166
|
* Send test webhook
|
|
1484
|
-
* Send a test webhook to verify your endpoint is configured correctly.
|
|
1485
|
-
* The test payload includes `event: "webhook.test"` to distinguish it from real events.
|
|
1167
|
+
* Send a test webhook to verify your endpoint is configured correctly. The test payload includes event: "webhook.test" to distinguish it from real events.
|
|
1486
1168
|
*
|
|
1487
1169
|
*/
|
|
1488
1170
|
export const testWebhook = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<TestWebhookData, ThrowOnError>) => {
|
|
@@ -1504,53 +1186,9 @@ export const getWebhookLogs = <ThrowOnError extends boolean = false>(options?: O
|
|
|
1504
1186
|
});
|
|
1505
1187
|
};
|
|
1506
1188
|
|
|
1507
|
-
/**
|
|
1508
|
-
* @deprecated
|
|
1509
|
-
* List publishing logs (deprecated)
|
|
1510
|
-
* **Deprecated:** Use `/v1/posts/logs` instead. This endpoint is maintained for backwards compatibility.
|
|
1511
|
-
*
|
|
1512
|
-
* Retrieve publishing logs for all posts. Logs show detailed information about each
|
|
1513
|
-
* publishing attempt including API requests, responses, and timing data.
|
|
1514
|
-
*
|
|
1515
|
-
* **Filtering:**
|
|
1516
|
-
* - Filter by status (success, failed, pending, skipped)
|
|
1517
|
-
* - Filter by platform (instagram, twitter, linkedin, etc.)
|
|
1518
|
-
* - Filter by action (publish, retry, rate_limit_pause, etc.)
|
|
1519
|
-
*
|
|
1520
|
-
* **Retention:** Logs are automatically deleted after 7 days.
|
|
1521
|
-
*
|
|
1522
|
-
*/
|
|
1523
|
-
export const listLogs = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListLogsData, ThrowOnError>) => {
|
|
1524
|
-
return (options?.client ?? client).get<ListLogsResponse, ListLogsError, ThrowOnError>({
|
|
1525
|
-
...options,
|
|
1526
|
-
url: '/v1/logs'
|
|
1527
|
-
});
|
|
1528
|
-
};
|
|
1529
|
-
|
|
1530
|
-
/**
|
|
1531
|
-
* Get log entry
|
|
1532
|
-
* Retrieve detailed information about a specific log entry, including full request
|
|
1533
|
-
* and response bodies for debugging.
|
|
1534
|
-
*
|
|
1535
|
-
*/
|
|
1536
|
-
export const getLog = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetLogData, ThrowOnError>) => {
|
|
1537
|
-
return (options?.client ?? client).get<GetLogResponse, GetLogError, ThrowOnError>({
|
|
1538
|
-
...options,
|
|
1539
|
-
url: '/v1/logs/{logId}'
|
|
1540
|
-
});
|
|
1541
|
-
};
|
|
1542
|
-
|
|
1543
1189
|
/**
|
|
1544
1190
|
* List publishing logs
|
|
1545
|
-
* Retrieve publishing logs for all posts
|
|
1546
|
-
* publishing attempt including API requests, responses, and timing data.
|
|
1547
|
-
*
|
|
1548
|
-
* **Filtering:**
|
|
1549
|
-
* - Filter by status (success, failed, pending, skipped)
|
|
1550
|
-
* - Filter by platform (instagram, twitter, linkedin, etc.)
|
|
1551
|
-
* - Filter by action (publish, retry, rate_limit_pause, etc.)
|
|
1552
|
-
*
|
|
1553
|
-
* **Retention:** Logs are automatically deleted after 7 days.
|
|
1191
|
+
* Retrieve publishing logs for all posts with detailed information about each publishing attempt. Filter by status, platform, or action. Logs are automatically deleted after 7 days.
|
|
1554
1192
|
*
|
|
1555
1193
|
*/
|
|
1556
1194
|
export const listPostsLogs = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListPostsLogsData, ThrowOnError>) => {
|
|
@@ -1562,17 +1200,8 @@ export const listPostsLogs = <ThrowOnError extends boolean = false>(options?: Op
|
|
|
1562
1200
|
|
|
1563
1201
|
/**
|
|
1564
1202
|
* List connection logs
|
|
1565
|
-
* Retrieve connection event logs showing account connection and disconnection history.
|
|
1566
|
-
*
|
|
1567
|
-
*
|
|
1568
|
-
* **Event Types:**
|
|
1569
|
-
* - `connect_success` - New account connected successfully
|
|
1570
|
-
* - `connect_failed` - Connection attempt failed
|
|
1571
|
-
* - `disconnect` - Account was disconnected
|
|
1572
|
-
* - `reconnect_success` - Existing account reconnected
|
|
1573
|
-
* - `reconnect_failed` - Reconnection attempt failed
|
|
1574
|
-
*
|
|
1575
|
-
* **Retention:** Logs are automatically deleted after 7 days.
|
|
1203
|
+
* Retrieve connection event logs showing account connection and disconnection history. Event types: connect_success, connect_failed, disconnect, reconnect_success, reconnect_failed.
|
|
1204
|
+
* Logs are automatically deleted after 7 days.
|
|
1576
1205
|
*
|
|
1577
1206
|
*/
|
|
1578
1207
|
export const listConnectionLogs = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListConnectionLogsData, ThrowOnError>) => {
|
|
@@ -1597,10 +1226,8 @@ export const getPostLogs = <ThrowOnError extends boolean = false>(options: Optio
|
|
|
1597
1226
|
|
|
1598
1227
|
/**
|
|
1599
1228
|
* List conversations
|
|
1600
|
-
* Fetch conversations (DMs) from all connected messaging accounts in a single API call.
|
|
1601
|
-
*
|
|
1602
|
-
*
|
|
1603
|
-
* **Supported platforms:** Facebook, Instagram, Twitter/X, Bluesky, Reddit, Telegram
|
|
1229
|
+
* Fetch conversations (DMs) from all connected messaging accounts in a single API call. Supports filtering by profile and platform. Results are aggregated and deduplicated.
|
|
1230
|
+
* Supported platforms: Facebook, Instagram, Twitter/X, Bluesky, Reddit, Telegram.
|
|
1604
1231
|
*
|
|
1605
1232
|
*/
|
|
1606
1233
|
export const listInboxConversations = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListInboxConversationsData, ThrowOnError>) => {
|
|
@@ -1645,17 +1272,7 @@ export const getInboxConversationMessages = <ThrowOnError extends boolean = fals
|
|
|
1645
1272
|
|
|
1646
1273
|
/**
|
|
1647
1274
|
* Send message
|
|
1648
|
-
* Send a message in a conversation. Supports text, attachments, quick replies, buttons,
|
|
1649
|
-
*
|
|
1650
|
-
* **Attachment support by platform:**
|
|
1651
|
-
* - Telegram: Images, videos, documents (up to 50MB)
|
|
1652
|
-
* - Facebook Messenger: Images, videos, audio, files
|
|
1653
|
-
* - Instagram: Images, videos, audio via URL (8MB images, 25MB video/audio)
|
|
1654
|
-
* - Twitter/X: Images, videos (requires media upload)
|
|
1655
|
-
* - Bluesky/Reddit: Not supported
|
|
1656
|
-
*
|
|
1657
|
-
* **Interactive messages:** Supports quick replies, buttons, templates, and reply markup. Feature availability varies by platform (Instagram, Facebook, Telegram). Unsupported fields are silently ignored.
|
|
1658
|
-
*
|
|
1275
|
+
* Send a message in a conversation. Supports text, attachments, quick replies, buttons, and message tags. Attachment and interactive message support varies by platform.
|
|
1659
1276
|
*/
|
|
1660
1277
|
export const sendInboxMessage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SendInboxMessageData, ThrowOnError>) => {
|
|
1661
1278
|
return (options?.client ?? client).post<SendInboxMessageResponse, SendInboxMessageError, ThrowOnError>({
|
|
@@ -1678,7 +1295,7 @@ export const editInboxMessage = <ThrowOnError extends boolean = false>(options:
|
|
|
1678
1295
|
};
|
|
1679
1296
|
|
|
1680
1297
|
/**
|
|
1681
|
-
* Get
|
|
1298
|
+
* Get FB persistent menu
|
|
1682
1299
|
* Get the persistent menu configuration for a Facebook Messenger account.
|
|
1683
1300
|
*/
|
|
1684
1301
|
export const getMessengerMenu = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetMessengerMenuData, ThrowOnError>) => {
|
|
@@ -1689,7 +1306,7 @@ export const getMessengerMenu = <ThrowOnError extends boolean = false>(options:
|
|
|
1689
1306
|
};
|
|
1690
1307
|
|
|
1691
1308
|
/**
|
|
1692
|
-
* Set
|
|
1309
|
+
* Set FB persistent menu
|
|
1693
1310
|
* Set the persistent menu for a Facebook Messenger account. Max 3 top-level items, max 5 nested items.
|
|
1694
1311
|
*/
|
|
1695
1312
|
export const setMessengerMenu = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetMessengerMenuData, ThrowOnError>) => {
|
|
@@ -1700,7 +1317,8 @@ export const setMessengerMenu = <ThrowOnError extends boolean = false>(options:
|
|
|
1700
1317
|
};
|
|
1701
1318
|
|
|
1702
1319
|
/**
|
|
1703
|
-
* Delete
|
|
1320
|
+
* Delete FB persistent menu
|
|
1321
|
+
* Removes the persistent menu from Facebook Messenger conversations for this account.
|
|
1704
1322
|
*/
|
|
1705
1323
|
export const deleteMessengerMenu = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteMessengerMenuData, ThrowOnError>) => {
|
|
1706
1324
|
return (options?.client ?? client).delete<DeleteMessengerMenuResponse, DeleteMessengerMenuError, ThrowOnError>({
|
|
@@ -1710,7 +1328,7 @@ export const deleteMessengerMenu = <ThrowOnError extends boolean = false>(option
|
|
|
1710
1328
|
};
|
|
1711
1329
|
|
|
1712
1330
|
/**
|
|
1713
|
-
* Get
|
|
1331
|
+
* Get IG ice breakers
|
|
1714
1332
|
* Get the ice breaker configuration for an Instagram account.
|
|
1715
1333
|
*/
|
|
1716
1334
|
export const getInstagramIceBreakers = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetInstagramIceBreakersData, ThrowOnError>) => {
|
|
@@ -1721,7 +1339,7 @@ export const getInstagramIceBreakers = <ThrowOnError extends boolean = false>(op
|
|
|
1721
1339
|
};
|
|
1722
1340
|
|
|
1723
1341
|
/**
|
|
1724
|
-
* Set
|
|
1342
|
+
* Set IG ice breakers
|
|
1725
1343
|
* Set ice breakers for an Instagram account. Max 4 ice breakers, question max 80 chars.
|
|
1726
1344
|
*/
|
|
1727
1345
|
export const setInstagramIceBreakers = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetInstagramIceBreakersData, ThrowOnError>) => {
|
|
@@ -1732,7 +1350,8 @@ export const setInstagramIceBreakers = <ThrowOnError extends boolean = false>(op
|
|
|
1732
1350
|
};
|
|
1733
1351
|
|
|
1734
1352
|
/**
|
|
1735
|
-
* Delete
|
|
1353
|
+
* Delete IG ice breakers
|
|
1354
|
+
* Removes the ice breaker questions from an Instagram account's Messenger experience.
|
|
1736
1355
|
*/
|
|
1737
1356
|
export const deleteInstagramIceBreakers = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteInstagramIceBreakersData, ThrowOnError>) => {
|
|
1738
1357
|
return (options?.client ?? client).delete<DeleteInstagramIceBreakersResponse, DeleteInstagramIceBreakersError, ThrowOnError>({
|
|
@@ -1742,7 +1361,7 @@ export const deleteInstagramIceBreakers = <ThrowOnError extends boolean = false>
|
|
|
1742
1361
|
};
|
|
1743
1362
|
|
|
1744
1363
|
/**
|
|
1745
|
-
* Get
|
|
1364
|
+
* Get TG bot commands
|
|
1746
1365
|
* Get the bot commands configuration for a Telegram account.
|
|
1747
1366
|
*/
|
|
1748
1367
|
export const getTelegramCommands = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetTelegramCommandsData, ThrowOnError>) => {
|
|
@@ -1753,7 +1372,7 @@ export const getTelegramCommands = <ThrowOnError extends boolean = false>(option
|
|
|
1753
1372
|
};
|
|
1754
1373
|
|
|
1755
1374
|
/**
|
|
1756
|
-
* Set
|
|
1375
|
+
* Set TG bot commands
|
|
1757
1376
|
* Set bot commands for a Telegram account.
|
|
1758
1377
|
*/
|
|
1759
1378
|
export const setTelegramCommands = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetTelegramCommandsData, ThrowOnError>) => {
|
|
@@ -1764,7 +1383,8 @@ export const setTelegramCommands = <ThrowOnError extends boolean = false>(option
|
|
|
1764
1383
|
};
|
|
1765
1384
|
|
|
1766
1385
|
/**
|
|
1767
|
-
* Delete
|
|
1386
|
+
* Delete TG bot commands
|
|
1387
|
+
* Clears all bot commands configured for a Telegram bot account.
|
|
1768
1388
|
*/
|
|
1769
1389
|
export const deleteTelegramCommands = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteTelegramCommandsData, ThrowOnError>) => {
|
|
1770
1390
|
return (options?.client ?? client).delete<DeleteTelegramCommandsResponse, DeleteTelegramCommandsError, ThrowOnError>({
|
|
@@ -1775,11 +1395,7 @@ export const deleteTelegramCommands = <ThrowOnError extends boolean = false>(opt
|
|
|
1775
1395
|
|
|
1776
1396
|
/**
|
|
1777
1397
|
* List commented posts
|
|
1778
|
-
*
|
|
1779
|
-
* Aggregates data from multiple accounts in a single API call.
|
|
1780
|
-
*
|
|
1781
|
-
* **Supported platforms:** Facebook, Instagram, Twitter/X, Bluesky, Threads, YouTube, LinkedIn, Reddit, TikTok (write-only)
|
|
1782
|
-
*
|
|
1398
|
+
* Returns posts with comment counts from all connected accounts. Aggregates data across multiple accounts.
|
|
1783
1399
|
*/
|
|
1784
1400
|
export const listInboxComments = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListInboxCommentsData, ThrowOnError>) => {
|
|
1785
1401
|
return (options?.client ?? client).get<ListInboxCommentsResponse, ListInboxCommentsError, ThrowOnError>({
|
|
@@ -1850,11 +1466,8 @@ export const unhideInboxComment = <ThrowOnError extends boolean = false>(options
|
|
|
1850
1466
|
|
|
1851
1467
|
/**
|
|
1852
1468
|
* Like comment
|
|
1853
|
-
* Like or upvote a comment on a post.
|
|
1854
|
-
*
|
|
1855
|
-
* **Supported platforms:** Facebook, Twitter/X, Bluesky, Reddit
|
|
1856
|
-
*
|
|
1857
|
-
* For Bluesky, the `cid` (content identifier) is required in the request body.
|
|
1469
|
+
* Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit.
|
|
1470
|
+
* For Bluesky, the cid (content identifier) is required in the request body.
|
|
1858
1471
|
*
|
|
1859
1472
|
*/
|
|
1860
1473
|
export const likeInboxComment = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<LikeInboxCommentData, ThrowOnError>) => {
|
|
@@ -1866,11 +1479,8 @@ export const likeInboxComment = <ThrowOnError extends boolean = false>(options:
|
|
|
1866
1479
|
|
|
1867
1480
|
/**
|
|
1868
1481
|
* Unlike comment
|
|
1869
|
-
* Remove a like from a comment.
|
|
1870
|
-
*
|
|
1871
|
-
* **Supported platforms:** Facebook, Twitter/X, Bluesky, Reddit
|
|
1872
|
-
*
|
|
1873
|
-
* For Bluesky, the `likeUri` query parameter is required.
|
|
1482
|
+
* Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit.
|
|
1483
|
+
* For Bluesky, the likeUri query parameter is required.
|
|
1874
1484
|
*
|
|
1875
1485
|
*/
|
|
1876
1486
|
export const unlikeInboxComment = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UnlikeInboxCommentData, ThrowOnError>) => {
|
|
@@ -1882,21 +1492,7 @@ export const unlikeInboxComment = <ThrowOnError extends boolean = false>(options
|
|
|
1882
1492
|
|
|
1883
1493
|
/**
|
|
1884
1494
|
* Send private reply
|
|
1885
|
-
* Send a private
|
|
1886
|
-
* This is useful for handling customer inquiries or sensitive matters privately.
|
|
1887
|
-
*
|
|
1888
|
-
* **Supported platforms:** Instagram, Facebook
|
|
1889
|
-
*
|
|
1890
|
-
* **Limitations:**
|
|
1891
|
-
* - Only ONE private reply per comment (platform API restriction)
|
|
1892
|
-
* - Must be sent within 7 days of the comment being posted
|
|
1893
|
-
* - Only works for comments on posts owned by the connected account
|
|
1894
|
-
* - Text only (no media attachments)
|
|
1895
|
-
* - Instagram: message goes to the user's Inbox (if they follow you) or Message Requests (if they don't). Requires `instagram_business_manage_messages` permission.
|
|
1896
|
-
* - Facebook: message opens a Messenger conversation with the commenter. Requires `pages_messaging` permission.
|
|
1897
|
-
*
|
|
1898
|
-
* **Note:** Both permissions are already included in Late's OAuth flow. This does not create a conversation thread until the user replies back.
|
|
1899
|
-
*
|
|
1495
|
+
* Send a private message to the author of a comment. Supported on Instagram and Facebook only. One reply per comment, must be sent within 7 days, text only.
|
|
1900
1496
|
*/
|
|
1901
1497
|
export const sendPrivateReplyToComment = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SendPrivateReplyToCommentData, ThrowOnError>) => {
|
|
1902
1498
|
return (options?.client ?? client).post<SendPrivateReplyToCommentResponse, SendPrivateReplyToCommentError, ThrowOnError>({
|
|
@@ -1907,10 +1503,8 @@ export const sendPrivateReplyToComment = <ThrowOnError extends boolean = false>(
|
|
|
1907
1503
|
|
|
1908
1504
|
/**
|
|
1909
1505
|
* List reviews
|
|
1910
|
-
* Fetch reviews from all connected Facebook Pages and Google Business accounts.
|
|
1911
|
-
*
|
|
1912
|
-
*
|
|
1913
|
-
* **Supported platforms:** Facebook, Google Business
|
|
1506
|
+
* Fetch reviews from all connected Facebook Pages and Google Business accounts. Aggregates data with filtering and sorting options.
|
|
1507
|
+
* Supported platforms: Facebook, Google Business.
|
|
1914
1508
|
*
|
|
1915
1509
|
*/
|
|
1916
1510
|
export const listInboxReviews = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListInboxReviewsData, ThrowOnError>) => {
|