@zernio/node 0.2.725 → 0.2.727
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 +71 -8
- package/dist/index.d.mts +2452 -740
- package/dist/index.d.ts +2452 -740
- package/dist/index.js +419 -1
- package/dist/index.mjs +419 -1
- package/package.json +1 -1
- package/src/client.ts +124 -0
- package/src/generated/sdk.gen.ts +1020 -277
- package/src/generated/types.gen.ts +2416 -549
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 { ValidatePostLengthData, ValidatePostLengthError, ValidatePostLengthResponse, ValidatePostData, ValidatePostError, ValidatePostResponse, ValidateMediaData, ValidateMediaError, ValidateMediaResponse, ValidateSubredditData, ValidateSubredditError, ValidateSubredditResponse, GetAnalyticsData, GetAnalyticsError, GetAnalyticsResponse, GetAnalyticsDeltaData, GetAnalyticsDeltaError, GetAnalyticsDeltaResponse, GetYouTubeChannelInsightsData, GetYouTubeChannelInsightsError, GetYouTubeChannelInsightsResponse, GetLinkedInOrgAggregateAnalyticsData, GetLinkedInOrgAggregateAnalyticsError, GetLinkedInOrgAggregateAnalyticsResponse, GetTikTokAccountInsightsData, GetTikTokAccountInsightsError, GetTikTokAccountInsightsResponse, GetYouTubeDailyViewsData, GetYouTubeDailyViewsError, GetYouTubeDailyViewsResponse, GetYouTubeVideoRetentionData, GetYouTubeVideoRetentionError, GetYouTubeVideoRetentionResponse, GetFacebookPageInsightsData, GetFacebookPageInsightsError, GetFacebookPageInsightsResponse, GetFacebookPostEarningsData, GetFacebookPostEarningsError, GetFacebookPostEarningsResponse, GetInstagramAccountInsightsData, GetInstagramAccountInsightsError, GetInstagramAccountInsightsResponse, GetInstagramFollowerHistoryData, GetInstagramFollowerHistoryError, GetInstagramFollowerHistoryResponse, GetInstagramDemographicsData, GetInstagramDemographicsError, GetInstagramDemographicsResponse, GetYouTubeDemographicsData, GetYouTubeDemographicsError, GetYouTubeDemographicsResponse, GetDailyMetricsData, GetDailyMetricsError, GetDailyMetricsResponse, GetBestTimeToPostData, GetBestTimeToPostError, GetBestTimeToPostResponse, GetContentDecayData, GetContentDecayError, GetContentDecayResponse, GetPostingFrequencyData, GetPostingFrequencyError, GetPostingFrequencyResponse, GetPostTimelineData, GetPostTimelineError, GetPostTimelineResponse, GetGoogleBusinessPerformanceData, GetGoogleBusinessPerformanceError, GetGoogleBusinessPerformanceResponse, GetGoogleBusinessSearchKeywordsData, GetGoogleBusinessSearchKeywordsError, GetGoogleBusinessSearchKeywordsResponse, GetInboxVolumeData, GetInboxVolumeError, GetInboxVolumeResponse, GetInboxHeatmapData, GetInboxHeatmapError, GetInboxHeatmapResponse, GetInboxSourceBreakdownData, GetInboxSourceBreakdownError, GetInboxSourceBreakdownResponse, GetInboxResponseTimeData, GetInboxResponseTimeError, GetInboxResponseTimeResponse, GetInboxTopAccountsData, GetInboxTopAccountsError, GetInboxTopAccountsResponse, ListInboxConversationAnalyticsData, ListInboxConversationAnalyticsError, ListInboxConversationAnalyticsResponse, GetInboxConversationAnalyticsData, GetInboxConversationAnalyticsError, GetInboxConversationAnalyticsResponse, ListAccountGroupsError, ListAccountGroupsResponse, CreateAccountGroupData, CreateAccountGroupError, CreateAccountGroupResponse, UpdateAccountGroupData, UpdateAccountGroupError, UpdateAccountGroupResponse, DeleteAccountGroupData, DeleteAccountGroupError, DeleteAccountGroupResponse, GetMediaPresignedUrlData, GetMediaPresignedUrlError, GetMediaPresignedUrlResponse, SearchRedditData, SearchRedditError, SearchRedditResponse, GetRedditFeedData, GetRedditFeedError, GetRedditFeedResponse, GetBillingError, GetBillingResponse, GetXApiPricingError, GetXApiPricingResponse, GetUsageData, GetUsageError, GetUsageResponse, GetUsageStatsData, GetUsageStatsError, GetUsageStatsResponse, GetCallsUsageData, GetCallsUsageError, GetCallsUsageResponse, GetSmsUsageData, GetSmsUsageError, GetSmsUsageResponse, ListPostsData, ListPostsError, ListPostsResponse, CreatePostData, CreatePostError, CreatePostResponse, SyncExternalPostsData, SyncExternalPostsError, SyncExternalPostsResponse, GetPostData, GetPostError, GetPostResponse, UpdatePostData, UpdatePostError, UpdatePostResponse, DeletePostData, DeletePostError, DeletePostResponse, BulkUploadPostsData, BulkUploadPostsError, BulkUploadPostsResponse, RetryPostData, RetryPostError, RetryPostResponse, UnpublishPostData, UnpublishPostError, UnpublishPostResponse, EditPostData, EditPostError, EditPostResponse, UpdatePostMetadataData, UpdatePostMetadataError, UpdatePostMetadataResponse, 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, MoveAccountToProfileData, MoveAccountToProfileError, MoveAccountToProfileResponse, DeleteAccountData, DeleteAccountError, DeleteAccountResponse, GetAllAccountsHealthData, GetAllAccountsHealthError, GetAllAccountsHealthResponse, RegisterWhatsAppNumberData, RegisterWhatsAppNumberError, RegisterWhatsAppNumberResponse, GetAccountHealthData, GetAccountHealthError, GetAccountHealthResponse, GetAccountPostsData, GetAccountPostsError, GetAccountPostsResponse, GetInstagramFollowStatusData, GetInstagramFollowStatusError, GetInstagramFollowStatusResponse, GetTikTokCreatorInfoData, GetTikTokCreatorInfoError, GetTikTokCreatorInfoResponse, VerifyCredentialError, VerifyCredentialResponse, ListApiKeysError, ListApiKeysResponse, CreateApiKeyData, CreateApiKeyError, CreateApiKeyResponse, DeleteApiKeyData, DeleteApiKeyError, DeleteApiKeyResponse, ListConnectedAppsError, ListConnectedAppsResponse, RevokeConnectedAppData, RevokeConnectedAppError, RevokeConnectedAppResponse, CreateInviteTokenData, CreateInviteTokenError, CreateInviteTokenResponse, GetConnectUrlData, GetConnectUrlError, GetConnectUrlResponse, HandleOAuthCallbackData, HandleOAuthCallbackError, HandleOAuthCallbackResponse, ConnectAdsData, ConnectAdsError, ConnectAdsResponse, GetShopifyConnectUrlData, GetShopifyConnectUrlError, GetShopifyConnectUrlResponse, ConnectShopifyWithTokenData, ConnectShopifyWithTokenError, ConnectShopifyWithTokenResponse, ConfigureTikTokAdsBrandIdentityData, ConfigureTikTokAdsBrandIdentityError, ConfigureTikTokAdsBrandIdentityResponse, ListFacebookPagesData, ListFacebookPagesError, ListFacebookPagesResponse, SelectFacebookPageData, SelectFacebookPageError, SelectFacebookPageResponse, ListInstagramPagesData, ListInstagramPagesError, ListInstagramPagesResponse, SelectInstagramAccountData, SelectInstagramAccountError, SelectInstagramAccountResponse, ListGoogleBusinessLocationsData, ListGoogleBusinessLocationsError, ListGoogleBusinessLocationsResponse, SelectGoogleBusinessLocationData, SelectGoogleBusinessLocationError, SelectGoogleBusinessLocationResponse, GetGoogleBusinessReviewsData, GetGoogleBusinessReviewsError, GetGoogleBusinessReviewsResponse, GetGoogleBusinessVerificationsData, GetGoogleBusinessVerificationsError, GetGoogleBusinessVerificationsResponse, StartGoogleBusinessVerificationData, StartGoogleBusinessVerificationError, StartGoogleBusinessVerificationResponse, FetchGoogleBusinessVerificationOptionsData, FetchGoogleBusinessVerificationOptionsError, FetchGoogleBusinessVerificationOptionsResponse, CompleteGoogleBusinessVerificationData, CompleteGoogleBusinessVerificationError, CompleteGoogleBusinessVerificationResponse, GetGoogleBusinessFoodMenusData, GetGoogleBusinessFoodMenusError, GetGoogleBusinessFoodMenusResponse, UpdateGoogleBusinessFoodMenusData, UpdateGoogleBusinessFoodMenusError, UpdateGoogleBusinessFoodMenusResponse, GetGoogleBusinessLocationDetailsData, GetGoogleBusinessLocationDetailsError, GetGoogleBusinessLocationDetailsResponse, UpdateGoogleBusinessLocationDetailsData, UpdateGoogleBusinessLocationDetailsError, UpdateGoogleBusinessLocationDetailsResponse, ListGoogleBusinessMediaData, ListGoogleBusinessMediaError, ListGoogleBusinessMediaResponse, CreateGoogleBusinessMediaData, CreateGoogleBusinessMediaError, CreateGoogleBusinessMediaResponse, DeleteGoogleBusinessMediaData, DeleteGoogleBusinessMediaError, DeleteGoogleBusinessMediaResponse, GetGmbAttributeMetadataData, GetGmbAttributeMetadataError, GetGmbAttributeMetadataResponse, GetGoogleBusinessAttributesData, GetGoogleBusinessAttributesError, GetGoogleBusinessAttributesResponse, UpdateGoogleBusinessAttributesData, UpdateGoogleBusinessAttributesError, UpdateGoogleBusinessAttributesResponse, ListGoogleBusinessPlaceActionsData, ListGoogleBusinessPlaceActionsError, ListGoogleBusinessPlaceActionsResponse, CreateGoogleBusinessPlaceActionData, CreateGoogleBusinessPlaceActionError, CreateGoogleBusinessPlaceActionResponse, DeleteGoogleBusinessPlaceActionData, DeleteGoogleBusinessPlaceActionError, DeleteGoogleBusinessPlaceActionResponse, UpdateGoogleBusinessPlaceActionData, UpdateGoogleBusinessPlaceActionError, UpdateGoogleBusinessPlaceActionResponse, GetGoogleBusinessServicesData, GetGoogleBusinessServicesError, GetGoogleBusinessServicesResponse, UpdateGoogleBusinessServicesData, UpdateGoogleBusinessServicesError, UpdateGoogleBusinessServicesResponse, BatchGetGoogleBusinessReviewsData, BatchGetGoogleBusinessReviewsError, BatchGetGoogleBusinessReviewsResponse, GetGoogleBusinessReviewData, GetGoogleBusinessReviewError, GetGoogleBusinessReviewResponse, ReplyToGoogleBusinessReviewData, ReplyToGoogleBusinessReviewError, ReplyToGoogleBusinessReviewResponse, DeleteGoogleBusinessReviewReplyData, DeleteGoogleBusinessReviewReplyError, DeleteGoogleBusinessReviewReplyResponse, GetPendingOAuthDataData, GetPendingOAuthDataError, GetPendingOAuthDataResponse, ListLinkedInOrganizationsData, ListLinkedInOrganizationsError, ListLinkedInOrganizationsResponse, SelectLinkedInOrganizationData, SelectLinkedInOrganizationError, SelectLinkedInOrganizationResponse, ListPinterestBoardsForSelectionData, ListPinterestBoardsForSelectionError, ListPinterestBoardsForSelectionResponse, SelectPinterestBoardData, SelectPinterestBoardError, SelectPinterestBoardResponse, ListSnapchatProfilesData, ListSnapchatProfilesError, ListSnapchatProfilesResponse, SelectSnapchatProfileData, SelectSnapchatProfileError, SelectSnapchatProfileResponse, ConnectBlueskyCredentialsData, ConnectBlueskyCredentialsError, ConnectBlueskyCredentialsResponse, ConnectOpenAiAdsCredentialsData, ConnectOpenAiAdsCredentialsError, ConnectOpenAiAdsCredentialsResponse, ConnectWhatsAppCredentialsData, ConnectWhatsAppCredentialsError, ConnectWhatsAppCredentialsResponse, ListWhatsAppPhoneNumbersData, ListWhatsAppPhoneNumbersError, ListWhatsAppPhoneNumbersResponse, CompleteWhatsAppPhoneSelectionData, CompleteWhatsAppPhoneSelectionError, CompleteWhatsAppPhoneSelectionResponse, ConnectWhatsAppEmbeddedSignupData, ConnectWhatsAppEmbeddedSignupError, ConnectWhatsAppEmbeddedSignupResponse, ConnectDiscordChannelData, ConnectDiscordChannelError, ConnectDiscordChannelResponse, ListSlackChannelsData, ListSlackChannelsError, ListSlackChannelsResponse, ConnectSlackChannelData, ConnectSlackChannelError, ConnectSlackChannelResponse, GetTelegramConnectStatusData, GetTelegramConnectStatusError, GetTelegramConnectStatusResponse, InitiateTelegramConnectData, InitiateTelegramConnectError, InitiateTelegramConnectResponse, CompleteTelegramConnectData, CompleteTelegramConnectError, CompleteTelegramConnectResponse, GetFacebookPagesData, GetFacebookPagesError, GetFacebookPagesResponse, UpdateFacebookPageData, UpdateFacebookPageError, UpdateFacebookPageResponse, GetLinkedInOrganizationsData, GetLinkedInOrganizationsError, GetLinkedInOrganizationsResponse, GetLinkedInAggregateAnalyticsData, GetLinkedInAggregateAnalyticsError, GetLinkedInAggregateAnalyticsResponse, GetLinkedInPostAnalyticsData, GetLinkedInPostAnalyticsError, GetLinkedInPostAnalyticsResponse, GetLinkedInPostReactionsData, GetLinkedInPostReactionsError, GetLinkedInPostReactionsResponse, UpdateLinkedInOrganizationData, UpdateLinkedInOrganizationError, UpdateLinkedInOrganizationResponse, GetLinkedInMentionsData, GetLinkedInMentionsError, GetLinkedInMentionsResponse, ListInstagramStoriesData, ListInstagramStoriesError, ListInstagramStoriesResponse, GetInstagramPublishingLimitData, GetInstagramPublishingLimitError, GetInstagramPublishingLimitResponse, SearchInstagramAudioData, SearchInstagramAudioError, SearchInstagramAudioResponse, GetInstagramAudioData, GetInstagramAudioError, GetInstagramAudioResponse, GetInstagramStoryInsightsData, GetInstagramStoryInsightsError, GetInstagramStoryInsightsResponse, GetPinterestBoardsData, GetPinterestBoardsError, GetPinterestBoardsResponse, UpdatePinterestBoardsData, UpdatePinterestBoardsError, UpdatePinterestBoardsResponse, CreatePinterestBoardData, CreatePinterestBoardError, CreatePinterestBoardResponse, GetYoutubeCaptionsData, GetYoutubeCaptionsError, GetYoutubeCaptionsResponse, GetYoutubePlaylistsData, GetYoutubePlaylistsError, GetYoutubePlaylistsResponse, UpdateYoutubeDefaultPlaylistData, UpdateYoutubeDefaultPlaylistError, UpdateYoutubeDefaultPlaylistResponse, GetGmbLocationsData, GetGmbLocationsError, GetGmbLocationsResponse, UpdateGmbLocationData, UpdateGmbLocationError, UpdateGmbLocationResponse, AssignGoogleBusinessLocationData, AssignGoogleBusinessLocationError, AssignGoogleBusinessLocationResponse, GetFacebookPostReactionsData, GetFacebookPostReactionsError, GetFacebookPostReactionsResponse, GetRedditSubredditsData, GetRedditSubredditsError, GetRedditSubredditsResponse, UpdateRedditSubredditsData, UpdateRedditSubredditsError, UpdateRedditSubredditsResponse, GetSubredditRulesData, GetSubredditRulesError, GetSubredditRulesResponse, VoteRedditThingData, VoteRedditThingError, VoteRedditThingResponse, GetRedditFlairsData, GetRedditFlairsError, GetRedditFlairsResponse, SetRedditPostFlairData, SetRedditPostFlairError, SetRedditPostFlairResponse, GetSlackSettingsData, GetSlackSettingsError, GetSlackSettingsResponse, UpdateSlackSettingsData, UpdateSlackSettingsError, UpdateSlackSettingsResponse, GetBlueskySettingsData, GetBlueskySettingsError, GetBlueskySettingsResponse, UpdateBlueskySettingsData, UpdateBlueskySettingsError, UpdateBlueskySettingsResponse, GetDiscordSettingsData, GetDiscordSettingsError, GetDiscordSettingsResponse, UpdateDiscordSettingsData, UpdateDiscordSettingsError, UpdateDiscordSettingsResponse, GetDiscordChannelsData, GetDiscordChannelsError, GetDiscordChannelsResponse, ListSlackMembersData, ListSlackMembersError, ListSlackMembersResponse, SendDiscordDirectMessageData, SendDiscordDirectMessageError, SendDiscordDirectMessageResponse, ListDiscordGuildRolesData, ListDiscordGuildRolesError, ListDiscordGuildRolesResponse, CreateDiscordGuildRoleData, CreateDiscordGuildRoleError, CreateDiscordGuildRoleResponse, EditDiscordGuildRoleData, EditDiscordGuildRoleError, EditDiscordGuildRoleResponse, DeleteDiscordGuildRoleData, DeleteDiscordGuildRoleError, DeleteDiscordGuildRoleResponse, ListDiscordGuildMembersData, ListDiscordGuildMembersError, ListDiscordGuildMembersResponse, SearchDiscordGuildMembersData, SearchDiscordGuildMembersError, SearchDiscordGuildMembersResponse, GetDiscordGuildMemberData, GetDiscordGuildMemberError, GetDiscordGuildMemberResponse, AddDiscordMemberRoleData, AddDiscordMemberRoleError, AddDiscordMemberRoleResponse, RemoveDiscordMemberRoleData, RemoveDiscordMemberRoleError, RemoveDiscordMemberRoleResponse, DeleteDiscordMessageData, DeleteDiscordMessageError, DeleteDiscordMessageResponse, CrosspostDiscordMessageData, CrosspostDiscordMessageError, CrosspostDiscordMessageResponse, CreateDiscordThreadData, CreateDiscordThreadError, CreateDiscordThreadResponse, ListDiscordPinnedMessagesData, ListDiscordPinnedMessagesError, ListDiscordPinnedMessagesResponse, PinDiscordMessageData, PinDiscordMessageError, PinDiscordMessageResponse, UnpinDiscordMessageData, UnpinDiscordMessageError, UnpinDiscordMessageResponse, ListDiscordScheduledEventsData, ListDiscordScheduledEventsError, ListDiscordScheduledEventsResponse, CreateDiscordScheduledEventData, CreateDiscordScheduledEventError, CreateDiscordScheduledEventResponse, GetDiscordScheduledEventData, GetDiscordScheduledEventError, GetDiscordScheduledEventResponse, UpdateDiscordScheduledEventData, UpdateDiscordScheduledEventError, UpdateDiscordScheduledEventResponse, DeleteDiscordScheduledEventData, DeleteDiscordScheduledEventError, DeleteDiscordScheduledEventResponse, 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, GetWebhookLogsData, GetWebhookLogsError, GetWebhookLogsResponse, RedeliverWebhookEventData, RedeliverWebhookEventError, RedeliverWebhookEventResponse, TestWebhookData, TestWebhookError, TestWebhookResponse, ListLogsData, ListLogsError, ListLogsResponse, ListInboxConversationsData, ListInboxConversationsError, ListInboxConversationsResponse, CreateInboxConversationData, CreateInboxConversationError, CreateInboxConversationResponse, SearchInboxConversationsData, SearchInboxConversationsError, SearchInboxConversationsResponse, GetInboxConversationData, GetInboxConversationError, GetInboxConversationResponse, UpdateInboxConversationData, UpdateInboxConversationError, UpdateInboxConversationResponse, GetInboxConversationMessagesData, GetInboxConversationMessagesError, GetInboxConversationMessagesResponse, SendInboxMessageData, SendInboxMessageError, SendInboxMessageResponse, GetWhatsAppMediaData, GetWhatsAppMediaError, GetWhatsAppMediaResponse, EditInboxMessageData, EditInboxMessageError, EditInboxMessageResponse, DeleteInboxMessageData, DeleteInboxMessageError, DeleteInboxMessageResponse, SendTypingIndicatorData, SendTypingIndicatorError, SendTypingIndicatorResponse, MarkConversationReadData, MarkConversationReadError, MarkConversationReadResponse, AddMessageReactionData, AddMessageReactionError, AddMessageReactionResponse, RemoveMessageReactionData, RemoveMessageReactionError, RemoveMessageReactionResponse, UploadMediaDirectData, UploadMediaDirectError, UploadMediaDirectResponse, 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, GetMessageAttachmentData, GetMessageAttachmentError, GetMessageAttachmentResponse, ListInboxCommentsData, ListInboxCommentsError, ListInboxCommentsResponse, GetInboxPostCommentsData, GetInboxPostCommentsError, GetInboxPostCommentsResponse, ReplyToInboxPostData, ReplyToInboxPostError, ReplyToInboxPostResponse, DeleteInboxCommentData, DeleteInboxCommentError, DeleteInboxCommentResponse, EditInboxCommentData, EditInboxCommentError, EditInboxCommentResponse, SetCommentModerationData, SetCommentModerationError, SetCommentModerationResponse, HideInboxCommentData, HideInboxCommentError, HideInboxCommentResponse, UnhideInboxCommentData, UnhideInboxCommentError, UnhideInboxCommentResponse, LikeInboxCommentData, LikeInboxCommentError, LikeInboxCommentResponse, UnlikeInboxCommentData, UnlikeInboxCommentError, UnlikeInboxCommentResponse, LikePostData, LikePostError, LikePostResponse, UnlikePostData, UnlikePostError, UnlikePostResponse, SendPrivateReplyToCommentData, SendPrivateReplyToCommentError, SendPrivateReplyToCommentResponse, RetweetPostData, RetweetPostError, RetweetPostResponse, UndoRetweetData, UndoRetweetError, UndoRetweetResponse, BookmarkPostData, BookmarkPostError, BookmarkPostResponse, RemoveBookmarkData, RemoveBookmarkError, RemoveBookmarkResponse, FollowUserData, FollowUserError, FollowUserResponse, UnfollowUserData, UnfollowUserError, UnfollowUserResponse, SearchTweetsData, SearchTweetsError, SearchTweetsResponse, GetTweetData, GetTweetError, GetTweetResponse, ListInboxMentionsData, ListInboxMentionsError, ListInboxMentionsResponse, ReplyToMentionData, ReplyToMentionError, ReplyToMentionResponse, ListInboxReviewsData, ListInboxReviewsError, ListInboxReviewsResponse, ReplyToInboxReviewData, ReplyToInboxReviewError, ReplyToInboxReviewResponse, DeleteInboxReviewReplyData, DeleteInboxReviewReplyError, DeleteInboxReviewReplyResponse, GetWhatsAppTemplatesData, GetWhatsAppTemplatesError, GetWhatsAppTemplatesResponse, CreateWhatsAppTemplateData, CreateWhatsAppTemplateError, CreateWhatsAppTemplateResponse, GetWhatsAppTemplateData, GetWhatsAppTemplateError, GetWhatsAppTemplateResponse, UpdateWhatsAppTemplateData, UpdateWhatsAppTemplateError, UpdateWhatsAppTemplateResponse, DeleteWhatsAppTemplateData, DeleteWhatsAppTemplateError, DeleteWhatsAppTemplateResponse, GetWhatsAppTemplateByIdData, GetWhatsAppTemplateByIdError, GetWhatsAppTemplateByIdResponse, UpdateWhatsAppTemplateByIdData, UpdateWhatsAppTemplateByIdError, UpdateWhatsAppTemplateByIdResponse, DeleteWhatsAppTemplateByIdData, DeleteWhatsAppTemplateByIdError, DeleteWhatsAppTemplateByIdResponse, GetWhatsAppCallingConfigData, GetWhatsAppCallingConfigError, GetWhatsAppCallingConfigResponse, EnableWhatsAppCallingLegacyData, EnableWhatsAppCallingLegacyError, EnableWhatsAppCallingLegacyResponse, UpdateWhatsAppCallingLegacyData, UpdateWhatsAppCallingLegacyError, UpdateWhatsAppCallingLegacyResponse, DisableWhatsAppCallingLegacyData, DisableWhatsAppCallingLegacyError, DisableWhatsAppCallingLegacyResponse, GetWhatsAppCallPermissionsData, GetWhatsAppCallPermissionsError, GetWhatsAppCallPermissionsResponse, InitiateWhatsAppCallData, InitiateWhatsAppCallError, InitiateWhatsAppCallResponse, ListWhatsAppCallsData, ListWhatsAppCallsError, ListWhatsAppCallsResponse, GetWhatsAppCallData, GetWhatsAppCallError, GetWhatsAppCallResponse, GetWhatsAppCallRecordingData, GetWhatsAppCallRecordingError, GetWhatsAppCallRecordingResponse, GetWhatsAppCallEstimateData, GetWhatsAppCallEstimateError, GetWhatsAppCallEstimateResponse, ListCallsData, ListCallsError, ListCallsResponse, GetCallData, GetCallError, GetCallResponse, GetCallRecordingData, GetCallRecordingError, GetCallRecordingResponse, CreateVoiceCallData, CreateVoiceCallError, CreateVoiceCallResponse, ListVoiceCallsData, ListVoiceCallsError, ListVoiceCallsResponse, GetVoiceCallData, GetVoiceCallError, GetVoiceCallResponse, EndVoiceCallData, EndVoiceCallError, EndVoiceCallResponse, GetVoiceCallRecordingData, GetVoiceCallRecordingError, GetVoiceCallRecordingResponse, TransferVoiceCallData, TransferVoiceCallError, TransferVoiceCallResponse, GetVoiceCallEstimateData, GetVoiceCallEstimateError, GetVoiceCallEstimateResponse, CreateVoiceWebSessionError, CreateVoiceWebSessionResponse, DialVoiceWebCallData, DialVoiceWebCallError, DialVoiceWebCallResponse, SendSmsData, SendSmsError, SendSmsResponse, LookupSmsNumberData, LookupSmsNumberError, LookupSmsNumberResponse, ListSmsOptOutsData, ListSmsOptOutsError, ListSmsOptOutsResponse, CreateSmsSenderIdData, CreateSmsSenderIdError, CreateSmsSenderIdResponse, ListSmsSenderIdsError, ListSmsSenderIdsResponse, RequestSmsSenderIdLimitIncreaseData, RequestSmsSenderIdLimitIncreaseError, RequestSmsSenderIdLimitIncreaseResponse, DeleteSmsSenderIdData, DeleteSmsSenderIdError, DeleteSmsSenderIdResponse, StartSmsRegistrationData, StartSmsRegistrationError, StartSmsRegistrationResponse, ListSmsRegistrationsData, ListSmsRegistrationsError, ListSmsRegistrationsResponse, PreflightSmsRegistrationData, PreflightSmsRegistrationError, PreflightSmsRegistrationResponse, DeactivateSmsRegistrationData, DeactivateSmsRegistrationError, DeactivateSmsRegistrationResponse, GetSmsRegistrationData, GetSmsRegistrationError, GetSmsRegistrationResponse, VerifySmsRegistrationOtpData, VerifySmsRegistrationOtpError, VerifySmsRegistrationOtpResponse, ResendSmsRegistrationOtpData, ResendSmsRegistrationOtpError, ResendSmsRegistrationOtpResponse, AppealSmsRegistrationData, AppealSmsRegistrationError, AppealSmsRegistrationResponse, RespondToSmsRegistrationReviewData, RespondToSmsRegistrationReviewError, RespondToSmsRegistrationReviewResponse, UploadSmsOptInProofFileData, UploadSmsOptInProofFileError, UploadSmsOptInProofFileResponse, UploadSmsOptInProofData, UploadSmsOptInProofError, UploadSmsOptInProofResponse, ShareSmsRegistrationData, ShareSmsRegistrationError, ShareSmsRegistrationResponse, GetWhatsAppLibraryTemplateData, GetWhatsAppLibraryTemplateError, GetWhatsAppLibraryTemplateResponse, GetWhatsAppBusinessProfileData, GetWhatsAppBusinessProfileError, GetWhatsAppBusinessProfileResponse, UpdateWhatsAppBusinessProfileData, UpdateWhatsAppBusinessProfileError, UpdateWhatsAppBusinessProfileResponse, UploadWhatsAppProfilePhotoData, UploadWhatsAppProfilePhotoError, UploadWhatsAppProfilePhotoResponse, GetWhatsAppDisplayNameData, GetWhatsAppDisplayNameError, GetWhatsAppDisplayNameResponse, UpdateWhatsAppDisplayNameData, UpdateWhatsAppDisplayNameError, UpdateWhatsAppDisplayNameResponse, GetWhatsappBusinessUsernameData, GetWhatsappBusinessUsernameError, GetWhatsappBusinessUsernameResponse, SetWhatsappBusinessUsernameData, SetWhatsappBusinessUsernameError, SetWhatsappBusinessUsernameResponse, DeleteWhatsappBusinessUsernameData, DeleteWhatsappBusinessUsernameError, DeleteWhatsappBusinessUsernameResponse, GetWhatsappBusinessUsernameSuggestionsData, GetWhatsappBusinessUsernameSuggestionsError, GetWhatsappBusinessUsernameSuggestionsResponse, GetWhatsAppNumberInfoData, GetWhatsAppNumberInfoError, GetWhatsAppNumberInfoResponse, GetWhatsAppBlockStatusData, GetWhatsAppBlockStatusError, GetWhatsAppBlockStatusResponse, GetWhatsAppBlockedUsersData, GetWhatsAppBlockedUsersError, GetWhatsAppBlockedUsersResponse, BlockWhatsAppUsersData, BlockWhatsAppUsersError, BlockWhatsAppUsersResponse, UnblockWhatsAppUsersData, UnblockWhatsAppUsersError, UnblockWhatsAppUsersResponse, ListWhatsAppAccountEventsData, ListWhatsAppAccountEventsError, ListWhatsAppAccountEventsResponse, GetWhatsAppDatasetData, GetWhatsAppDatasetError, GetWhatsAppDatasetResponse, CreateWhatsAppDatasetData, CreateWhatsAppDatasetError, CreateWhatsAppDatasetResponse, ListPhoneNumbersData, ListPhoneNumbersError, ListPhoneNumbersResponse, GetPhoneNumberData, GetPhoneNumberError, GetPhoneNumberResponse, ReleasePhoneNumberData, ReleasePhoneNumberError, ReleasePhoneNumberResponse, PurchasePhoneNumberData, PurchasePhoneNumberError, PurchasePhoneNumberResponse, ListPhoneNumberCountriesError, ListPhoneNumberCountriesResponse, SearchAvailablePhoneNumbersData, SearchAvailablePhoneNumbersError, SearchAvailablePhoneNumbersResponse, CheckPhoneNumberAvailabilityData, CheckPhoneNumberAvailabilityError, CheckPhoneNumberAvailabilityResponse, GetWhatsAppPhoneNumbersData, GetWhatsAppPhoneNumbersError, GetWhatsAppPhoneNumbersResponse, PurchaseWhatsAppPhoneNumberData, PurchaseWhatsAppPhoneNumberError, PurchaseWhatsAppPhoneNumberResponse, ListWhatsAppNumberCountriesError, ListWhatsAppNumberCountriesResponse, SearchAvailableWhatsAppNumbersData, SearchAvailableWhatsAppNumbersError, SearchAvailableWhatsAppNumbersResponse, CheckWhatsAppNumberAvailabilityData, CheckWhatsAppNumberAvailabilityError, CheckWhatsAppNumberAvailabilityResponse, GetPhoneNumberKycFormData, GetPhoneNumberKycFormError, GetPhoneNumberKycFormResponse, SubmitPhoneNumberKycData, SubmitPhoneNumberKycError, SubmitPhoneNumberKycResponse, ViewPhoneNumberKycDocumentData, ViewPhoneNumberKycDocumentError, ViewPhoneNumberKycDocumentResponse, UploadPhoneNumberKycDocumentData, UploadPhoneNumberKycDocumentError, UploadPhoneNumberKycDocumentResponse, ValidatePhoneNumberKycAddressData, ValidatePhoneNumberKycAddressError, ValidatePhoneNumberKycAddressResponse, CreatePhoneNumberKycLinkData, CreatePhoneNumberKycLinkError, CreatePhoneNumberKycLinkResponse, CreatePhoneNumberPortInData, CreatePhoneNumberPortInError, CreatePhoneNumberPortInResponse, ListPhoneNumberPortInsError, ListPhoneNumberPortInsResponse, CheckPhoneNumberPortabilityData, CheckPhoneNumberPortabilityError, CheckPhoneNumberPortabilityResponse, UploadPhoneNumberPortInDocumentData, UploadPhoneNumberPortInDocumentError, UploadPhoneNumberPortInDocumentResponse, GetPhoneNumberPortInRequirementsData, GetPhoneNumberPortInRequirementsError, GetPhoneNumberPortInRequirementsResponse, GetPhoneNumberPortInOrderRequirementsData, GetPhoneNumberPortInOrderRequirementsError, GetPhoneNumberPortInOrderRequirementsResponse, CancelPhoneNumberPortInData, CancelPhoneNumberPortInError, CancelPhoneNumberPortInResponse, ReviewPhoneNumberKycPacketData, ReviewPhoneNumberKycPacketError, ReviewPhoneNumberKycPacketResponse, GetPhoneNumberRemediationData, GetPhoneNumberRemediationError, GetPhoneNumberRemediationResponse, RemediatePhoneNumberData, RemediatePhoneNumberError, RemediatePhoneNumberResponse, ReplyToPhoneNumberReviewerData, ReplyToPhoneNumberReviewerError, ReplyToPhoneNumberReviewerResponse, RespondToPhoneNumberReviewerData, RespondToPhoneNumberReviewerError, RespondToPhoneNumberReviewerResponse, GetWhatsAppNumberKycFormData, GetWhatsAppNumberKycFormError, GetWhatsAppNumberKycFormResponse, SubmitWhatsAppNumberKycData, SubmitWhatsAppNumberKycError, SubmitWhatsAppNumberKycResponse, UploadWhatsAppNumberKycDocumentData, UploadWhatsAppNumberKycDocumentError, UploadWhatsAppNumberKycDocumentResponse, ValidateWhatsAppNumberKycAddressData, ValidateWhatsAppNumberKycAddressError, ValidateWhatsAppNumberKycAddressResponse, CreateWhatsAppNumberKycLinkData, CreateWhatsAppNumberKycLinkError, CreateWhatsAppNumberKycLinkResponse, MoveWhatsAppNumberToProfileData, MoveWhatsAppNumberToProfileError, MoveWhatsAppNumberToProfileResponse, GetWhatsAppNumberRemediationData, GetWhatsAppNumberRemediationError, GetWhatsAppNumberRemediationResponse, RemediateWhatsAppNumberData, RemediateWhatsAppNumberError, RemediateWhatsAppNumberResponse, EnableVoiceOnNumberData, EnableVoiceOnNumberError, EnableVoiceOnNumberResponse, DisableVoiceOnNumberData, DisableVoiceOnNumberError, DisableVoiceOnNumberResponse, CreatePhoneNumberStockWatchData, CreatePhoneNumberStockWatchError, CreatePhoneNumberStockWatchResponse, ListPhoneNumberStockWatchesError, ListPhoneNumberStockWatchesResponse, DeletePhoneNumberStockWatchData, DeletePhoneNumberStockWatchError, DeletePhoneNumberStockWatchResponse, CreateSipTrunkData, CreateSipTrunkError, CreateSipTrunkResponse, ListSipTrunksError, ListSipTrunksResponse, GetSipTrunkData, GetSipTrunkError, GetSipTrunkResponse, DeleteSipTrunkData, DeleteSipTrunkError, DeleteSipTrunkResponse, RotateSipTrunkCredentialsData, RotateSipTrunkCredentialsError, RotateSipTrunkCredentialsResponse, AttachNumberToSipTrunkData, AttachNumberToSipTrunkError, AttachNumberToSipTrunkResponse, DetachNumberFromSipTrunkData, DetachNumberFromSipTrunkError, DetachNumberFromSipTrunkResponse, EnableSmsOnNumberData, EnableSmsOnNumberError, EnableSmsOnNumberResponse, DisableSmsOnNumberData, DisableSmsOnNumberError, DisableSmsOnNumberResponse, ReuseSmsRegistrationForNumberData, ReuseSmsRegistrationForNumberError, ReuseSmsRegistrationForNumberResponse, GetWhatsAppCallingData, GetWhatsAppCallingError, GetWhatsAppCallingResponse, EnableWhatsAppCallingData, EnableWhatsAppCallingError, EnableWhatsAppCallingResponse, UpdateWhatsAppCallingData, UpdateWhatsAppCallingError, UpdateWhatsAppCallingResponse, DisableWhatsAppCallingData, DisableWhatsAppCallingError, DisableWhatsAppCallingResponse, StartWhatsAppCallerIdVerificationData, StartWhatsAppCallerIdVerificationError, StartWhatsAppCallerIdVerificationResponse, VerifyWhatsAppCallerIdData, VerifyWhatsAppCallerIdError, VerifyWhatsAppCallerIdResponse, GetWhatsAppPhoneNumberData, GetWhatsAppPhoneNumberError, GetWhatsAppPhoneNumberResponse, ReleaseWhatsAppPhoneNumberData, ReleaseWhatsAppPhoneNumberError, ReleaseWhatsAppPhoneNumberResponse, ListWhatsAppSandboxSessionsError, ListWhatsAppSandboxSessionsResponse, CreateWhatsAppSandboxSessionData, CreateWhatsAppSandboxSessionError, CreateWhatsAppSandboxSessionResponse, DeleteWhatsAppSandboxSessionData, DeleteWhatsAppSandboxSessionError, DeleteWhatsAppSandboxSessionResponse, ListWhatsAppGroupChatsData, ListWhatsAppGroupChatsError, ListWhatsAppGroupChatsResponse, CreateWhatsAppGroupChatData, CreateWhatsAppGroupChatError, CreateWhatsAppGroupChatResponse, GetWhatsAppGroupChatData, GetWhatsAppGroupChatError, GetWhatsAppGroupChatResponse, UpdateWhatsAppGroupChatData, UpdateWhatsAppGroupChatError, UpdateWhatsAppGroupChatResponse, DeleteWhatsAppGroupChatData, DeleteWhatsAppGroupChatError, DeleteWhatsAppGroupChatResponse, AddWhatsAppGroupParticipantsData, AddWhatsAppGroupParticipantsError, AddWhatsAppGroupParticipantsResponse, RemoveWhatsAppGroupParticipantsData, RemoveWhatsAppGroupParticipantsError, RemoveWhatsAppGroupParticipantsResponse, CreateWhatsAppGroupInviteLinkData, CreateWhatsAppGroupInviteLinkError, CreateWhatsAppGroupInviteLinkResponse, ListWhatsAppGroupJoinRequestsData, ListWhatsAppGroupJoinRequestsError, ListWhatsAppGroupJoinRequestsResponse, ApproveWhatsAppGroupJoinRequestsData, ApproveWhatsAppGroupJoinRequestsError, ApproveWhatsAppGroupJoinRequestsResponse, RejectWhatsAppGroupJoinRequestsData, RejectWhatsAppGroupJoinRequestsError, RejectWhatsAppGroupJoinRequestsResponse, ListWhatsAppFlowsData, ListWhatsAppFlowsError, ListWhatsAppFlowsResponse, CreateWhatsAppFlowData, CreateWhatsAppFlowError, CreateWhatsAppFlowResponse, GetWhatsAppFlowData, GetWhatsAppFlowError, GetWhatsAppFlowResponse, UpdateWhatsAppFlowData, UpdateWhatsAppFlowError, UpdateWhatsAppFlowResponse, DeleteWhatsAppFlowData, DeleteWhatsAppFlowError, DeleteWhatsAppFlowResponse, GetWhatsAppFlowJsonData, GetWhatsAppFlowJsonError, GetWhatsAppFlowJsonResponse, UploadWhatsAppFlowJsonData, UploadWhatsAppFlowJsonError, UploadWhatsAppFlowJsonResponse, GetWhatsAppFlowPreviewData, GetWhatsAppFlowPreviewError, GetWhatsAppFlowPreviewResponse, ListWhatsAppFlowVersionsData, ListWhatsAppFlowVersionsError, ListWhatsAppFlowVersionsResponse, PublishWhatsAppFlowData, PublishWhatsAppFlowError, PublishWhatsAppFlowResponse, DeprecateWhatsAppFlowData, DeprecateWhatsAppFlowError, DeprecateWhatsAppFlowResponse, GetWhatsAppFlowsEncryptionKeyData, GetWhatsAppFlowsEncryptionKeyError, GetWhatsAppFlowsEncryptionKeyResponse, SetWhatsAppFlowsEncryptionKeyData, SetWhatsAppFlowsEncryptionKeyError, SetWhatsAppFlowsEncryptionKeyResponse, SendWhatsAppFlowMessageData, SendWhatsAppFlowMessageError, SendWhatsAppFlowMessageResponse, ListWhatsAppFlowResponsesData, ListWhatsAppFlowResponsesError, ListWhatsAppFlowResponsesResponse, ListContactsData, ListContactsError, ListContactsResponse, CreateContactData, CreateContactError, CreateContactResponse, GetContactData, GetContactError, GetContactResponse, UpdateContactData, UpdateContactError, UpdateContactResponse, DeleteContactData, DeleteContactError, DeleteContactResponse, GetContactChannelsData, GetContactChannelsError, GetContactChannelsResponse, BulkCreateContactsData, BulkCreateContactsError, BulkCreateContactsResponse, SetContactFieldValueData, SetContactFieldValueError, SetContactFieldValueResponse, ClearContactFieldValueData, ClearContactFieldValueError, ClearContactFieldValueResponse, ListCustomFieldsData, ListCustomFieldsError, ListCustomFieldsResponse, CreateCustomFieldData, CreateCustomFieldError, CreateCustomFieldResponse, UpdateCustomFieldData, UpdateCustomFieldError, UpdateCustomFieldResponse, DeleteCustomFieldData, DeleteCustomFieldError, DeleteCustomFieldResponse, ListBroadcastsData, ListBroadcastsError, ListBroadcastsResponse, CreateBroadcastData, CreateBroadcastError, CreateBroadcastResponse, GetBroadcastData, GetBroadcastError, GetBroadcastResponse, UpdateBroadcastData, UpdateBroadcastError, UpdateBroadcastResponse, DeleteBroadcastData, DeleteBroadcastError, DeleteBroadcastResponse, SendBroadcastData, SendBroadcastError, SendBroadcastResponse, ScheduleBroadcastData, ScheduleBroadcastError, ScheduleBroadcastResponse, CancelBroadcastData, CancelBroadcastError, CancelBroadcastResponse, ListBroadcastRecipientsData, ListBroadcastRecipientsError, ListBroadcastRecipientsResponse, AddBroadcastRecipientsData, AddBroadcastRecipientsError, AddBroadcastRecipientsResponse, ListWorkflowsData, ListWorkflowsError, ListWorkflowsResponse, CreateWorkflowData, CreateWorkflowError, CreateWorkflowResponse, GetWorkflowData, GetWorkflowError, GetWorkflowResponse, UpdateWorkflowData, UpdateWorkflowError, UpdateWorkflowResponse, DeleteWorkflowData, DeleteWorkflowError, DeleteWorkflowResponse, ActivateWorkflowData, ActivateWorkflowError, ActivateWorkflowResponse, PauseWorkflowData, PauseWorkflowError, PauseWorkflowResponse, ListWorkflowExecutionsData, ListWorkflowExecutionsError, ListWorkflowExecutionsResponse, TriggerWorkflowData, TriggerWorkflowError, TriggerWorkflowResponse, ListWorkflowExecutionEventsData, ListWorkflowExecutionEventsError, ListWorkflowExecutionEventsResponse, DuplicateWorkflowData, DuplicateWorkflowError, DuplicateWorkflowResponse, ListWorkflowVersionsData, ListWorkflowVersionsError, ListWorkflowVersionsResponse, GetWorkflowVersionData, GetWorkflowVersionError, GetWorkflowVersionResponse, RestoreWorkflowVersionData, RestoreWorkflowVersionError, RestoreWorkflowVersionResponse, ListSequencesData, ListSequencesError, ListSequencesResponse, CreateSequenceData, CreateSequenceError, CreateSequenceResponse, GetSequenceData, GetSequenceError, GetSequenceResponse, UpdateSequenceData, UpdateSequenceError, UpdateSequenceResponse, DeleteSequenceData, DeleteSequenceError, DeleteSequenceResponse, ActivateSequenceData, ActivateSequenceError, ActivateSequenceResponse, PauseSequenceData, PauseSequenceError, PauseSequenceResponse, EnrollContactsData, EnrollContactsError, EnrollContactsResponse, UnenrollContactData, UnenrollContactError, UnenrollContactResponse, ListSequenceEnrollmentsData, ListSequenceEnrollmentsError, ListSequenceEnrollmentsResponse, ListCommentAutomationsData, ListCommentAutomationsError, ListCommentAutomationsResponse, CreateCommentAutomationData, CreateCommentAutomationError, CreateCommentAutomationResponse, GetCommentAutomationData, GetCommentAutomationError, GetCommentAutomationResponse, UpdateCommentAutomationData, UpdateCommentAutomationError, UpdateCommentAutomationResponse, DeleteCommentAutomationData, DeleteCommentAutomationError, DeleteCommentAutomationResponse, ListCommentAutomationLogsData, ListCommentAutomationLogsError, ListCommentAutomationLogsResponse, ListAdsData, ListAdsError, ListAdsResponse, GetAdsSearchTermsData, GetAdsSearchTermsError, GetAdsSearchTermsResponse, ListBidStrategiesData, ListBidStrategiesError, ListBidStrategiesResponse, CreateBidStrategyData, CreateBidStrategyError, CreateBidStrategyResponse, UpdateBidStrategyData, UpdateBidStrategyError, UpdateBidStrategyResponse, ListLocalServicesLeadsData, ListLocalServicesLeadsError, ListLocalServicesLeadsResponse, ListLocalServicesLeadConversationsData, ListLocalServicesLeadConversationsError, ListLocalServicesLeadConversationsResponse, ListAdKeywordsData, ListAdKeywordsError, ListAdKeywordsResponse, AddAdKeywordsData, AddAdKeywordsError, AddAdKeywordsResponse, UpdateAdKeywordData, UpdateAdKeywordError, UpdateAdKeywordResponse, RemoveAdKeywordData, RemoveAdKeywordError, RemoveAdKeywordResponse, ListAdCampaignsData, ListAdCampaignsError, ListAdCampaignsResponse, CreateAdCampaignData, CreateAdCampaignError, CreateAdCampaignResponse, UpdateAdCampaignStatusData, UpdateAdCampaignStatusError, UpdateAdCampaignStatusResponse, GetCampaignBiddingData, GetCampaignBiddingError, GetCampaignBiddingResponse, UpdateAdCampaignData, UpdateAdCampaignError, UpdateAdCampaignResponse, DeleteAdCampaignData, DeleteAdCampaignError, DeleteAdCampaignResponse, ListCampaignNegativeKeywordsData, ListCampaignNegativeKeywordsError, ListCampaignNegativeKeywordsResponse, ReplaceCampaignNegativeKeywordsData, ReplaceCampaignNegativeKeywordsError, ReplaceCampaignNegativeKeywordsResponse, BulkUpdateAdCampaignStatusData, BulkUpdateAdCampaignStatusError, BulkUpdateAdCampaignStatusResponse, DuplicateAdCampaignData, DuplicateAdCampaignError, DuplicateAdCampaignResponse, GetCampaignTargetingData, GetCampaignTargetingError, GetCampaignTargetingResponse, UpdateCampaignTargetingData, UpdateCampaignTargetingError, UpdateCampaignTargetingResponse, ListAdSetsData, ListAdSetsError, ListAdSetsResponse, CreateAdSetData, CreateAdSetError, CreateAdSetResponse, DuplicateAdSetData, DuplicateAdSetError, DuplicateAdSetResponse, DuplicateAdData, DuplicateAdError, DuplicateAdResponse, GetAdSetDetailsData, GetAdSetDetailsError, GetAdSetDetailsResponse, UpdateAdSetData, UpdateAdSetError, UpdateAdSetResponse, DeleteAdSetData, DeleteAdSetError, DeleteAdSetResponse, UpdateAdSetStatusData, UpdateAdSetStatusError, UpdateAdSetStatusResponse, GetAdTreeData, GetAdTreeError, GetAdTreeResponse, GetAdsTimelineData, GetAdsTimelineError, GetAdsTimelineResponse, GetAdData, GetAdError, GetAdResponse, UpdateAdData, UpdateAdError, UpdateAdResponse, DeleteAdData, DeleteAdError, DeleteAdResponse, UpdateAdStatusData, UpdateAdStatusError, UpdateAdStatusResponse, AttachCampaignAssetsData, AttachCampaignAssetsError, AttachCampaignAssetsResponse, GetCampaignAnalyticsData, GetCampaignAnalyticsError, GetCampaignAnalyticsResponse, GenerateAdPreviewsData, GenerateAdPreviewsError, GenerateAdPreviewsResponse, GetAdPreviewsData, GetAdPreviewsError, GetAdPreviewsResponse, GetAdMediaData, GetAdMediaError, GetAdMediaResponse, GenerateKeywordIdeasData, GenerateKeywordIdeasError, GenerateKeywordIdeasResponse, GenerateKeywordHistoricalMetricsData, GenerateKeywordHistoricalMetricsError, GenerateKeywordHistoricalMetricsResponse, QueryAdInsightsData, QueryAdInsightsError, QueryAdInsightsResponse, CreateAdInsightsReportData, CreateAdInsightsReportError, CreateAdInsightsReportResponse, GetAdInsightsReportData, GetAdInsightsReportError, GetAdInsightsReportResponse, GetAdAnalyticsData, GetAdAnalyticsError, GetAdAnalyticsResponse, GetAdTrackingTagsData, GetAdTrackingTagsError, GetAdTrackingTagsResponse, UpdateAdTrackingTagsData, UpdateAdTrackingTagsError, UpdateAdTrackingTagsResponse, GetAdCommentsData, GetAdCommentsError, GetAdCommentsResponse, ListAdsBusinessCentersData, ListAdsBusinessCentersError, ListAdsBusinessCentersResponse, GetAdsActivityLogData, GetAdsActivityLogError, GetAdsActivityLogResponse, CreateRfPredictionData, CreateRfPredictionError, CreateRfPredictionResponse, GetRfPredictionData, GetRfPredictionError, GetRfPredictionResponse, CancelRfReservationData, CancelRfReservationError, CancelRfReservationResponse, ReserveRfPredictionData, ReserveRfPredictionError, ReserveRfPredictionResponse, ListAdStudiesData, ListAdStudiesError, ListAdStudiesResponse, ListMetaBusinessesData, ListMetaBusinessesError, ListMetaBusinessesResponse, ListAdLabelsData, ListAdLabelsError, ListAdLabelsResponse, ListHighDemandPeriodsData, ListHighDemandPeriodsError, ListHighDemandPeriodsResponse, CreateHighDemandPeriodData, CreateHighDemandPeriodError, CreateHighDemandPeriodResponse, ListAdCreativesData, ListAdCreativesError, ListAdCreativesResponse, CreateAdCreativeData, CreateAdCreativeError, CreateAdCreativeResponse, GetAdCreativeData, GetAdCreativeError, GetAdCreativeResponse, UpdateAdCreativeData, UpdateAdCreativeError, UpdateAdCreativeResponse, DeleteAdCreativeData, DeleteAdCreativeError, DeleteAdCreativeResponse, ListValueRuleSetsData, ListValueRuleSetsError, ListValueRuleSetsResponse, CreateValueRuleSetData, CreateValueRuleSetError, CreateValueRuleSetResponse, GetValueRuleSetData, GetValueRuleSetError, GetValueRuleSetResponse, UpdateValueRuleSetData, UpdateValueRuleSetError, UpdateValueRuleSetResponse, DeleteValueRuleSetData, DeleteValueRuleSetError, DeleteValueRuleSetResponse, ListAccountCalloutsData, ListAccountCalloutsError, ListAccountCalloutsResponse, AddAccountCalloutsData, AddAccountCalloutsError, AddAccountCalloutsResponse, RemoveAccountCalloutData, RemoveAccountCalloutError, RemoveAccountCalloutResponse, GetAdAccountFinanceData, GetAdAccountFinanceError, GetAdAccountFinanceResponse, ListAdAccountsData, ListAdAccountsError, ListAdAccountsResponse, UpdateAdAccountData, UpdateAdAccountError, UpdateAdAccountResponse, GetDsaDefaultsData, GetDsaDefaultsError, GetDsaDefaultsResponse, GetDsaRecommendationsData, GetDsaRecommendationsError, GetDsaRecommendationsResponse, BoostPostData, BoostPostError, BoostPostResponse, CreateStandaloneAdData, CreateStandaloneAdError, CreateStandaloneAdResponse, ListLeadsData, ListLeadsError, ListLeadsResponse, ListLeadFormsData, ListLeadFormsError, ListLeadFormsResponse, CreateLeadFormData, CreateLeadFormError, CreateLeadFormResponse, GetLeadFormData, GetLeadFormError, GetLeadFormResponse, ArchiveLeadFormData, ArchiveLeadFormError, ArchiveLeadFormResponse, ListFormLeadsData, ListFormLeadsError, ListFormLeadsResponse, CreateTestLeadData, CreateTestLeadError, CreateTestLeadResponse, UploadAdImageData, UploadAdImageError, UploadAdImageResponse, ListAdImagesData, ListAdImagesError, ListAdImagesResponse, UploadAdVideoData, UploadAdVideoError, UploadAdVideoResponse, ListAdVideosData, ListAdVideosError, ListAdVideosResponse, DeleteAdVideoData, DeleteAdVideoError, DeleteAdVideoResponse, SearchAdInterestsData, SearchAdInterestsError, SearchAdInterestsResponse, SearchAdTargetingData, SearchAdTargetingError, SearchAdTargetingResponse, SearchAdLibraryData, SearchAdLibraryError, SearchAdLibraryResponse, EstimateAdReachData, EstimateAdReachError, EstimateAdReachResponse, GetLinkedInBidPricingData, GetLinkedInBidPricingError, GetLinkedInBidPricingResponse, GetLinkedInSupplyForecastData, GetLinkedInSupplyForecastError, GetLinkedInSupplyForecastResponse, ListAdCatalogsData, ListAdCatalogsError, ListAdCatalogsResponse, ListAdCatalogProductSetsData, ListAdCatalogProductSetsError, ListAdCatalogProductSetsResponse, ListAdAudiencesData, ListAdAudiencesError, ListAdAudiencesResponse, CreateAdAudienceData, CreateAdAudienceError, CreateAdAudienceResponse, GetAdAudienceData, GetAdAudienceError, GetAdAudienceResponse, UpdateAdAudienceData, UpdateAdAudienceError, UpdateAdAudienceResponse, DeleteAdAudienceData, DeleteAdAudienceError, DeleteAdAudienceResponse, AddUsersToAdAudienceData, AddUsersToAdAudienceError, AddUsersToAdAudienceResponse, ReplaceAdAudienceCompaniesData, ReplaceAdAudienceCompaniesError, ReplaceAdAudienceCompaniesResponse, GetConversionsQualityData, GetConversionsQualityError, GetConversionsQualityResponse, SendConversionsData, SendConversionsError, SendConversionsResponse, AdjustConversionsData, AdjustConversionsError, AdjustConversionsResponse, ListConversionActionsData, ListConversionActionsError, ListConversionActionsResponse, CreateConversionActionData, CreateConversionActionError, CreateConversionActionResponse, ListConversionDestinationsData, ListConversionDestinationsError, ListConversionDestinationsResponse, CreateConversionDestinationData, CreateConversionDestinationError, CreateConversionDestinationResponse, GetConversionDestinationData, GetConversionDestinationError, GetConversionDestinationResponse, UpdateConversionDestinationData, UpdateConversionDestinationError, UpdateConversionDestinationResponse, DeleteConversionDestinationData, DeleteConversionDestinationError, DeleteConversionDestinationResponse, ListConversionAssociationsData, ListConversionAssociationsError, ListConversionAssociationsResponse, AddConversionAssociationsData, AddConversionAssociationsError, AddConversionAssociationsResponse, RemoveConversionAssociationsData, RemoveConversionAssociationsError, RemoveConversionAssociationsResponse, GetConversionMetricsData, GetConversionMetricsError, GetConversionMetricsResponse, ListWhatsAppConversionsData, ListWhatsAppConversionsError, ListWhatsAppConversionsResponse, SendWhatsAppConversionData, SendWhatsAppConversionError, SendWhatsAppConversionResponse, CreateMessagingAdData, CreateMessagingAdError, CreateMessagingAdResponse, CreateCallAdData, CreateCallAdError, CreateCallAdResponse, CreateCtwaAdData, CreateCtwaAdError, CreateCtwaAdResponse, ListCustomConversionsData, ListCustomConversionsError, ListCustomConversionsResponse, CreateCustomConversionData, CreateCustomConversionError, CreateCustomConversionResponse, ListTrackingTagsData, ListTrackingTagsError, ListTrackingTagsResponse, CreateTrackingTagData, CreateTrackingTagError, CreateTrackingTagResponse, GetTrackingTagData, GetTrackingTagError, GetTrackingTagResponse, UpdateTrackingTagData, UpdateTrackingTagError, UpdateTrackingTagResponse, ListTrackingTagSharedAccountsData, ListTrackingTagSharedAccountsError, ListTrackingTagSharedAccountsResponse, AddTrackingTagSharedAccountData, AddTrackingTagSharedAccountError, AddTrackingTagSharedAccountResponse, RemoveTrackingTagSharedAccountData, RemoveTrackingTagSharedAccountError, RemoveTrackingTagSharedAccountResponse, GetTrackingTagStatsData, GetTrackingTagStatsError, GetTrackingTagStatsResponse, ListBlogsData, ListBlogsError, ListBlogsResponse, CreateBlogData, CreateBlogError, CreateBlogResponse, GetBlogData, GetBlogError, GetBlogResponse, UpdateBlogData, UpdateBlogError, UpdateBlogResponse, DeleteBlogData, DeleteBlogError, DeleteBlogResponse, ListBlogArticlesData, ListBlogArticlesError, ListBlogArticlesResponse, CreateBlogArticleData, CreateBlogArticleError, CreateBlogArticleResponse, GetBlogArticleData, GetBlogArticleError, GetBlogArticleResponse, UpdateBlogArticleData, UpdateBlogArticleError, UpdateBlogArticleResponse, DeleteBlogArticleData, DeleteBlogArticleError, DeleteBlogArticleResponse, CreateVerificationData, CreateVerificationError, CreateVerificationResponse, GetVerificationData, GetVerificationError, GetVerificationResponse, CheckVerificationData, CheckVerificationError, CheckVerificationResponse } from './types.gen';
|
|
4
|
+
import type { ValidatePostLengthData, ValidatePostLengthError, ValidatePostLengthResponse, ValidatePostData, ValidatePostError, ValidatePostResponse, ValidateMediaData, ValidateMediaError, ValidateMediaResponse, ValidateSubredditData, ValidateSubredditError, ValidateSubredditResponse, GetAnalyticsData, GetAnalyticsError, GetAnalyticsResponse, GetAnalyticsDeltaData, GetAnalyticsDeltaError, GetAnalyticsDeltaResponse, GetYouTubeChannelInsightsData, GetYouTubeChannelInsightsError, GetYouTubeChannelInsightsResponse, GetLinkedInOrgAggregateAnalyticsData, GetLinkedInOrgAggregateAnalyticsError, GetLinkedInOrgAggregateAnalyticsResponse, GetTikTokAccountInsightsData, GetTikTokAccountInsightsError, GetTikTokAccountInsightsResponse, GetYouTubeDailyViewsData, GetYouTubeDailyViewsError, GetYouTubeDailyViewsResponse, GetYouTubeVideoRetentionData, GetYouTubeVideoRetentionError, GetYouTubeVideoRetentionResponse, GetFacebookPageInsightsData, GetFacebookPageInsightsError, GetFacebookPageInsightsResponse, GetFacebookPostEarningsData, GetFacebookPostEarningsError, GetFacebookPostEarningsResponse, GetInstagramAccountInsightsData, GetInstagramAccountInsightsError, GetInstagramAccountInsightsResponse, GetInstagramFollowerHistoryData, GetInstagramFollowerHistoryError, GetInstagramFollowerHistoryResponse, GetInstagramDemographicsData, GetInstagramDemographicsError, GetInstagramDemographicsResponse, GetYouTubeDemographicsData, GetYouTubeDemographicsError, GetYouTubeDemographicsResponse, GetDailyMetricsData, GetDailyMetricsError, GetDailyMetricsResponse, GetBestTimeToPostData, GetBestTimeToPostError, GetBestTimeToPostResponse, GetContentDecayData, GetContentDecayError, GetContentDecayResponse, GetPostingFrequencyData, GetPostingFrequencyError, GetPostingFrequencyResponse, GetPostTimelineData, GetPostTimelineError, GetPostTimelineResponse, GetGoogleBusinessPerformanceData, GetGoogleBusinessPerformanceError, GetGoogleBusinessPerformanceResponse, GetGoogleBusinessSearchKeywordsData, GetGoogleBusinessSearchKeywordsError, GetGoogleBusinessSearchKeywordsResponse, GetInboxVolumeData, GetInboxVolumeError, GetInboxVolumeResponse, GetInboxHeatmapData, GetInboxHeatmapError, GetInboxHeatmapResponse, GetInboxSourceBreakdownData, GetInboxSourceBreakdownError, GetInboxSourceBreakdownResponse, GetInboxResponseTimeData, GetInboxResponseTimeError, GetInboxResponseTimeResponse, GetInboxTopAccountsData, GetInboxTopAccountsError, GetInboxTopAccountsResponse, ListInboxConversationAnalyticsData, ListInboxConversationAnalyticsError, ListInboxConversationAnalyticsResponse, GetInboxConversationAnalyticsData, GetInboxConversationAnalyticsError, GetInboxConversationAnalyticsResponse, ListAccountGroupsError, ListAccountGroupsResponse, CreateAccountGroupData, CreateAccountGroupError, CreateAccountGroupResponse, UpdateAccountGroupData, UpdateAccountGroupError, UpdateAccountGroupResponse, DeleteAccountGroupData, DeleteAccountGroupError, DeleteAccountGroupResponse, GetMediaPresignedUrlData, GetMediaPresignedUrlError, GetMediaPresignedUrlResponse, SearchRedditData, SearchRedditError, SearchRedditResponse, GetRedditFeedData, GetRedditFeedError, GetRedditFeedResponse, GetBillingError, GetBillingResponse, GetXApiPricingError, GetXApiPricingResponse, GetUsageData, GetUsageError, GetUsageResponse, GetUsageStatsData, GetUsageStatsError, GetUsageStatsResponse, GetCallsUsageData, GetCallsUsageError, GetCallsUsageResponse, GetSmsUsageData, GetSmsUsageError, GetSmsUsageResponse, ListPostsData, ListPostsError, ListPostsResponse, CreatePostData, CreatePostError, CreatePostResponse, SyncExternalPostsData, SyncExternalPostsError, SyncExternalPostsResponse, GetPostData, GetPostError, GetPostResponse, UpdatePostData, UpdatePostError, UpdatePostResponse, DeletePostData, DeletePostError, DeletePostResponse, BulkUploadPostsData, BulkUploadPostsError, BulkUploadPostsResponse, RetryPostData, RetryPostError, RetryPostResponse, UnpublishPostData, UnpublishPostError, UnpublishPostResponse, EditPostData, EditPostError, EditPostResponse, UpdatePostMetadataData, UpdatePostMetadataError, UpdatePostMetadataResponse, 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, MoveAccountToProfileData, MoveAccountToProfileError, MoveAccountToProfileResponse, DeleteAccountData, DeleteAccountError, DeleteAccountResponse, GetAllAccountsHealthData, GetAllAccountsHealthError, GetAllAccountsHealthResponse, RegisterWhatsAppNumberData, RegisterWhatsAppNumberError, RegisterWhatsAppNumberResponse, RequestWhatsAppVerificationCodeData, RequestWhatsAppVerificationCodeError, RequestWhatsAppVerificationCodeResponse, VerifyWhatsAppNumberData, VerifyWhatsAppNumberError, VerifyWhatsAppNumberResponse, GetAccountHealthData, GetAccountHealthError, GetAccountHealthResponse, GetAccountPostsData, GetAccountPostsError, GetAccountPostsResponse, GetInstagramFollowStatusData, GetInstagramFollowStatusError, GetInstagramFollowStatusResponse, GetTikTokCreatorInfoData, GetTikTokCreatorInfoError, GetTikTokCreatorInfoResponse, VerifyCredentialError, VerifyCredentialResponse, ListApiKeysError, ListApiKeysResponse, CreateApiKeyData, CreateApiKeyError, CreateApiKeyResponse, DeleteApiKeyData, DeleteApiKeyError, DeleteApiKeyResponse, ListConnectedAppsError, ListConnectedAppsResponse, RevokeConnectedAppData, RevokeConnectedAppError, RevokeConnectedAppResponse, CreateInviteTokenData, CreateInviteTokenError, CreateInviteTokenResponse, GetConnectUrlData, GetConnectUrlError, GetConnectUrlResponse, HandleOAuthCallbackData, HandleOAuthCallbackError, HandleOAuthCallbackResponse, ConnectAdsData, ConnectAdsError, ConnectAdsResponse, GetShopifyConnectUrlData, GetShopifyConnectUrlError, GetShopifyConnectUrlResponse, ConnectShopifyWithTokenData, ConnectShopifyWithTokenError, ConnectShopifyWithTokenResponse, ConfigureTikTokAdsBrandIdentityData, ConfigureTikTokAdsBrandIdentityError, ConfigureTikTokAdsBrandIdentityResponse, ListFacebookPagesData, ListFacebookPagesError, ListFacebookPagesResponse, SelectFacebookPageData, SelectFacebookPageError, SelectFacebookPageResponse, ListInstagramPagesData, ListInstagramPagesError, ListInstagramPagesResponse, SelectInstagramAccountData, SelectInstagramAccountError, SelectInstagramAccountResponse, ListGoogleBusinessLocationsData, ListGoogleBusinessLocationsError, ListGoogleBusinessLocationsResponse, SelectGoogleBusinessLocationData, SelectGoogleBusinessLocationError, SelectGoogleBusinessLocationResponse, GetGoogleBusinessReviewsData, GetGoogleBusinessReviewsError, GetGoogleBusinessReviewsResponse, GetGoogleBusinessVerificationsData, GetGoogleBusinessVerificationsError, GetGoogleBusinessVerificationsResponse, StartGoogleBusinessVerificationData, StartGoogleBusinessVerificationError, StartGoogleBusinessVerificationResponse, FetchGoogleBusinessVerificationOptionsData, FetchGoogleBusinessVerificationOptionsError, FetchGoogleBusinessVerificationOptionsResponse, CompleteGoogleBusinessVerificationData, CompleteGoogleBusinessVerificationError, CompleteGoogleBusinessVerificationResponse, GetGoogleBusinessFoodMenusData, GetGoogleBusinessFoodMenusError, GetGoogleBusinessFoodMenusResponse, UpdateGoogleBusinessFoodMenusData, UpdateGoogleBusinessFoodMenusError, UpdateGoogleBusinessFoodMenusResponse, GetGoogleBusinessLocationDetailsData, GetGoogleBusinessLocationDetailsError, GetGoogleBusinessLocationDetailsResponse, UpdateGoogleBusinessLocationDetailsData, UpdateGoogleBusinessLocationDetailsError, UpdateGoogleBusinessLocationDetailsResponse, ListGoogleBusinessMediaData, ListGoogleBusinessMediaError, ListGoogleBusinessMediaResponse, CreateGoogleBusinessMediaData, CreateGoogleBusinessMediaError, CreateGoogleBusinessMediaResponse, DeleteGoogleBusinessMediaData, DeleteGoogleBusinessMediaError, DeleteGoogleBusinessMediaResponse, GetGmbAttributeMetadataData, GetGmbAttributeMetadataError, GetGmbAttributeMetadataResponse, GetGoogleBusinessAttributesData, GetGoogleBusinessAttributesError, GetGoogleBusinessAttributesResponse, UpdateGoogleBusinessAttributesData, UpdateGoogleBusinessAttributesError, UpdateGoogleBusinessAttributesResponse, ListGoogleBusinessPlaceActionsData, ListGoogleBusinessPlaceActionsError, ListGoogleBusinessPlaceActionsResponse, CreateGoogleBusinessPlaceActionData, CreateGoogleBusinessPlaceActionError, CreateGoogleBusinessPlaceActionResponse, DeleteGoogleBusinessPlaceActionData, DeleteGoogleBusinessPlaceActionError, DeleteGoogleBusinessPlaceActionResponse, UpdateGoogleBusinessPlaceActionData, UpdateGoogleBusinessPlaceActionError, UpdateGoogleBusinessPlaceActionResponse, GetGoogleBusinessServicesData, GetGoogleBusinessServicesError, GetGoogleBusinessServicesResponse, UpdateGoogleBusinessServicesData, UpdateGoogleBusinessServicesError, UpdateGoogleBusinessServicesResponse, BatchGetGoogleBusinessReviewsData, BatchGetGoogleBusinessReviewsError, BatchGetGoogleBusinessReviewsResponse, GetGoogleBusinessReviewData, GetGoogleBusinessReviewError, GetGoogleBusinessReviewResponse, ReplyToGoogleBusinessReviewData, ReplyToGoogleBusinessReviewError, ReplyToGoogleBusinessReviewResponse, DeleteGoogleBusinessReviewReplyData, DeleteGoogleBusinessReviewReplyError, DeleteGoogleBusinessReviewReplyResponse, GetPendingOAuthDataData, GetPendingOAuthDataError, GetPendingOAuthDataResponse, ListLinkedInOrganizationsData, ListLinkedInOrganizationsError, ListLinkedInOrganizationsResponse, SelectLinkedInOrganizationData, SelectLinkedInOrganizationError, SelectLinkedInOrganizationResponse, ListPinterestBoardsForSelectionData, ListPinterestBoardsForSelectionError, ListPinterestBoardsForSelectionResponse, SelectPinterestBoardData, SelectPinterestBoardError, SelectPinterestBoardResponse, ListSnapchatProfilesData, ListSnapchatProfilesError, ListSnapchatProfilesResponse, SelectSnapchatProfileData, SelectSnapchatProfileError, SelectSnapchatProfileResponse, ConnectBlueskyCredentialsData, ConnectBlueskyCredentialsError, ConnectBlueskyCredentialsResponse, ConnectOpenAiAdsCredentialsData, ConnectOpenAiAdsCredentialsError, ConnectOpenAiAdsCredentialsResponse, ConnectWhatsAppCredentialsData, ConnectWhatsAppCredentialsError, ConnectWhatsAppCredentialsResponse, ListWhatsAppPhoneNumbersData, ListWhatsAppPhoneNumbersError, ListWhatsAppPhoneNumbersResponse, CompleteWhatsAppPhoneSelectionData, CompleteWhatsAppPhoneSelectionError, CompleteWhatsAppPhoneSelectionResponse, ConnectWhatsAppEmbeddedSignupData, ConnectWhatsAppEmbeddedSignupError, ConnectWhatsAppEmbeddedSignupResponse, GetWhatsAppSdkConfigData, GetWhatsAppSdkConfigError, GetWhatsAppSdkConfigResponse, ConnectDiscordChannelData, ConnectDiscordChannelError, ConnectDiscordChannelResponse, ListSlackChannelsData, ListSlackChannelsError, ListSlackChannelsResponse, ConnectSlackChannelData, ConnectSlackChannelError, ConnectSlackChannelResponse, GetTelegramConnectStatusData, GetTelegramConnectStatusError, GetTelegramConnectStatusResponse, InitiateTelegramConnectData, InitiateTelegramConnectError, InitiateTelegramConnectResponse, CompleteTelegramConnectData, CompleteTelegramConnectError, CompleteTelegramConnectResponse, GetFacebookPagesData, GetFacebookPagesError, GetFacebookPagesResponse, UpdateFacebookPageData, UpdateFacebookPageError, UpdateFacebookPageResponse, GetLinkedInOrganizationsData, GetLinkedInOrganizationsError, GetLinkedInOrganizationsResponse, GetLinkedInAggregateAnalyticsData, GetLinkedInAggregateAnalyticsError, GetLinkedInAggregateAnalyticsResponse, GetLinkedInPostAnalyticsData, GetLinkedInPostAnalyticsError, GetLinkedInPostAnalyticsResponse, GetLinkedInPostReactionsData, GetLinkedInPostReactionsError, GetLinkedInPostReactionsResponse, UpdateLinkedInOrganizationData, UpdateLinkedInOrganizationError, UpdateLinkedInOrganizationResponse, GetLinkedInMentionsData, GetLinkedInMentionsError, GetLinkedInMentionsResponse, ListInstagramStoriesData, ListInstagramStoriesError, ListInstagramStoriesResponse, GetInstagramPublishingLimitData, GetInstagramPublishingLimitError, GetInstagramPublishingLimitResponse, SearchInstagramAudioData, SearchInstagramAudioError, SearchInstagramAudioResponse, GetInstagramAudioData, GetInstagramAudioError, GetInstagramAudioResponse, GetInstagramStoryInsightsData, GetInstagramStoryInsightsError, GetInstagramStoryInsightsResponse, GetPinterestBoardsData, GetPinterestBoardsError, GetPinterestBoardsResponse, UpdatePinterestBoardsData, UpdatePinterestBoardsError, UpdatePinterestBoardsResponse, CreatePinterestBoardData, CreatePinterestBoardError, CreatePinterestBoardResponse, GetYoutubeCaptionsData, GetYoutubeCaptionsError, GetYoutubeCaptionsResponse, GetYoutubePlaylistsData, GetYoutubePlaylistsError, GetYoutubePlaylistsResponse, UpdateYoutubeDefaultPlaylistData, UpdateYoutubeDefaultPlaylistError, UpdateYoutubeDefaultPlaylistResponse, GetGmbLocationsData, GetGmbLocationsError, GetGmbLocationsResponse, UpdateGmbLocationData, UpdateGmbLocationError, UpdateGmbLocationResponse, AssignGoogleBusinessLocationData, AssignGoogleBusinessLocationError, AssignGoogleBusinessLocationResponse, GetFacebookPostReactionsData, GetFacebookPostReactionsError, GetFacebookPostReactionsResponse, GetRedditSubredditsData, GetRedditSubredditsError, GetRedditSubredditsResponse, UpdateRedditSubredditsData, UpdateRedditSubredditsError, UpdateRedditSubredditsResponse, GetSubredditRulesData, GetSubredditRulesError, GetSubredditRulesResponse, VoteRedditThingData, VoteRedditThingError, VoteRedditThingResponse, GetRedditFlairsData, GetRedditFlairsError, GetRedditFlairsResponse, SetRedditPostFlairData, SetRedditPostFlairError, SetRedditPostFlairResponse, GetSlackSettingsData, GetSlackSettingsError, GetSlackSettingsResponse, UpdateSlackSettingsData, UpdateSlackSettingsError, UpdateSlackSettingsResponse, GetBlueskySettingsData, GetBlueskySettingsError, GetBlueskySettingsResponse, UpdateBlueskySettingsData, UpdateBlueskySettingsError, UpdateBlueskySettingsResponse, GetDiscordSettingsData, GetDiscordSettingsError, GetDiscordSettingsResponse, UpdateDiscordSettingsData, UpdateDiscordSettingsError, UpdateDiscordSettingsResponse, GetDiscordChannelsData, GetDiscordChannelsError, GetDiscordChannelsResponse, ListSlackMembersData, ListSlackMembersError, ListSlackMembersResponse, SendDiscordDirectMessageData, SendDiscordDirectMessageError, SendDiscordDirectMessageResponse, ListDiscordGuildRolesData, ListDiscordGuildRolesError, ListDiscordGuildRolesResponse, CreateDiscordGuildRoleData, CreateDiscordGuildRoleError, CreateDiscordGuildRoleResponse, EditDiscordGuildRoleData, EditDiscordGuildRoleError, EditDiscordGuildRoleResponse, DeleteDiscordGuildRoleData, DeleteDiscordGuildRoleError, DeleteDiscordGuildRoleResponse, ListDiscordGuildMembersData, ListDiscordGuildMembersError, ListDiscordGuildMembersResponse, SearchDiscordGuildMembersData, SearchDiscordGuildMembersError, SearchDiscordGuildMembersResponse, GetDiscordGuildMemberData, GetDiscordGuildMemberError, GetDiscordGuildMemberResponse, AddDiscordMemberRoleData, AddDiscordMemberRoleError, AddDiscordMemberRoleResponse, RemoveDiscordMemberRoleData, RemoveDiscordMemberRoleError, RemoveDiscordMemberRoleResponse, DeleteDiscordMessageData, DeleteDiscordMessageError, DeleteDiscordMessageResponse, CrosspostDiscordMessageData, CrosspostDiscordMessageError, CrosspostDiscordMessageResponse, CreateDiscordThreadData, CreateDiscordThreadError, CreateDiscordThreadResponse, ListDiscordPinnedMessagesData, ListDiscordPinnedMessagesError, ListDiscordPinnedMessagesResponse, PinDiscordMessageData, PinDiscordMessageError, PinDiscordMessageResponse, UnpinDiscordMessageData, UnpinDiscordMessageError, UnpinDiscordMessageResponse, ListDiscordScheduledEventsData, ListDiscordScheduledEventsError, ListDiscordScheduledEventsResponse, CreateDiscordScheduledEventData, CreateDiscordScheduledEventError, CreateDiscordScheduledEventResponse, GetDiscordScheduledEventData, GetDiscordScheduledEventError, GetDiscordScheduledEventResponse, UpdateDiscordScheduledEventData, UpdateDiscordScheduledEventError, UpdateDiscordScheduledEventResponse, DeleteDiscordScheduledEventData, DeleteDiscordScheduledEventError, DeleteDiscordScheduledEventResponse, 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, GetWebhookLogsData, GetWebhookLogsError, GetWebhookLogsResponse, RedeliverWebhookEventData, RedeliverWebhookEventError, RedeliverWebhookEventResponse, TestWebhookData, TestWebhookError, TestWebhookResponse, ListLogsData, ListLogsError, ListLogsResponse, ListInboxConversationsData, ListInboxConversationsError, ListInboxConversationsResponse, CreateInboxConversationData, CreateInboxConversationError, CreateInboxConversationResponse, SearchInboxConversationsData, SearchInboxConversationsError, SearchInboxConversationsResponse, GetInboxConversationData, GetInboxConversationError, GetInboxConversationResponse, UpdateInboxConversationData, UpdateInboxConversationError, UpdateInboxConversationResponse, GetInboxConversationMessagesData, GetInboxConversationMessagesError, GetInboxConversationMessagesResponse, SendInboxMessageData, SendInboxMessageError, SendInboxMessageResponse, GetWhatsAppMediaData, GetWhatsAppMediaError, GetWhatsAppMediaResponse, EditInboxMessageData, EditInboxMessageError, EditInboxMessageResponse, DeleteInboxMessageData, DeleteInboxMessageError, DeleteInboxMessageResponse, SendTypingIndicatorData, SendTypingIndicatorError, SendTypingIndicatorResponse, SetConversationThreadControlData, SetConversationThreadControlError, SetConversationThreadControlResponse, MarkConversationReadData, MarkConversationReadError, MarkConversationReadResponse, AddMessageReactionData, AddMessageReactionError, AddMessageReactionResponse, RemoveMessageReactionData, RemoveMessageReactionError, RemoveMessageReactionResponse, UploadMediaDirectData, UploadMediaDirectError, UploadMediaDirectResponse, 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, GetMessageAttachmentData, GetMessageAttachmentError, GetMessageAttachmentResponse, ListInboxCommentsData, ListInboxCommentsError, ListInboxCommentsResponse, GetInboxPostCommentsData, GetInboxPostCommentsError, GetInboxPostCommentsResponse, ReplyToInboxPostData, ReplyToInboxPostError, ReplyToInboxPostResponse, DeleteInboxCommentData, DeleteInboxCommentError, DeleteInboxCommentResponse, EditInboxCommentData, EditInboxCommentError, EditInboxCommentResponse, SetCommentModerationData, SetCommentModerationError, SetCommentModerationResponse, HideInboxCommentData, HideInboxCommentError, HideInboxCommentResponse, UnhideInboxCommentData, UnhideInboxCommentError, UnhideInboxCommentResponse, LikeInboxCommentData, LikeInboxCommentError, LikeInboxCommentResponse, UnlikeInboxCommentData, UnlikeInboxCommentError, UnlikeInboxCommentResponse, LikePostData, LikePostError, LikePostResponse, UnlikePostData, UnlikePostError, UnlikePostResponse, SendPrivateReplyToCommentData, SendPrivateReplyToCommentError, SendPrivateReplyToCommentResponse, RetweetPostData, RetweetPostError, RetweetPostResponse, UndoRetweetData, UndoRetweetError, UndoRetweetResponse, BookmarkPostData, BookmarkPostError, BookmarkPostResponse, RemoveBookmarkData, RemoveBookmarkError, RemoveBookmarkResponse, FollowUserData, FollowUserError, FollowUserResponse, UnfollowUserData, UnfollowUserError, UnfollowUserResponse, SearchTweetsData, SearchTweetsError, SearchTweetsResponse, GetTweetData, GetTweetError, GetTweetResponse, ListInboxMentionsData, ListInboxMentionsError, ListInboxMentionsResponse, ReplyToMentionData, ReplyToMentionError, ReplyToMentionResponse, ListInboxReviewsData, ListInboxReviewsError, ListInboxReviewsResponse, ReplyToInboxReviewData, ReplyToInboxReviewError, ReplyToInboxReviewResponse, DeleteInboxReviewReplyData, DeleteInboxReviewReplyError, DeleteInboxReviewReplyResponse, GetWhatsAppTemplatesData, GetWhatsAppTemplatesError, GetWhatsAppTemplatesResponse, CreateWhatsAppTemplateData, CreateWhatsAppTemplateError, CreateWhatsAppTemplateResponse, GetWhatsAppTemplateData, GetWhatsAppTemplateError, GetWhatsAppTemplateResponse, UpdateWhatsAppTemplateData, UpdateWhatsAppTemplateError, UpdateWhatsAppTemplateResponse, DeleteWhatsAppTemplateData, DeleteWhatsAppTemplateError, DeleteWhatsAppTemplateResponse, GetWhatsAppTemplateByIdData, GetWhatsAppTemplateByIdError, GetWhatsAppTemplateByIdResponse, UpdateWhatsAppTemplateByIdData, UpdateWhatsAppTemplateByIdError, UpdateWhatsAppTemplateByIdResponse, DeleteWhatsAppTemplateByIdData, DeleteWhatsAppTemplateByIdError, DeleteWhatsAppTemplateByIdResponse, GetWhatsAppCallingConfigData, GetWhatsAppCallingConfigError, GetWhatsAppCallingConfigResponse, EnableWhatsAppCallingLegacyData, EnableWhatsAppCallingLegacyError, EnableWhatsAppCallingLegacyResponse, UpdateWhatsAppCallingLegacyData, UpdateWhatsAppCallingLegacyError, UpdateWhatsAppCallingLegacyResponse, DisableWhatsAppCallingLegacyData, DisableWhatsAppCallingLegacyError, DisableWhatsAppCallingLegacyResponse, GetWhatsAppCallPermissionsData, GetWhatsAppCallPermissionsError, GetWhatsAppCallPermissionsResponse, InitiateWhatsAppCallData, InitiateWhatsAppCallError, InitiateWhatsAppCallResponse, ListWhatsAppCallsData, ListWhatsAppCallsError, ListWhatsAppCallsResponse, GetWhatsAppCallData, GetWhatsAppCallError, GetWhatsAppCallResponse, GetWhatsAppCallRecordingData, GetWhatsAppCallRecordingError, GetWhatsAppCallRecordingResponse, GetWhatsAppCallEstimateData, GetWhatsAppCallEstimateError, GetWhatsAppCallEstimateResponse, ListCallsData, ListCallsError, ListCallsResponse, GetCallData, GetCallError, GetCallResponse, GetCallRecordingData, GetCallRecordingError, GetCallRecordingResponse, CreateVoiceCallData, CreateVoiceCallError, CreateVoiceCallResponse, ListVoiceCallsData, ListVoiceCallsError, ListVoiceCallsResponse, GetVoiceCallData, GetVoiceCallError, GetVoiceCallResponse, EndVoiceCallData, EndVoiceCallError, EndVoiceCallResponse, GetVoiceCallRecordingData, GetVoiceCallRecordingError, GetVoiceCallRecordingResponse, TransferVoiceCallData, TransferVoiceCallError, TransferVoiceCallResponse, GetVoiceCallEstimateData, GetVoiceCallEstimateError, GetVoiceCallEstimateResponse, CreateVoiceWebSessionError, CreateVoiceWebSessionResponse, DialVoiceWebCallData, DialVoiceWebCallError, DialVoiceWebCallResponse, SendSmsData, SendSmsError, SendSmsResponse, LookupSmsNumberData, LookupSmsNumberError, LookupSmsNumberResponse, ListSmsOptOutsData, ListSmsOptOutsError, ListSmsOptOutsResponse, CreateSmsSenderIdData, CreateSmsSenderIdError, CreateSmsSenderIdResponse, ListSmsSenderIdsError, ListSmsSenderIdsResponse, RequestSmsSenderIdLimitIncreaseData, RequestSmsSenderIdLimitIncreaseError, RequestSmsSenderIdLimitIncreaseResponse, DeleteSmsSenderIdData, DeleteSmsSenderIdError, DeleteSmsSenderIdResponse, StartSmsRegistrationData, StartSmsRegistrationError, StartSmsRegistrationResponse, ListSmsRegistrationsData, ListSmsRegistrationsError, ListSmsRegistrationsResponse, PreflightSmsRegistrationData, PreflightSmsRegistrationError, PreflightSmsRegistrationResponse, DeactivateSmsRegistrationData, DeactivateSmsRegistrationError, DeactivateSmsRegistrationResponse, GetSmsRegistrationData, GetSmsRegistrationError, GetSmsRegistrationResponse, VerifySmsRegistrationOtpData, VerifySmsRegistrationOtpError, VerifySmsRegistrationOtpResponse, ResendSmsRegistrationOtpData, ResendSmsRegistrationOtpError, ResendSmsRegistrationOtpResponse, AppealSmsRegistrationData, AppealSmsRegistrationError, AppealSmsRegistrationResponse, RespondToSmsRegistrationReviewData, RespondToSmsRegistrationReviewError, RespondToSmsRegistrationReviewResponse, UploadSmsOptInProofFileData, UploadSmsOptInProofFileError, UploadSmsOptInProofFileResponse, UploadSmsOptInProofData, UploadSmsOptInProofError, UploadSmsOptInProofResponse, ShareSmsRegistrationData, ShareSmsRegistrationError, ShareSmsRegistrationResponse, GetWhatsAppLibraryTemplateData, GetWhatsAppLibraryTemplateError, GetWhatsAppLibraryTemplateResponse, GetWhatsAppBusinessProfileData, GetWhatsAppBusinessProfileError, GetWhatsAppBusinessProfileResponse, UpdateWhatsAppBusinessProfileData, UpdateWhatsAppBusinessProfileError, UpdateWhatsAppBusinessProfileResponse, UploadWhatsAppProfilePhotoData, UploadWhatsAppProfilePhotoError, UploadWhatsAppProfilePhotoResponse, GetWhatsAppDisplayNameData, GetWhatsAppDisplayNameError, GetWhatsAppDisplayNameResponse, UpdateWhatsAppDisplayNameData, UpdateWhatsAppDisplayNameError, UpdateWhatsAppDisplayNameResponse, GetWhatsappBusinessUsernameData, GetWhatsappBusinessUsernameError, GetWhatsappBusinessUsernameResponse, SetWhatsappBusinessUsernameData, SetWhatsappBusinessUsernameError, SetWhatsappBusinessUsernameResponse, DeleteWhatsappBusinessUsernameData, DeleteWhatsappBusinessUsernameError, DeleteWhatsappBusinessUsernameResponse, GetWhatsappBusinessUsernameSuggestionsData, GetWhatsappBusinessUsernameSuggestionsError, GetWhatsappBusinessUsernameSuggestionsResponse, GetWhatsAppNumberInfoData, GetWhatsAppNumberInfoError, GetWhatsAppNumberInfoResponse, GetWhatsAppBlockStatusData, GetWhatsAppBlockStatusError, GetWhatsAppBlockStatusResponse, GetWhatsAppBlockedUsersData, GetWhatsAppBlockedUsersError, GetWhatsAppBlockedUsersResponse, BlockWhatsAppUsersData, BlockWhatsAppUsersError, BlockWhatsAppUsersResponse, UnblockWhatsAppUsersData, UnblockWhatsAppUsersError, UnblockWhatsAppUsersResponse, ListWhatsAppAccountEventsData, ListWhatsAppAccountEventsError, ListWhatsAppAccountEventsResponse, GetWhatsAppDatasetData, GetWhatsAppDatasetError, GetWhatsAppDatasetResponse, CreateWhatsAppDatasetData, CreateWhatsAppDatasetError, CreateWhatsAppDatasetResponse, ListPhoneNumbersData, ListPhoneNumbersError, ListPhoneNumbersResponse, GetPhoneNumberData, GetPhoneNumberError, GetPhoneNumberResponse, ReleasePhoneNumberData, ReleasePhoneNumberError, ReleasePhoneNumberResponse, PurchasePhoneNumberData, PurchasePhoneNumberError, PurchasePhoneNumberResponse, ListPhoneNumberCountriesError, ListPhoneNumberCountriesResponse, SearchAvailablePhoneNumbersData, SearchAvailablePhoneNumbersError, SearchAvailablePhoneNumbersResponse, CheckPhoneNumberAvailabilityData, CheckPhoneNumberAvailabilityError, CheckPhoneNumberAvailabilityResponse, GetWhatsAppPhoneNumbersData, GetWhatsAppPhoneNumbersError, GetWhatsAppPhoneNumbersResponse, PurchaseWhatsAppPhoneNumberData, PurchaseWhatsAppPhoneNumberError, PurchaseWhatsAppPhoneNumberResponse, ListWhatsAppNumberCountriesError, ListWhatsAppNumberCountriesResponse, SearchAvailableWhatsAppNumbersData, SearchAvailableWhatsAppNumbersError, SearchAvailableWhatsAppNumbersResponse, CheckWhatsAppNumberAvailabilityData, CheckWhatsAppNumberAvailabilityError, CheckWhatsAppNumberAvailabilityResponse, GetPhoneNumberKycFormData, GetPhoneNumberKycFormError, GetPhoneNumberKycFormResponse, SubmitPhoneNumberKycData, SubmitPhoneNumberKycError, SubmitPhoneNumberKycResponse, ViewPhoneNumberKycDocumentData, ViewPhoneNumberKycDocumentError, ViewPhoneNumberKycDocumentResponse, UploadPhoneNumberKycDocumentData, UploadPhoneNumberKycDocumentError, UploadPhoneNumberKycDocumentResponse, ValidatePhoneNumberKycAddressData, ValidatePhoneNumberKycAddressError, ValidatePhoneNumberKycAddressResponse, CreatePhoneNumberKycLinkData, CreatePhoneNumberKycLinkError, CreatePhoneNumberKycLinkResponse, CreatePhoneNumberPortInData, CreatePhoneNumberPortInError, CreatePhoneNumberPortInResponse, ListPhoneNumberPortInsError, ListPhoneNumberPortInsResponse, CheckPhoneNumberPortabilityData, CheckPhoneNumberPortabilityError, CheckPhoneNumberPortabilityResponse, UploadPhoneNumberPortInDocumentData, UploadPhoneNumberPortInDocumentError, UploadPhoneNumberPortInDocumentResponse, GetPhoneNumberPortInRequirementsData, GetPhoneNumberPortInRequirementsError, GetPhoneNumberPortInRequirementsResponse, GetPhoneNumberPortInOrderRequirementsData, GetPhoneNumberPortInOrderRequirementsError, GetPhoneNumberPortInOrderRequirementsResponse, CancelPhoneNumberPortInData, CancelPhoneNumberPortInError, CancelPhoneNumberPortInResponse, ReviewPhoneNumberKycPacketData, ReviewPhoneNumberKycPacketError, ReviewPhoneNumberKycPacketResponse, GetPhoneNumberRemediationData, GetPhoneNumberRemediationError, GetPhoneNumberRemediationResponse, RemediatePhoneNumberData, RemediatePhoneNumberError, RemediatePhoneNumberResponse, ReplyToPhoneNumberReviewerData, ReplyToPhoneNumberReviewerError, ReplyToPhoneNumberReviewerResponse, RespondToPhoneNumberReviewerData, RespondToPhoneNumberReviewerError, RespondToPhoneNumberReviewerResponse, GetWhatsAppNumberKycFormData, GetWhatsAppNumberKycFormError, GetWhatsAppNumberKycFormResponse, SubmitWhatsAppNumberKycData, SubmitWhatsAppNumberKycError, SubmitWhatsAppNumberKycResponse, UploadWhatsAppNumberKycDocumentData, UploadWhatsAppNumberKycDocumentError, UploadWhatsAppNumberKycDocumentResponse, ValidateWhatsAppNumberKycAddressData, ValidateWhatsAppNumberKycAddressError, ValidateWhatsAppNumberKycAddressResponse, CreateWhatsAppNumberKycLinkData, CreateWhatsAppNumberKycLinkError, CreateWhatsAppNumberKycLinkResponse, MoveWhatsAppNumberToProfileData, MoveWhatsAppNumberToProfileError, MoveWhatsAppNumberToProfileResponse, GetWhatsAppNumberRemediationData, GetWhatsAppNumberRemediationError, GetWhatsAppNumberRemediationResponse, RemediateWhatsAppNumberData, RemediateWhatsAppNumberError, RemediateWhatsAppNumberResponse, EnableVoiceOnNumberData, EnableVoiceOnNumberError, EnableVoiceOnNumberResponse, DisableVoiceOnNumberData, DisableVoiceOnNumberError, DisableVoiceOnNumberResponse, CreatePhoneNumberStockWatchData, CreatePhoneNumberStockWatchError, CreatePhoneNumberStockWatchResponse, ListPhoneNumberStockWatchesError, ListPhoneNumberStockWatchesResponse, DeletePhoneNumberStockWatchData, DeletePhoneNumberStockWatchError, DeletePhoneNumberStockWatchResponse, CreateSipTrunkData, CreateSipTrunkError, CreateSipTrunkResponse, ListSipTrunksError, ListSipTrunksResponse, GetSipTrunkData, GetSipTrunkError, GetSipTrunkResponse, DeleteSipTrunkData, DeleteSipTrunkError, DeleteSipTrunkResponse, RotateSipTrunkCredentialsData, RotateSipTrunkCredentialsError, RotateSipTrunkCredentialsResponse, AttachNumberToSipTrunkData, AttachNumberToSipTrunkError, AttachNumberToSipTrunkResponse, DetachNumberFromSipTrunkData, DetachNumberFromSipTrunkError, DetachNumberFromSipTrunkResponse, EnableSmsOnNumberData, EnableSmsOnNumberError, EnableSmsOnNumberResponse, DisableSmsOnNumberData, DisableSmsOnNumberError, DisableSmsOnNumberResponse, ReuseSmsRegistrationForNumberData, ReuseSmsRegistrationForNumberError, ReuseSmsRegistrationForNumberResponse, GetWhatsAppCallingData, GetWhatsAppCallingError, GetWhatsAppCallingResponse, EnableWhatsAppCallingData, EnableWhatsAppCallingError, EnableWhatsAppCallingResponse, UpdateWhatsAppCallingData, UpdateWhatsAppCallingError, UpdateWhatsAppCallingResponse, DisableWhatsAppCallingData, DisableWhatsAppCallingError, DisableWhatsAppCallingResponse, StartWhatsAppCallerIdVerificationData, StartWhatsAppCallerIdVerificationError, StartWhatsAppCallerIdVerificationResponse, VerifyWhatsAppCallerIdData, VerifyWhatsAppCallerIdError, VerifyWhatsAppCallerIdResponse, GetWhatsAppPhoneNumberData, GetWhatsAppPhoneNumberError, GetWhatsAppPhoneNumberResponse, ReleaseWhatsAppPhoneNumberData, ReleaseWhatsAppPhoneNumberError, ReleaseWhatsAppPhoneNumberResponse, ListWhatsAppSandboxSessionsError, ListWhatsAppSandboxSessionsResponse, CreateWhatsAppSandboxSessionData, CreateWhatsAppSandboxSessionError, CreateWhatsAppSandboxSessionResponse, DeleteWhatsAppSandboxSessionData, DeleteWhatsAppSandboxSessionError, DeleteWhatsAppSandboxSessionResponse, ListWhatsAppGroupChatsData, ListWhatsAppGroupChatsError, ListWhatsAppGroupChatsResponse, CreateWhatsAppGroupChatData, CreateWhatsAppGroupChatError, CreateWhatsAppGroupChatResponse, GetWhatsAppGroupChatData, GetWhatsAppGroupChatError, GetWhatsAppGroupChatResponse, UpdateWhatsAppGroupChatData, UpdateWhatsAppGroupChatError, UpdateWhatsAppGroupChatResponse, DeleteWhatsAppGroupChatData, DeleteWhatsAppGroupChatError, DeleteWhatsAppGroupChatResponse, AddWhatsAppGroupParticipantsData, AddWhatsAppGroupParticipantsError, AddWhatsAppGroupParticipantsResponse, RemoveWhatsAppGroupParticipantsData, RemoveWhatsAppGroupParticipantsError, RemoveWhatsAppGroupParticipantsResponse, CreateWhatsAppGroupInviteLinkData, CreateWhatsAppGroupInviteLinkError, CreateWhatsAppGroupInviteLinkResponse, ListWhatsAppGroupJoinRequestsData, ListWhatsAppGroupJoinRequestsError, ListWhatsAppGroupJoinRequestsResponse, ApproveWhatsAppGroupJoinRequestsData, ApproveWhatsAppGroupJoinRequestsError, ApproveWhatsAppGroupJoinRequestsResponse, RejectWhatsAppGroupJoinRequestsData, RejectWhatsAppGroupJoinRequestsError, RejectWhatsAppGroupJoinRequestsResponse, ListWhatsAppFlowsData, ListWhatsAppFlowsError, ListWhatsAppFlowsResponse, CreateWhatsAppFlowData, CreateWhatsAppFlowError, CreateWhatsAppFlowResponse, GetWhatsAppFlowData, GetWhatsAppFlowError, GetWhatsAppFlowResponse, UpdateWhatsAppFlowData, UpdateWhatsAppFlowError, UpdateWhatsAppFlowResponse, DeleteWhatsAppFlowData, DeleteWhatsAppFlowError, DeleteWhatsAppFlowResponse, GetWhatsAppFlowJsonData, GetWhatsAppFlowJsonError, GetWhatsAppFlowJsonResponse, UploadWhatsAppFlowJsonData, UploadWhatsAppFlowJsonError, UploadWhatsAppFlowJsonResponse, GetWhatsAppFlowPreviewData, GetWhatsAppFlowPreviewError, GetWhatsAppFlowPreviewResponse, ListWhatsAppFlowVersionsData, ListWhatsAppFlowVersionsError, ListWhatsAppFlowVersionsResponse, PublishWhatsAppFlowData, PublishWhatsAppFlowError, PublishWhatsAppFlowResponse, DeprecateWhatsAppFlowData, DeprecateWhatsAppFlowError, DeprecateWhatsAppFlowResponse, GetWhatsAppFlowsEncryptionKeyData, GetWhatsAppFlowsEncryptionKeyError, GetWhatsAppFlowsEncryptionKeyResponse, SetWhatsAppFlowsEncryptionKeyData, SetWhatsAppFlowsEncryptionKeyError, SetWhatsAppFlowsEncryptionKeyResponse, SendWhatsAppFlowMessageData, SendWhatsAppFlowMessageError, SendWhatsAppFlowMessageResponse, ListWhatsAppFlowResponsesData, ListWhatsAppFlowResponsesError, ListWhatsAppFlowResponsesResponse, ListContactsData, ListContactsError, ListContactsResponse, CreateContactData, CreateContactError, CreateContactResponse, GetContactData, GetContactError, GetContactResponse, UpdateContactData, UpdateContactError, UpdateContactResponse, DeleteContactData, DeleteContactError, DeleteContactResponse, GetContactChannelsData, GetContactChannelsError, GetContactChannelsResponse, BulkCreateContactsData, BulkCreateContactsError, BulkCreateContactsResponse, SetContactFieldValueData, SetContactFieldValueError, SetContactFieldValueResponse, ClearContactFieldValueData, ClearContactFieldValueError, ClearContactFieldValueResponse, ListCustomFieldsData, ListCustomFieldsError, ListCustomFieldsResponse, CreateCustomFieldData, CreateCustomFieldError, CreateCustomFieldResponse, UpdateCustomFieldData, UpdateCustomFieldError, UpdateCustomFieldResponse, DeleteCustomFieldData, DeleteCustomFieldError, DeleteCustomFieldResponse, ListBroadcastsData, ListBroadcastsError, ListBroadcastsResponse, CreateBroadcastData, CreateBroadcastError, CreateBroadcastResponse, GetBroadcastData, GetBroadcastError, GetBroadcastResponse, UpdateBroadcastData, UpdateBroadcastError, UpdateBroadcastResponse, DeleteBroadcastData, DeleteBroadcastError, DeleteBroadcastResponse, SendBroadcastData, SendBroadcastError, SendBroadcastResponse, ScheduleBroadcastData, ScheduleBroadcastError, ScheduleBroadcastResponse, CancelBroadcastData, CancelBroadcastError, CancelBroadcastResponse, ListBroadcastRecipientsData, ListBroadcastRecipientsError, ListBroadcastRecipientsResponse, AddBroadcastRecipientsData, AddBroadcastRecipientsError, AddBroadcastRecipientsResponse, ListWorkflowsData, ListWorkflowsError, ListWorkflowsResponse, CreateWorkflowData, CreateWorkflowError, CreateWorkflowResponse, GetWorkflowData, GetWorkflowError, GetWorkflowResponse, UpdateWorkflowData, UpdateWorkflowError, UpdateWorkflowResponse, DeleteWorkflowData, DeleteWorkflowError, DeleteWorkflowResponse, ActivateWorkflowData, ActivateWorkflowError, ActivateWorkflowResponse, PauseWorkflowData, PauseWorkflowError, PauseWorkflowResponse, ListWorkflowExecutionsData, ListWorkflowExecutionsError, ListWorkflowExecutionsResponse, TriggerWorkflowData, TriggerWorkflowError, TriggerWorkflowResponse, ListWorkflowExecutionEventsData, ListWorkflowExecutionEventsError, ListWorkflowExecutionEventsResponse, DuplicateWorkflowData, DuplicateWorkflowError, DuplicateWorkflowResponse, ListWorkflowVersionsData, ListWorkflowVersionsError, ListWorkflowVersionsResponse, GetWorkflowVersionData, GetWorkflowVersionError, GetWorkflowVersionResponse, RestoreWorkflowVersionData, RestoreWorkflowVersionError, RestoreWorkflowVersionResponse, ListSequencesData, ListSequencesError, ListSequencesResponse, CreateSequenceData, CreateSequenceError, CreateSequenceResponse, GetSequenceData, GetSequenceError, GetSequenceResponse, UpdateSequenceData, UpdateSequenceError, UpdateSequenceResponse, DeleteSequenceData, DeleteSequenceError, DeleteSequenceResponse, ActivateSequenceData, ActivateSequenceError, ActivateSequenceResponse, PauseSequenceData, PauseSequenceError, PauseSequenceResponse, EnrollContactsData, EnrollContactsError, EnrollContactsResponse, UnenrollContactData, UnenrollContactError, UnenrollContactResponse, ListSequenceEnrollmentsData, ListSequenceEnrollmentsError, ListSequenceEnrollmentsResponse, ListCommentAutomationsData, ListCommentAutomationsError, ListCommentAutomationsResponse, CreateCommentAutomationData, CreateCommentAutomationError, CreateCommentAutomationResponse, GetCommentAutomationData, GetCommentAutomationError, GetCommentAutomationResponse, UpdateCommentAutomationData, UpdateCommentAutomationError, UpdateCommentAutomationResponse, DeleteCommentAutomationData, DeleteCommentAutomationError, DeleteCommentAutomationResponse, ListCommentAutomationLogsData, ListCommentAutomationLogsError, ListCommentAutomationLogsResponse, ListAdsData, ListAdsError, ListAdsResponse, GetAdsSearchTermsData, GetAdsSearchTermsError, GetAdsSearchTermsResponse, ListBidStrategiesData, ListBidStrategiesError, ListBidStrategiesResponse, CreateBidStrategyData, CreateBidStrategyError, CreateBidStrategyResponse, UpdateBidStrategyData, UpdateBidStrategyError, UpdateBidStrategyResponse, ListLocalServicesLeadsData, ListLocalServicesLeadsError, ListLocalServicesLeadsResponse, ListLocalServicesLeadConversationsData, ListLocalServicesLeadConversationsError, ListLocalServicesLeadConversationsResponse, ListAdKeywordsData, ListAdKeywordsError, ListAdKeywordsResponse, AddAdKeywordsData, AddAdKeywordsError, AddAdKeywordsResponse, UpdateAdKeywordData, UpdateAdKeywordError, UpdateAdKeywordResponse, RemoveAdKeywordData, RemoveAdKeywordError, RemoveAdKeywordResponse, ListAdCampaignsData, ListAdCampaignsError, ListAdCampaignsResponse, CreateAdCampaignData, CreateAdCampaignError, CreateAdCampaignResponse, UpdateAdCampaignStatusData, UpdateAdCampaignStatusError, UpdateAdCampaignStatusResponse, GetCampaignBiddingData, GetCampaignBiddingError, GetCampaignBiddingResponse, UpdateAdCampaignData, UpdateAdCampaignError, UpdateAdCampaignResponse, DeleteAdCampaignData, DeleteAdCampaignError, DeleteAdCampaignResponse, ListCampaignNegativeKeywordsData, ListCampaignNegativeKeywordsError, ListCampaignNegativeKeywordsResponse, ReplaceCampaignNegativeKeywordsData, ReplaceCampaignNegativeKeywordsError, ReplaceCampaignNegativeKeywordsResponse, BulkUpdateAdCampaignStatusData, BulkUpdateAdCampaignStatusError, BulkUpdateAdCampaignStatusResponse, DuplicateAdCampaignData, DuplicateAdCampaignError, DuplicateAdCampaignResponse, GetCampaignTargetingData, GetCampaignTargetingError, GetCampaignTargetingResponse, UpdateCampaignTargetingData, UpdateCampaignTargetingError, UpdateCampaignTargetingResponse, ListAdSetsData, ListAdSetsError, ListAdSetsResponse, CreateAdSetData, CreateAdSetError, CreateAdSetResponse, DuplicateAdSetData, DuplicateAdSetError, DuplicateAdSetResponse, DuplicateAdData, DuplicateAdError, DuplicateAdResponse, GetAdSetDetailsData, GetAdSetDetailsError, GetAdSetDetailsResponse, UpdateAdSetData, UpdateAdSetError, UpdateAdSetResponse, DeleteAdSetData, DeleteAdSetError, DeleteAdSetResponse, UpdateAdSetStatusData, UpdateAdSetStatusError, UpdateAdSetStatusResponse, GetAdTreeData, GetAdTreeError, GetAdTreeResponse, GetAdsTimelineData, GetAdsTimelineError, GetAdsTimelineResponse, GetAdData, GetAdError, GetAdResponse, UpdateAdData, UpdateAdError, UpdateAdResponse, DeleteAdData, DeleteAdError, DeleteAdResponse, UpdateAdStatusData, UpdateAdStatusError, UpdateAdStatusResponse, AttachCampaignAssetsData, AttachCampaignAssetsError, AttachCampaignAssetsResponse, GetCampaignAnalyticsData, GetCampaignAnalyticsError, GetCampaignAnalyticsResponse, GenerateAdPreviewsData, GenerateAdPreviewsError, GenerateAdPreviewsResponse, GetAdPreviewsData, GetAdPreviewsError, GetAdPreviewsResponse, GetAdMediaData, GetAdMediaError, GetAdMediaResponse, GenerateKeywordIdeasData, GenerateKeywordIdeasError, GenerateKeywordIdeasResponse, GenerateKeywordHistoricalMetricsData, GenerateKeywordHistoricalMetricsError, GenerateKeywordHistoricalMetricsResponse, QueryAdInsightsData, QueryAdInsightsError, QueryAdInsightsResponse, CreateAdInsightsReportData, CreateAdInsightsReportError, CreateAdInsightsReportResponse, GetAdInsightsReportData, GetAdInsightsReportError, GetAdInsightsReportResponse, GetAdAnalyticsData, GetAdAnalyticsError, GetAdAnalyticsResponse, GetAdTrackingTagsData, GetAdTrackingTagsError, GetAdTrackingTagsResponse, UpdateAdTrackingTagsData, UpdateAdTrackingTagsError, UpdateAdTrackingTagsResponse, GetAdCommentsData, GetAdCommentsError, GetAdCommentsResponse, ListAdsBusinessCentersData, ListAdsBusinessCentersError, ListAdsBusinessCentersResponse, GetAdsActivityLogData, GetAdsActivityLogError, GetAdsActivityLogResponse, CreateRfPredictionData, CreateRfPredictionError, CreateRfPredictionResponse, GetRfPredictionData, GetRfPredictionError, GetRfPredictionResponse, CancelRfReservationData, CancelRfReservationError, CancelRfReservationResponse, ReserveRfPredictionData, ReserveRfPredictionError, ReserveRfPredictionResponse, ListAdStudiesData, ListAdStudiesError, ListAdStudiesResponse, ListMetaBusinessesData, ListMetaBusinessesError, ListMetaBusinessesResponse, ListAdLabelsData, ListAdLabelsError, ListAdLabelsResponse, ListHighDemandPeriodsData, ListHighDemandPeriodsError, ListHighDemandPeriodsResponse, CreateHighDemandPeriodData, CreateHighDemandPeriodError, CreateHighDemandPeriodResponse, ListAdCreativesData, ListAdCreativesError, ListAdCreativesResponse, CreateAdCreativeData, CreateAdCreativeError, CreateAdCreativeResponse, GetAdCreativeData, GetAdCreativeError, GetAdCreativeResponse, UpdateAdCreativeData, UpdateAdCreativeError, UpdateAdCreativeResponse, DeleteAdCreativeData, DeleteAdCreativeError, DeleteAdCreativeResponse, ListValueRuleSetsData, ListValueRuleSetsError, ListValueRuleSetsResponse, CreateValueRuleSetData, CreateValueRuleSetError, CreateValueRuleSetResponse, GetValueRuleSetData, GetValueRuleSetError, GetValueRuleSetResponse, UpdateValueRuleSetData, UpdateValueRuleSetError, UpdateValueRuleSetResponse, DeleteValueRuleSetData, DeleteValueRuleSetError, DeleteValueRuleSetResponse, ListAccountCalloutsData, ListAccountCalloutsError, ListAccountCalloutsResponse, AddAccountCalloutsData, AddAccountCalloutsError, AddAccountCalloutsResponse, RemoveAccountCalloutData, RemoveAccountCalloutError, RemoveAccountCalloutResponse, GetAdAccountFinanceData, GetAdAccountFinanceError, GetAdAccountFinanceResponse, ListAdAccountsData, ListAdAccountsError, ListAdAccountsResponse, UpdateAdAccountData, UpdateAdAccountError, UpdateAdAccountResponse, GetDsaDefaultsData, GetDsaDefaultsError, GetDsaDefaultsResponse, GetDsaRecommendationsData, GetDsaRecommendationsError, GetDsaRecommendationsResponse, BoostPostData, BoostPostError, BoostPostResponse, CreateStandaloneAdData, CreateStandaloneAdError, CreateStandaloneAdResponse, ListLeadsData, ListLeadsError, ListLeadsResponse, ListLeadFormsData, ListLeadFormsError, ListLeadFormsResponse, CreateLeadFormData, CreateLeadFormError, CreateLeadFormResponse, GetLeadFormData, GetLeadFormError, GetLeadFormResponse, ArchiveLeadFormData, ArchiveLeadFormError, ArchiveLeadFormResponse, ListFormLeadsData, ListFormLeadsError, ListFormLeadsResponse, CreateTestLeadData, CreateTestLeadError, CreateTestLeadResponse, UploadAdImageData, UploadAdImageError, UploadAdImageResponse, ListAdImagesData, ListAdImagesError, ListAdImagesResponse, UploadAdVideoData, UploadAdVideoError, UploadAdVideoResponse, ListAdVideosData, ListAdVideosError, ListAdVideosResponse, DeleteAdVideoData, DeleteAdVideoError, DeleteAdVideoResponse, SearchAdInterestsData, SearchAdInterestsError, SearchAdInterestsResponse, SearchAdTargetingData, SearchAdTargetingError, SearchAdTargetingResponse, SearchAdLibraryData, SearchAdLibraryError, SearchAdLibraryResponse, EstimateAdReachData, EstimateAdReachError, EstimateAdReachResponse, GetLinkedInBidPricingData, GetLinkedInBidPricingError, GetLinkedInBidPricingResponse, GetLinkedInSupplyForecastData, GetLinkedInSupplyForecastError, GetLinkedInSupplyForecastResponse, ListAdCatalogsData, ListAdCatalogsError, ListAdCatalogsResponse, ListAdCatalogProductSetsData, ListAdCatalogProductSetsError, ListAdCatalogProductSetsResponse, ListAdAudiencesData, ListAdAudiencesError, ListAdAudiencesResponse, CreateAdAudienceData, CreateAdAudienceError, CreateAdAudienceResponse, GetAdAudienceData, GetAdAudienceError, GetAdAudienceResponse, UpdateAdAudienceData, UpdateAdAudienceError, UpdateAdAudienceResponse, DeleteAdAudienceData, DeleteAdAudienceError, DeleteAdAudienceResponse, AddUsersToAdAudienceData, AddUsersToAdAudienceError, AddUsersToAdAudienceResponse, ReplaceAdAudienceCompaniesData, ReplaceAdAudienceCompaniesError, ReplaceAdAudienceCompaniesResponse, GetConversionsQualityData, GetConversionsQualityError, GetConversionsQualityResponse, SendConversionsData, SendConversionsError, SendConversionsResponse, AdjustConversionsData, AdjustConversionsError, AdjustConversionsResponse, ListConversionActionsData, ListConversionActionsError, ListConversionActionsResponse, CreateConversionActionData, CreateConversionActionError, CreateConversionActionResponse, ListConversionDestinationsData, ListConversionDestinationsError, ListConversionDestinationsResponse, CreateConversionDestinationData, CreateConversionDestinationError, CreateConversionDestinationResponse, GetConversionDestinationData, GetConversionDestinationError, GetConversionDestinationResponse, UpdateConversionDestinationData, UpdateConversionDestinationError, UpdateConversionDestinationResponse, DeleteConversionDestinationData, DeleteConversionDestinationError, DeleteConversionDestinationResponse, ListConversionAssociationsData, ListConversionAssociationsError, ListConversionAssociationsResponse, AddConversionAssociationsData, AddConversionAssociationsError, AddConversionAssociationsResponse, RemoveConversionAssociationsData, RemoveConversionAssociationsError, RemoveConversionAssociationsResponse, GetConversionMetricsData, GetConversionMetricsError, GetConversionMetricsResponse, ListWhatsAppConversionsData, ListWhatsAppConversionsError, ListWhatsAppConversionsResponse, SendWhatsAppConversionData, SendWhatsAppConversionError, SendWhatsAppConversionResponse, CreateMessagingAdData, CreateMessagingAdError, CreateMessagingAdResponse, CreateCallAdData, CreateCallAdError, CreateCallAdResponse, CreateCtwaAdData, CreateCtwaAdError, CreateCtwaAdResponse, ListCustomConversionsData, ListCustomConversionsError, ListCustomConversionsResponse, CreateCustomConversionData, CreateCustomConversionError, CreateCustomConversionResponse, GetBusinessAgentStatusData, GetBusinessAgentStatusError, GetBusinessAgentStatusResponse, OnboardBusinessAgentData, OnboardBusinessAgentError, OnboardBusinessAgentResponse, ListBusinessAgentSettingsData, ListBusinessAgentSettingsError, ListBusinessAgentSettingsResponse, UpdateBusinessAgentSettingsData, UpdateBusinessAgentSettingsError, UpdateBusinessAgentSettingsResponse, ListBusinessAgentAllowlistData, ListBusinessAgentAllowlistError, ListBusinessAgentAllowlistResponse, AddBusinessAgentAllowlistEntryData, AddBusinessAgentAllowlistEntryError, AddBusinessAgentAllowlistEntryResponse, RemoveBusinessAgentAllowlistEntryData, RemoveBusinessAgentAllowlistEntryError, RemoveBusinessAgentAllowlistEntryResponse, GetBusinessAgentBusinessInformationData, GetBusinessAgentBusinessInformationError, GetBusinessAgentBusinessInformationResponse, ReplaceBusinessAgentBusinessInformationData, ReplaceBusinessAgentBusinessInformationError, ReplaceBusinessAgentBusinessInformationResponse, ResetBusinessAgentBusinessInformationData, ResetBusinessAgentBusinessInformationError, ResetBusinessAgentBusinessInformationResponse, ListBusinessAgentFaqsData, ListBusinessAgentFaqsError, ListBusinessAgentFaqsResponse, CreateBusinessAgentFaqData, CreateBusinessAgentFaqError, CreateBusinessAgentFaqResponse, GetBusinessAgentFaqData, GetBusinessAgentFaqError, GetBusinessAgentFaqResponse, UpdateBusinessAgentFaqData, UpdateBusinessAgentFaqError, UpdateBusinessAgentFaqResponse, DeleteBusinessAgentFaqData, DeleteBusinessAgentFaqError, DeleteBusinessAgentFaqResponse, ListBusinessAgentWebsitesData, ListBusinessAgentWebsitesError, ListBusinessAgentWebsitesResponse, AddBusinessAgentWebsiteData, AddBusinessAgentWebsiteError, AddBusinessAgentWebsiteResponse, GetBusinessAgentWebsiteData, GetBusinessAgentWebsiteError, GetBusinessAgentWebsiteResponse, UpdateBusinessAgentWebsiteData, UpdateBusinessAgentWebsiteError, UpdateBusinessAgentWebsiteResponse, DeleteBusinessAgentWebsiteData, DeleteBusinessAgentWebsiteError, DeleteBusinessAgentWebsiteResponse, ListBusinessAgentFilesData, ListBusinessAgentFilesError, ListBusinessAgentFilesResponse, UploadBusinessAgentFileData, UploadBusinessAgentFileError, UploadBusinessAgentFileResponse, GetBusinessAgentFileData, GetBusinessAgentFileError, GetBusinessAgentFileResponse, DeleteBusinessAgentFileData, DeleteBusinessAgentFileError, DeleteBusinessAgentFileResponse, ListBusinessAgentSkillsData, ListBusinessAgentSkillsError, ListBusinessAgentSkillsResponse, CreateBusinessAgentSkillData, CreateBusinessAgentSkillError, CreateBusinessAgentSkillResponse, GetBusinessAgentSkillData, GetBusinessAgentSkillError, GetBusinessAgentSkillResponse, UpdateBusinessAgentSkillData, UpdateBusinessAgentSkillError, UpdateBusinessAgentSkillResponse, DeleteBusinessAgentSkillData, DeleteBusinessAgentSkillError, DeleteBusinessAgentSkillResponse, ListBusinessAgentUiSkillsData, ListBusinessAgentUiSkillsError, ListBusinessAgentUiSkillsResponse, CreateBusinessAgentUiSkillData, CreateBusinessAgentUiSkillError, CreateBusinessAgentUiSkillResponse, GetBusinessAgentUiSkillData, GetBusinessAgentUiSkillError, GetBusinessAgentUiSkillResponse, UpdateBusinessAgentUiSkillData, UpdateBusinessAgentUiSkillError, UpdateBusinessAgentUiSkillResponse, DeleteBusinessAgentUiSkillData, DeleteBusinessAgentUiSkillError, DeleteBusinessAgentUiSkillResponse, ListBusinessAgentConnectorsData, ListBusinessAgentConnectorsError, ListBusinessAgentConnectorsResponse, CreateBusinessAgentConnectorData, CreateBusinessAgentConnectorError, CreateBusinessAgentConnectorResponse, GetBusinessAgentConnectorData, GetBusinessAgentConnectorError, GetBusinessAgentConnectorResponse, UpdateBusinessAgentConnectorData, UpdateBusinessAgentConnectorError, UpdateBusinessAgentConnectorResponse, DeleteBusinessAgentConnectorData, DeleteBusinessAgentConnectorError, DeleteBusinessAgentConnectorResponse, SetBusinessAgentConnectorCredentialsData, SetBusinessAgentConnectorCredentialsError, SetBusinessAgentConnectorCredentialsResponse, RefreshBusinessAgentConnectorToolsData, RefreshBusinessAgentConnectorToolsError, RefreshBusinessAgentConnectorToolsResponse, GetBusinessAgentConnectorLogsData, GetBusinessAgentConnectorLogsError, GetBusinessAgentConnectorLogsResponse, ListBusinessAgentConnectorToolsData, ListBusinessAgentConnectorToolsError, ListBusinessAgentConnectorToolsResponse, CreateBusinessAgentConnectorToolData, CreateBusinessAgentConnectorToolError, CreateBusinessAgentConnectorToolResponse, GetBusinessAgentConnectorToolData, GetBusinessAgentConnectorToolError, GetBusinessAgentConnectorToolResponse, UpdateBusinessAgentConnectorToolData, UpdateBusinessAgentConnectorToolError, UpdateBusinessAgentConnectorToolResponse, DeleteBusinessAgentConnectorToolData, DeleteBusinessAgentConnectorToolError, DeleteBusinessAgentConnectorToolResponse, RunBusinessAgentConnectorToolData, RunBusinessAgentConnectorToolError, RunBusinessAgentConnectorToolResponse, GetBusinessAgentBudgetData, GetBusinessAgentBudgetError, GetBusinessAgentBudgetResponse, ReplaceBusinessAgentBudgetData, ReplaceBusinessAgentBudgetError, ReplaceBusinessAgentBudgetResponse, SendBusinessAgentTestMessageData, SendBusinessAgentTestMessageError, SendBusinessAgentTestMessageResponse, SendBusinessAgentEventData, SendBusinessAgentEventError, SendBusinessAgentEventResponse, GetBusinessAgentEventData, GetBusinessAgentEventError, GetBusinessAgentEventResponse, ReadBusinessAgentEvalsData, ReadBusinessAgentEvalsError, ReadBusinessAgentEvalsResponse, StartBusinessAgentEvalRunData, StartBusinessAgentEvalRunError, StartBusinessAgentEvalRunResponse, ListTrackingTagsData, ListTrackingTagsError, ListTrackingTagsResponse, CreateTrackingTagData, CreateTrackingTagError, CreateTrackingTagResponse, GetTrackingTagData, GetTrackingTagError, GetTrackingTagResponse, UpdateTrackingTagData, UpdateTrackingTagError, UpdateTrackingTagResponse, ListTrackingTagSharedAccountsData, ListTrackingTagSharedAccountsError, ListTrackingTagSharedAccountsResponse, AddTrackingTagSharedAccountData, AddTrackingTagSharedAccountError, AddTrackingTagSharedAccountResponse, RemoveTrackingTagSharedAccountData, RemoveTrackingTagSharedAccountError, RemoveTrackingTagSharedAccountResponse, GetTrackingTagStatsData, GetTrackingTagStatsError, GetTrackingTagStatsResponse, ListBlogsData, ListBlogsError, ListBlogsResponse, CreateBlogData, CreateBlogError, CreateBlogResponse, GetBlogData, GetBlogError, GetBlogResponse, UpdateBlogData, UpdateBlogError, UpdateBlogResponse, DeleteBlogData, DeleteBlogError, DeleteBlogResponse, ListBlogArticlesData, ListBlogArticlesError, ListBlogArticlesResponse, CreateBlogArticleData, CreateBlogArticleError, CreateBlogArticleResponse, GetBlogArticleData, GetBlogArticleError, GetBlogArticleResponse, UpdateBlogArticleData, UpdateBlogArticleError, UpdateBlogArticleResponse, DeleteBlogArticleData, DeleteBlogArticleError, DeleteBlogArticleResponse, CreateVerificationData, CreateVerificationError, CreateVerificationResponse, GetVerificationData, GetVerificationError, GetVerificationResponse, CheckVerificationData, CheckVerificationError, CheckVerificationResponse } from './types.gen';
|
|
5
5
|
|
|
6
6
|
export const client = createClient(createConfig());
|
|
7
7
|
|
|
@@ -9,11 +9,11 @@ export const client = createClient(createConfig());
|
|
|
9
9
|
* Validate character count
|
|
10
10
|
* Check weighted character count per platform and whether the text is within each platform's limit.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* X uses weighted counting (URLs = 23 chars via t.co, emojis = 2 chars). All other platforms use plain character length.
|
|
13
13
|
*
|
|
14
14
|
* Returns counts and limits for all 15 supported platform variants.
|
|
15
15
|
*
|
|
16
|
-
* X
|
|
16
|
+
* X returns two rows and this endpoint cannot tell you which one applies to you: it takes only `text`, so it never resolves an account. `twitter` (280) is the free tier limit. `twitterPremium` (25000) applies only when the target X account has a paid X subscription, and publishing enforces 280 instead for any post carrying a poll (this endpoint has no poll input, so the `twitterPremium` row always shows 25000). A free account trusting the `twitterPremium` row can pass validation here and still fail at publish time, where the account's real limit is enforced.
|
|
17
17
|
*
|
|
18
18
|
* To validate against the per-account limit, use `POST /v1/tools/validate/post` instead: it accepts an `accountId` per platform entry, resolves X Premium status, and checks the text against the limit publishing enforces, including the poll cap. A missing, foreign, or invalid `accountId` falls back to the conservative 280.
|
|
19
19
|
*
|
|
@@ -122,7 +122,7 @@ export const getAnalytics = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
122
122
|
* behind a cursor you have already advanced past. A read issued the instant an
|
|
123
123
|
* `analytics.synced` webhook lands will therefore often return an empty page for
|
|
124
124
|
* that account. Do not read an empty page as "nothing changed": poll again with the
|
|
125
|
-
* SAME cursor you
|
|
125
|
+
* SAME cursor you last used rather than advancing.
|
|
126
126
|
*
|
|
127
127
|
* **Repeats inside one instant.** A sync cycle occasionally records the same post
|
|
128
128
|
* twice at the same feed position. When that happens the feed delivers one of those
|
|
@@ -464,7 +464,7 @@ export const getPostTimeline = <ThrowOnError extends boolean = false>(options: O
|
|
|
464
464
|
};
|
|
465
465
|
|
|
466
466
|
/**
|
|
467
|
-
* Get
|
|
467
|
+
* Get Google Business Profile performance metrics
|
|
468
468
|
* Returns daily performance metrics for a Google Business Profile location.
|
|
469
469
|
* Metrics include impressions (Maps/Search, desktop/mobile), website clicks,
|
|
470
470
|
* call clicks, direction requests, conversations, bookings, and food orders.
|
|
@@ -480,7 +480,7 @@ export const getGoogleBusinessPerformance = <ThrowOnError extends boolean = fals
|
|
|
480
480
|
};
|
|
481
481
|
|
|
482
482
|
/**
|
|
483
|
-
* Get
|
|
483
|
+
* Get Google Business Profile search keywords
|
|
484
484
|
* Returns search keywords that triggered impressions for a Google Business Profile location.
|
|
485
485
|
* Data is aggregated monthly. Keywords below a minimum impression threshold set by Google are excluded.
|
|
486
486
|
* Max 18 months of historical data. Requires the Analytics add-on.
|
|
@@ -511,7 +511,7 @@ export const getInboxVolume = <ThrowOnError extends boolean = false>(options: Op
|
|
|
511
511
|
/**
|
|
512
512
|
* Get day × hour heatmap
|
|
513
513
|
* Day-of-week × hour-of-day breakdown of inbox messages. Buckets are
|
|
514
|
-
* sparse
|
|
514
|
+
* sparse: only cells with at least one event are returned; clients
|
|
515
515
|
* zero-fill the rest to render the full 7×24 grid. The `dow` field
|
|
516
516
|
* follows ClickHouse's `toDayOfWeek` convention (1 = Monday … 7 =
|
|
517
517
|
* Sunday). Max date range is 365 days.
|
|
@@ -548,7 +548,7 @@ export const getInboxSourceBreakdown = <ThrowOnError extends boolean = false>(op
|
|
|
548
548
|
* for the analytics page's TTR chart.
|
|
549
549
|
*
|
|
550
550
|
* `sampleSize` reflects only conversations that received AND got a
|
|
551
|
-
* reply in the window
|
|
551
|
+
* reply in the window. Received-but-never-answered conversations
|
|
552
552
|
* are excluded. Compare against /v1/analytics/inbox/volume's
|
|
553
553
|
* `summary.received` to compute reply rate.
|
|
554
554
|
*
|
|
@@ -564,9 +564,9 @@ export const getInboxResponseTime = <ThrowOnError extends boolean = false>(optio
|
|
|
564
564
|
|
|
565
565
|
/**
|
|
566
566
|
* Get top accounts by inbox volume
|
|
567
|
-
* Leaderboard of
|
|
567
|
+
* Leaderboard of accounts by inbox message volume. Decorates
|
|
568
568
|
* each row with display labels from the live SocialAccount record
|
|
569
|
-
* (so the UI shows username + displayName, not
|
|
569
|
+
* (so the UI shows username + displayName, not only an ID). Accounts
|
|
570
570
|
* that no longer map to a SocialAccount surface as "(disconnected)"
|
|
571
571
|
* so the row stays visible. Max date range is 365 days.
|
|
572
572
|
*
|
|
@@ -581,7 +581,7 @@ export const getInboxTopAccounts = <ThrowOnError extends boolean = false>(option
|
|
|
581
581
|
/**
|
|
582
582
|
* List conversation analytics
|
|
583
583
|
* Per-conversation listing with per-row totals + first/last message
|
|
584
|
-
* timestamps. The inbox analog of GET /v1/analytics (posts listing)
|
|
584
|
+
* timestamps. The inbox analog of GET /v1/analytics (posts listing):
|
|
585
585
|
* same filter shape, same pagination, same sort/order semantics.
|
|
586
586
|
* Use as the entry point for the per-conversation analytics drawer
|
|
587
587
|
* at /v1/analytics/inbox/conversations/{conversationId}.
|
|
@@ -602,7 +602,7 @@ export const listInboxConversationAnalytics = <ThrowOnError extends boolean = fa
|
|
|
602
602
|
/**
|
|
603
603
|
* Get conversation analytics
|
|
604
604
|
* Per-conversation inbox analytics. The inbox analog of
|
|
605
|
-
* /v1/analytics/post-timeline
|
|
605
|
+
* /v1/analytics/post-timeline: one conversation, daily totals,
|
|
606
606
|
* source mix.
|
|
607
607
|
*
|
|
608
608
|
* The {conversationId} path param accepts EITHER the Mongo `_id` of
|
|
@@ -638,7 +638,7 @@ export const listAccountGroups = <ThrowOnError extends boolean = false>(options?
|
|
|
638
638
|
|
|
639
639
|
/**
|
|
640
640
|
* Create group
|
|
641
|
-
* Creates a new account group with a name and a list of
|
|
641
|
+
* Creates a new account group with a name and a list of account IDs.
|
|
642
642
|
* Accounts can belong to different profiles; the caller must have access to
|
|
643
643
|
* every account's profile. Group names must be unique per user.
|
|
644
644
|
*
|
|
@@ -710,10 +710,10 @@ export const getRedditFeed = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
710
710
|
* The billing "wallet/statement" view: current plan, billing cycle,
|
|
711
711
|
* accrued balance + remaining credits this period, spend caps, and
|
|
712
712
|
* payment / access status. This is the billing half of the legacy
|
|
713
|
-
* `/v1/usage-stats` snapshot
|
|
713
|
+
* `/v1/usage-stats` snapshot. The per-product consumption half is metering
|
|
714
714
|
* and lives on `GET /v1/usage`.
|
|
715
715
|
*
|
|
716
|
-
*
|
|
716
|
+
* Accounts on usage-based billing get a populated `balance`; legacy Stripe
|
|
717
717
|
* accounts get `balance: null` plus a deprecated `legacy.limits` block and,
|
|
718
718
|
* when payment-blocked, `status.openInvoiceUrl` / `status.declineReason`.
|
|
719
719
|
*
|
|
@@ -726,16 +726,16 @@ export const getBilling = <ThrowOnError extends boolean = false>(options?: Optio
|
|
|
726
726
|
};
|
|
727
727
|
|
|
728
728
|
/**
|
|
729
|
-
* Get X
|
|
730
|
-
* Returns Zernio's canonical X
|
|
731
|
-
* own
|
|
729
|
+
* Get X API pricing table
|
|
730
|
+
* Returns Zernio's canonical X API pricing table. Each X action has its
|
|
731
|
+
* own billing product and its own rate, and Zernio passes X API costs through
|
|
732
732
|
* at exact rates with zero markup.
|
|
733
733
|
*
|
|
734
734
|
* The response is identical for every authenticated user (pricing is universal),
|
|
735
735
|
* so it is safe to cache on the client for the duration of a billing period.
|
|
736
736
|
*
|
|
737
737
|
* To compute your own per-operation spend, pair this endpoint with
|
|
738
|
-
* `GET /v1/usage-stats
|
|
738
|
+
* `GET /v1/usage-stats`, which returns `usage.xApiCallsByOperation`
|
|
739
739
|
* keyed by the same `operation` field you get here.
|
|
740
740
|
*
|
|
741
741
|
*/
|
|
@@ -748,20 +748,20 @@ export const getXApiPricing = <ThrowOnError extends boolean = false>(options?: O
|
|
|
748
748
|
|
|
749
749
|
/**
|
|
750
750
|
* Usage snapshot (default) or billed-spend metering (with params)
|
|
751
|
-
* Dual-mode endpoint, selected by query params
|
|
751
|
+
* Dual-mode endpoint, selected by query params, and fully backward
|
|
752
752
|
* compatible:
|
|
753
753
|
*
|
|
754
754
|
* **Without metering params (the default):** the plan / quota / usage
|
|
755
|
-
* snapshot
|
|
755
|
+
* snapshot: plan name, billing period, limits, usage counts, access
|
|
756
756
|
* state. Identical to `GET /v1/usage-stats`. Existing integrations keep
|
|
757
757
|
* working unchanged.
|
|
758
758
|
*
|
|
759
|
-
* **With `range`, `granularity`, `from`, or `to`:** usage METERING
|
|
759
|
+
* **With `range`, `granularity`, `from`, or `to`:** usage METERING:
|
|
760
760
|
* billed spend (USD) by product family (`accounts`, `numbers`, `calls`,
|
|
761
761
|
* `sms`, `dlc`, `xApi`, `credits`, `other`) over the window, at
|
|
762
|
-
* `day` / `month` / `total` granularity, from
|
|
763
|
-
* breakdown (the CHARGE view
|
|
764
|
-
* Also served at `GET /v1/usage/daily`. Usage-based accounts only
|
|
762
|
+
* `day` / `month` / `total` granularity, from the usage-based invoice
|
|
763
|
+
* breakdown (the CHARGE view, which always reconciles with what gets billed).
|
|
764
|
+
* Also served at `GET /v1/usage/daily`. Usage-based accounts only:
|
|
765
765
|
* legacy Stripe accounts get `{ "supported": false, "days": [] }`.
|
|
766
766
|
*
|
|
767
767
|
* **Attribution (metering mode):** `groupBy=profile|account` adds an
|
|
@@ -770,7 +770,7 @@ export const getXApiPricing = <ThrowOnError extends boolean = false>(options?: O
|
|
|
770
770
|
* `sum(groups) + unattributed` equals `totals` exactly. `profileId` /
|
|
771
771
|
* `accountId` instead project the whole payload (`days`, `totals`,
|
|
772
772
|
* `lineItems`) onto that one group; `peaks`, `callUsage` and `tax` are
|
|
773
|
-
* then `null` (
|
|
773
|
+
* then `null` (team-level facts). Projected `days` spread the
|
|
774
774
|
* group's period share over each day (usage is attributed per period,
|
|
775
775
|
* not per day). Profile-scoped API keys and members only see their
|
|
776
776
|
* profiles' groups (`attribution.restricted: true`, with `totals`
|
|
@@ -802,13 +802,13 @@ export const getUsage = <ThrowOnError extends boolean = false>(options?: Options
|
|
|
802
802
|
*
|
|
803
803
|
* The response shape depends on the account's `billingSystem`:
|
|
804
804
|
* * Stripe users: per-period `usage.uploads` / `usage.profiles` counters.
|
|
805
|
-
* *
|
|
806
|
-
* `usage.xApiCallsByOperation` (per-operation X API call counts
|
|
805
|
+
* * Usage-based billing users: `usage.connectedAccounts`,
|
|
806
|
+
* `usage.xApiCallsByOperation` (per-operation X API call counts;
|
|
807
807
|
* resolve keys via `GET /v1/billing/x-pricing`), plus a `spend`
|
|
808
808
|
* block with `currentPeriodCents`, `xSpendCents`, and
|
|
809
809
|
* `xSpendLimitCents`. The legacy `usage.xApiCalls` 3-tier
|
|
810
810
|
* aggregate is still emitted for back-compat but excludes the
|
|
811
|
-
* $0.200 URL tier and any future tiers
|
|
811
|
+
* $0.200 URL tier and any future tiers, so new clients should
|
|
812
812
|
* consume `xApiCallsByOperation` only.
|
|
813
813
|
*
|
|
814
814
|
*/
|
|
@@ -873,26 +873,47 @@ export const listPosts = <ThrowOnError extends boolean = false>(options?: Option
|
|
|
873
873
|
|
|
874
874
|
/**
|
|
875
875
|
* Create post
|
|
876
|
-
* Create and optionally publish
|
|
877
|
-
*
|
|
876
|
+
* Create a post, and optionally publish it in the same request. A post published immediately (`publishNow: true`) comes back with `platformPostUrl` in the response.
|
|
877
|
+
*
|
|
878
|
+
* `content` is optional in four cases:
|
|
879
|
+
*
|
|
880
|
+
* - media is attached
|
|
881
|
+
* - all platforms have `customContent`
|
|
882
|
+
* - every platform entry is an X Article (`platformSpecificData.article`)
|
|
883
|
+
* - every platform entry is a LinkedIn text-free reshare (`platformSpecificData.reshareUrl` with no text)
|
|
884
|
+
*
|
|
885
|
+
* See each platform's schema for media constraints.
|
|
878
886
|
*
|
|
879
887
|
* ## Scheduling
|
|
880
888
|
*
|
|
881
|
-
* Pick one of
|
|
889
|
+
* Pick one of:
|
|
890
|
+
*
|
|
891
|
+
* - `scheduledFor`: publish at the scheduled time
|
|
892
|
+
* - `publishNow: true`: publish synchronously, inside this request
|
|
893
|
+
* - `queuedFromProfile`: publish in the profile's next queue slot
|
|
894
|
+
*
|
|
895
|
+
* With none of them and `isDraft` unset, the post is saved as a draft. `platforms` is required unless the post is a draft.
|
|
896
|
+
*
|
|
897
|
+
* Precedence: `isDraft: true` wins over `publishNow` and `scheduledFor` (the post is saved, never published), and `publishNow: true` wins over `scheduledFor`. A `scheduledFor` already in the past is not rejected: the post is published synchronously in the same request, exactly like `publishNow`.
|
|
882
898
|
*
|
|
883
899
|
* ## Idempotency
|
|
884
900
|
*
|
|
885
901
|
* Two layers of duplicate-protection apply, so safe-to-retry callers (network blips, n8n / Zapier retries, etc.) don't accidentally double-post.
|
|
886
902
|
*
|
|
887
903
|
* **1. Same-request idempotency (5-minute window).**
|
|
888
|
-
* Pass an `x-request-id` header to mark a logical request. If a second request arrives with the same `x-request-id` while the first is in-flight (or within ~5 minutes of completion), we return **HTTP 200** with the original post in the `existingPost` field
|
|
889
|
-
*
|
|
890
|
-
* -
|
|
904
|
+
* Pass an `x-request-id` header to mark a logical request. If a second request arrives with the same `x-request-id` while the first is in-flight (or within ~5 minutes of completion), we return **HTTP 200** with the original post in the `existingPost` field, and no new post is created.
|
|
905
|
+
*
|
|
906
|
+
* The official Zernio SDKs auto-generate a unique `x-request-id` per call. On a generic HTTP client (curl, n8n's HTTP node, Zapier, custom code), either:
|
|
907
|
+
*
|
|
908
|
+
* - Set a unique `x-request-id` per logical call (recommended, UUIDv4 is fine)
|
|
909
|
+
* - Or omit the header, and we'll treat each request as new
|
|
891
910
|
*
|
|
892
911
|
* **Common pitfall**: if your workflow tool uses a single execution-level request ID and reuses it across multiple HTTP nodes (e.g. one ID for the whole run, shared across 6 different platform calls), every call after the first will look like a retry of the first and return its post. Generate a fresh ID per node.
|
|
893
912
|
*
|
|
894
913
|
* **2. Content-hash dedup (24-hour window).**
|
|
895
|
-
* Independently, we hash `(platform, accountId, content + media URLs)` and reject duplicates within 24 hours with **HTTP 409**. This catches genuine "same content posted twice to the same account" cases regardless of `x-request-id`.
|
|
914
|
+
* Independently, we hash `(platform, accountId, content + media URLs)` and reject duplicates within 24 hours with **HTTP 409**. This catches genuine "same content posted twice to the same account" cases regardless of `x-request-id`. The response carries `error`, `accountId`, `platform`, and `existingPostId` so you can find the original.
|
|
915
|
+
*
|
|
916
|
+
* To intentionally re-post identical content within 24h, change something (the caption, the media, the account), because the dedup is keyed on the full content fingerprint.
|
|
896
917
|
*
|
|
897
918
|
* Order: same-`x-request-id` retries (200) are checked first; if no idempotency match, the content-hash dedup (409) runs.
|
|
898
919
|
*
|
|
@@ -906,16 +927,16 @@ export const createPost = <ThrowOnError extends boolean = false>(options: Option
|
|
|
906
927
|
|
|
907
928
|
/**
|
|
908
929
|
* Sync an external post
|
|
909
|
-
* Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a
|
|
930
|
+
* Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a newly published post is retrievable within seconds instead of waiting for the background sync (which refreshes each account at most every ~90 minutes).
|
|
910
931
|
*
|
|
911
932
|
* Primary use case: verifying a submitted post. When a user publishes on the platform and immediately pastes the post URL into your app, call this with `accountId` plus `url` (or `postId`) to confirm the post exists and return its metadata.
|
|
912
933
|
*
|
|
913
934
|
* Behavior:
|
|
914
935
|
* - We check our stored copy first and return immediately if the post is already known (no platform call).
|
|
915
936
|
* - Otherwise we fetch the account's latest posts live from the platform, then match and return the submitted post.
|
|
916
|
-
* - Requests are debounced per account (~15s): if the account was
|
|
937
|
+
* - Requests are debounced per account (~15s): if the account was synced inside that window, the live fetch is skipped.
|
|
917
938
|
*
|
|
918
|
-
* `accountId` is required
|
|
939
|
+
* `accountId` is required, because a post URL or id alone cannot be resolved to an account, and the account must be connected to Zernio (we use its token to read the platform). Supported for every platform with a listing API (Instagram, Facebook, TikTok, YouTube, X, Threads, Pinterest, Reddit, Bluesky, Google Business Profile, and LinkedIn organization accounts).
|
|
919
940
|
*
|
|
920
941
|
* LinkedIn personal profiles: LinkedIn has no listing API for personal profiles, so a `url` is REQUIRED and imports that single post. Pass any LinkedIn post URL (`linkedin.com/posts/…`, `linkedin.com/feed/update/urn:li:activity:…`) or a `urn:li:share:…` / `urn:li:ugcPost:…` URN. Works for posts published outside Zernio and before the account was connected, any age; the post must be authored by the connected member. Imported posts return full analytics (impressions, reach, reactions, comments, reshares, saves) and keep refreshing on the background analytics cycle, but carry no content/media (LinkedIn does not expose them for personal profiles).
|
|
921
942
|
*
|
|
@@ -1035,13 +1056,13 @@ export const unpublishPost = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
1035
1056
|
|
|
1036
1057
|
/**
|
|
1037
1058
|
* Edit published post
|
|
1038
|
-
* Edit the text of an already-published post. Supported on X
|
|
1059
|
+
* Edit the text of an already-published post. Supported on X, Discord,
|
|
1039
1060
|
* Facebook, Reddit, LinkedIn, Telegram, Pinterest, Google Business Profile, YouTube,
|
|
1040
1061
|
* and Slack. When a post was published to several accounts on the same platform,
|
|
1041
1062
|
* pass `accountId` to pick which account's copy to edit (the first entry is edited
|
|
1042
1063
|
* otherwise). Each platform enforces its own rules:
|
|
1043
1064
|
*
|
|
1044
|
-
* **X
|
|
1065
|
+
* **X**
|
|
1045
1066
|
* - Connected X account must have an active X Premium subscription
|
|
1046
1067
|
* - Must be within 1 hour of original publish time
|
|
1047
1068
|
* - Maximum 5 edits per tweet (enforced by X)
|
|
@@ -1127,7 +1148,7 @@ export const editPost = <ThrowOnError extends boolean = false>(options: OptionsL
|
|
|
1127
1148
|
*
|
|
1128
1149
|
* 1. Post-based (video published through Zernio): pass the Zernio postId in the URL and platform in the body.
|
|
1129
1150
|
* 2. Direct video ID (video uploaded outside Zernio, e.g. directly to YouTube): use _ as the postId,
|
|
1130
|
-
* and pass videoId + accountId + platform in the body. The accountId is the Zernio
|
|
1151
|
+
* and pass videoId + accountId + platform in the body. The accountId is the Zernio account ID
|
|
1131
1152
|
* for the connected YouTube channel.
|
|
1132
1153
|
*
|
|
1133
1154
|
*/
|
|
@@ -1140,7 +1161,7 @@ export const updatePostMetadata = <ThrowOnError extends boolean = false>(options
|
|
|
1140
1161
|
|
|
1141
1162
|
/**
|
|
1142
1163
|
* List users
|
|
1143
|
-
* Returns all users in the
|
|
1164
|
+
* Returns all users in the team including roles and profile access. Also returns the currentUserId of the caller.
|
|
1144
1165
|
*/
|
|
1145
1166
|
export const listUsers = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<unknown, ThrowOnError>) => {
|
|
1146
1167
|
return (options?.client ?? client).get<ListUsersResponse, ListUsersError, ThrowOnError>({
|
|
@@ -1173,7 +1194,7 @@ export const listProfiles = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
1173
1194
|
|
|
1174
1195
|
/**
|
|
1175
1196
|
* Create profile
|
|
1176
|
-
* Creates a new profile with a name, optional description, and color. Names are unique per
|
|
1197
|
+
* Creates a new profile with a name, optional description, and color. Names are unique per team: a duplicate returns a 409 whose details.existingProfileId carries the id of the existing profile. Send an Idempotency-Key header to make retries safe: a retried create with the same key and body replays the original 201 (same _id) instead of conflicting.
|
|
1177
1198
|
*/
|
|
1178
1199
|
export const createProfile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateProfileData, ThrowOnError>) => {
|
|
1179
1200
|
return (options?.client ?? client).post<CreateProfileResponse, CreateProfileError, ThrowOnError>({
|
|
@@ -1217,7 +1238,7 @@ export const deleteProfile = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
1217
1238
|
|
|
1218
1239
|
/**
|
|
1219
1240
|
* List accounts
|
|
1220
|
-
* Returns connected
|
|
1241
|
+
* Returns connected accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on.
|
|
1221
1242
|
* Supports optional server-side pagination via page/limit params. When omitted, returns all accounts (backward-compatible).
|
|
1222
1243
|
* page and limit must be supplied together; out-of-range page/limit values are rejected with 400 rather than silently clamped.
|
|
1223
1244
|
*
|
|
@@ -1231,7 +1252,7 @@ export const listAccounts = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
1231
1252
|
|
|
1232
1253
|
/**
|
|
1233
1254
|
* Get follower stats
|
|
1234
|
-
* Returns follower count history and growth metrics for connected
|
|
1255
|
+
* Returns follower count history and growth metrics for connected accounts.
|
|
1235
1256
|
* Requires analytics add-on subscription. Follower counts are refreshed once per day.
|
|
1236
1257
|
*
|
|
1237
1258
|
*/
|
|
@@ -1244,11 +1265,11 @@ export const getFollowerStats = <ThrowOnError extends boolean = false>(options?:
|
|
|
1244
1265
|
|
|
1245
1266
|
/**
|
|
1246
1267
|
* Update account
|
|
1247
|
-
* Updates a connected
|
|
1268
|
+
* Updates a connected account's display name or username override.
|
|
1248
1269
|
*
|
|
1249
|
-
* For X
|
|
1270
|
+
* For X accounts on usage-based billing, also accepts an `xCapabilities`
|
|
1250
1271
|
* object to toggle background API operations that incur X API pass-through costs.
|
|
1251
|
-
* Both fields are opt-in (default `false`)
|
|
1272
|
+
* Both fields are opt-in (default `false`). When off, no analytics syncs or DM
|
|
1252
1273
|
* polling are performed for that account, and no API call is metered for those
|
|
1253
1274
|
* operations. Publishing and deleting posts are always available regardless of
|
|
1254
1275
|
* these toggles. Setting `xCapabilities` on a non-X account returns 400.
|
|
@@ -1263,7 +1284,7 @@ export const updateAccount = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
1263
1284
|
|
|
1264
1285
|
/**
|
|
1265
1286
|
* Move account to another profile
|
|
1266
|
-
* Moves a connected
|
|
1287
|
+
* Moves a connected account to a different profile owned by the same
|
|
1267
1288
|
* user. The target profile must belong to the same user as the account.
|
|
1268
1289
|
*
|
|
1269
1290
|
* For API keys restricted to specific profiles, BOTH the source account's
|
|
@@ -1280,7 +1301,7 @@ export const moveAccountToProfile = <ThrowOnError extends boolean = false>(optio
|
|
|
1280
1301
|
|
|
1281
1302
|
/**
|
|
1282
1303
|
* Disconnect account
|
|
1283
|
-
* Disconnects and removes a connected
|
|
1304
|
+
* Disconnects and removes a connected account. Repeating the call for an account already disconnected returns 404, the account stays in its 1h grace window and the disconnect is not re-run.
|
|
1284
1305
|
*/
|
|
1285
1306
|
export const deleteAccount = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAccountData, ThrowOnError>) => {
|
|
1286
1307
|
return (options?.client ?? client).delete<DeleteAccountResponse, DeleteAccountError, ThrowOnError>({
|
|
@@ -1316,6 +1337,37 @@ export const registerWhatsAppNumber = <ThrowOnError extends boolean = false>(opt
|
|
|
1316
1337
|
});
|
|
1317
1338
|
};
|
|
1318
1339
|
|
|
1340
|
+
/**
|
|
1341
|
+
* Request a Meta re-verification code for a BYO WhatsApp number
|
|
1342
|
+
* For a bring-your-own WhatsApp number (its own WABA, migrated off another BSP) that
|
|
1343
|
+
* Meta demoted to re-verification, this requests a new OTP from Meta. The code lands
|
|
1344
|
+
* on the customer's own handset, so verifying it is necessarily self-service; call
|
|
1345
|
+
* POST /v1/accounts/{accountId}/whatsapp/verify-code with the code once it arrives.
|
|
1346
|
+
* Rate-limited to one request per 10 minutes per account, and Meta enforces its own
|
|
1347
|
+
* cooldown on top of that.
|
|
1348
|
+
*
|
|
1349
|
+
*/
|
|
1350
|
+
export const requestWhatsAppVerificationCode = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RequestWhatsAppVerificationCodeData, ThrowOnError>) => {
|
|
1351
|
+
return (options?.client ?? client).post<RequestWhatsAppVerificationCodeResponse, RequestWhatsAppVerificationCodeError, ThrowOnError>({
|
|
1352
|
+
...options,
|
|
1353
|
+
url: '/v1/accounts/{accountId}/whatsapp/request-code'
|
|
1354
|
+
});
|
|
1355
|
+
};
|
|
1356
|
+
|
|
1357
|
+
/**
|
|
1358
|
+
* Verify the Meta re-verification code for a BYO WhatsApp number
|
|
1359
|
+
* Submits the OTP Meta sent in response to POST /v1/accounts/{accountId}/whatsapp/request-code.
|
|
1360
|
+
* This only verifies the number with Meta; it does not register it on the Cloud API.
|
|
1361
|
+
* Call POST /v1/accounts/{accountId}/whatsapp/register afterward to complete activation.
|
|
1362
|
+
*
|
|
1363
|
+
*/
|
|
1364
|
+
export const verifyWhatsAppNumber = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<VerifyWhatsAppNumberData, ThrowOnError>) => {
|
|
1365
|
+
return (options?.client ?? client).post<VerifyWhatsAppNumberResponse, VerifyWhatsAppNumberError, ThrowOnError>({
|
|
1366
|
+
...options,
|
|
1367
|
+
url: '/v1/accounts/{accountId}/whatsapp/verify-code'
|
|
1368
|
+
});
|
|
1369
|
+
};
|
|
1370
|
+
|
|
1319
1371
|
/**
|
|
1320
1372
|
* Check account health
|
|
1321
1373
|
* Returns detailed health info for a specific account including token status, permissions, and recommendations.
|
|
@@ -1522,7 +1574,7 @@ export const getConnectUrl = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
1522
1574
|
* Complete OAuth callback
|
|
1523
1575
|
* Exchange the OAuth authorization code for tokens and connect the account to the specified profile.
|
|
1524
1576
|
*
|
|
1525
|
-
* Facebook, Google Business, Snapchat and WhatsApp are not accepted here: their account identity is a destination chosen after OAuth, which this single-shot exchange cannot do. Connect them through the redirect flow from `GET /v1/connect/{platform}`, or, for WhatsApp Embedded Signup, through `POST /v1/connect/whatsapp/embedded-signup`.
|
|
1577
|
+
* Facebook, Google Business Profile, Snapchat and WhatsApp are not accepted here: their account identity is a destination chosen after OAuth, which this single-shot exchange cannot do. Connect them through the redirect flow from `GET /v1/connect/{platform}`, or, for WhatsApp Embedded Signup, through `POST /v1/connect/whatsapp/embedded-signup`.
|
|
1526
1578
|
*
|
|
1527
1579
|
*/
|
|
1528
1580
|
export const handleOAuthCallback = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<HandleOAuthCallbackData, ThrowOnError>) => {
|
|
@@ -1536,16 +1588,17 @@ export const handleOAuthCallback = <ThrowOnError extends boolean = false>(option
|
|
|
1536
1588
|
* Connect ads for a platform
|
|
1537
1589
|
* Unified ads connection endpoint. Creates a dedicated ads SocialAccount for the specified platform.
|
|
1538
1590
|
*
|
|
1539
|
-
* Same-token platforms (facebook, instagram, linkedin, pinterest)
|
|
1591
|
+
* **Same-token platforms (facebook, instagram, linkedin, pinterest).** The ads SocialAccount
|
|
1540
1592
|
* (metaads, linkedinads, pinterestads) reuses the OAuth token of the parent posting account,
|
|
1541
1593
|
* but only when an active parent exists and, for facebook and instagram, its stored token
|
|
1542
1594
|
* carries ads_management and ads_read (linkedin and pinterest need no extra scope). In that
|
|
1543
|
-
* case no extra OAuth happens and the response is alreadyConnected: true.
|
|
1544
|
-
*
|
|
1545
|
-
*
|
|
1546
|
-
*
|
|
1547
|
-
*
|
|
1548
|
-
*
|
|
1595
|
+
* case no extra OAuth happens and the response is alreadyConnected: true.
|
|
1596
|
+
*
|
|
1597
|
+
* When no such parent exists, or the scopes are missing, the endpoint returns an authUrl and a
|
|
1598
|
+
* full OAuth round trip is required. When a parent exists but carries no token usable for ad
|
|
1599
|
+
* accounts, the call fails with 400 RECONNECT_REQUIRED. Independently of the branch, the call
|
|
1600
|
+
* can return 403 ADS_ADDON_REQUIRED without the ads add-on and 402 PAYMENT_REQUIRED when the
|
|
1601
|
+
* billing gate is closed.
|
|
1549
1602
|
*
|
|
1550
1603
|
* Meta Ads prerequisite: connecting Meta Ads (via facebook or instagram) requires a Facebook
|
|
1551
1604
|
* Page. Not because the ad account is read through a Page, but because both parent posting
|
|
@@ -1555,11 +1608,15 @@ export const handleOAuthCallback = <ThrowOnError extends boolean = false>(option
|
|
|
1555
1608
|
* Facebook Page cannot complete this connection, and the facebook flow ends with
|
|
1556
1609
|
* error=no_facebook_pages.
|
|
1557
1610
|
*
|
|
1558
|
-
* Separate-token platforms (tiktok, twitter)
|
|
1559
|
-
*
|
|
1560
|
-
*
|
|
1611
|
+
* **Separate-token platforms (tiktok, twitter).** Starts the platform-specific marketing API
|
|
1612
|
+
* OAuth flow and creates an ads SocialAccount (tiktokads, xads) with its own token. If the ads
|
|
1613
|
+
* account already exists, returns alreadyConnected: true.
|
|
1614
|
+
* - tiktok: accountId is OPTIONAL. With accountId, the new tiktokads account links to that posting account (parentAccountId set), so Spark Ads + standalone ads using the posting TT_USER identity become available. Without accountId, ads-only mode kicks in: the new tiktokads account has parentAccountId=null and standalone ads use a synthetic CUSTOMIZED_USER ("Brand Identity"); Spark Ads are unavailable because TikTok requires a posting account for them. The Brand Identity is configured separately via PATCH /v1/connect/tiktok-ads (or inline on POST /v1/ads/create via the brandIdentity field).
|
|
1615
|
+
* - twitter (X Ads): accountId is REQUIRED. There's no ads-only mode, because tweets need to be authored by a real X user.
|
|
1561
1616
|
*
|
|
1562
|
-
* Standalone platforms (googleads)
|
|
1617
|
+
* **Standalone platforms (googleads).** Starts the Google Ads OAuth flow and creates a
|
|
1618
|
+
* standalone ads SocialAccount (googleads) with no parent. If the account already exists,
|
|
1619
|
+
* returns alreadyConnected: true.
|
|
1563
1620
|
*
|
|
1564
1621
|
* Ads accounts appear as regular SocialAccount documents with ads platform values (e.g., metaads, tiktokads) in GET /v1/accounts.
|
|
1565
1622
|
*
|
|
@@ -1697,8 +1754,8 @@ export const selectInstagramAccount = <ThrowOnError extends boolean = false>(opt
|
|
|
1697
1754
|
};
|
|
1698
1755
|
|
|
1699
1756
|
/**
|
|
1700
|
-
* List
|
|
1701
|
-
* For headless flows. Returns the list of
|
|
1757
|
+
* List Google Business Profile locations
|
|
1758
|
+
* For headless flows. Returns the list of Google Business Profile locations the user can manage. Use pendingDataToken (from the OAuth callback redirect) to list locations without consuming the token, so it remains available for select-location. Use X-Connect-Token header if connecting via API key.
|
|
1702
1759
|
*
|
|
1703
1760
|
*/
|
|
1704
1761
|
export const listGoogleBusinessLocations = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListGoogleBusinessLocationsData, ThrowOnError>) => {
|
|
@@ -1709,8 +1766,8 @@ export const listGoogleBusinessLocations = <ThrowOnError extends boolean = false
|
|
|
1709
1766
|
};
|
|
1710
1767
|
|
|
1711
1768
|
/**
|
|
1712
|
-
* Select
|
|
1713
|
-
* Complete the headless
|
|
1769
|
+
* Select Google Business Profile location
|
|
1770
|
+
* Complete the headless Google Business Profile flow by saving the user's selected location. The pendingDataToken is returned in your redirect URL after OAuth completes (step=select_location). Tokens and profile data are stored server-side, so only the pendingDataToken is needed here. Use X-Connect-Token header if connecting via API key.
|
|
1714
1771
|
*
|
|
1715
1772
|
*/
|
|
1716
1773
|
export const selectGoogleBusinessLocation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SelectGoogleBusinessLocationData, ThrowOnError>) => {
|
|
@@ -1722,7 +1779,7 @@ export const selectGoogleBusinessLocation = <ThrowOnError extends boolean = fals
|
|
|
1722
1779
|
|
|
1723
1780
|
/**
|
|
1724
1781
|
* Get reviews
|
|
1725
|
-
* Returns reviews for a
|
|
1782
|
+
* Returns reviews for a Google Business Profile account including ratings, comments, and owner replies. Use nextPageToken for pagination.
|
|
1726
1783
|
*/
|
|
1727
1784
|
export const getGoogleBusinessReviews = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessReviewsData, ThrowOnError>) => {
|
|
1728
1785
|
return (options?.client ?? client).get<GetGoogleBusinessReviewsResponse, GetGoogleBusinessReviewsError, ThrowOnError>({
|
|
@@ -1777,7 +1834,7 @@ export const completeGoogleBusinessVerification = <ThrowOnError extends boolean
|
|
|
1777
1834
|
|
|
1778
1835
|
/**
|
|
1779
1836
|
* Get food menus
|
|
1780
|
-
* Returns food menus for a
|
|
1837
|
+
* Returns food menus for a Google Business Profile location including sections, items, pricing, and dietary info. Only for locations with food menu support.
|
|
1781
1838
|
*/
|
|
1782
1839
|
export const getGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessFoodMenusData, ThrowOnError>) => {
|
|
1783
1840
|
return (options?.client ?? client).get<GetGoogleBusinessFoodMenusResponse, GetGoogleBusinessFoodMenusError, ThrowOnError>({
|
|
@@ -1788,7 +1845,7 @@ export const getGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>
|
|
|
1788
1845
|
|
|
1789
1846
|
/**
|
|
1790
1847
|
* Update food menus
|
|
1791
|
-
* Updates food menus for a
|
|
1848
|
+
* Updates food menus for a Google Business Profile location. Send the full menus array. Use updateMask for partial updates.
|
|
1792
1849
|
*/
|
|
1793
1850
|
export const updateGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGoogleBusinessFoodMenusData, ThrowOnError>) => {
|
|
1794
1851
|
return (options?.client ?? client).put<UpdateGoogleBusinessFoodMenusResponse, UpdateGoogleBusinessFoodMenusError, ThrowOnError>({
|
|
@@ -1799,7 +1856,7 @@ export const updateGoogleBusinessFoodMenus = <ThrowOnError extends boolean = fal
|
|
|
1799
1856
|
|
|
1800
1857
|
/**
|
|
1801
1858
|
* Get location details
|
|
1802
|
-
* Returns detailed
|
|
1859
|
+
* Returns detailed Google Business Profile location info (hours, description, phone, website, categories, services). Use readMask to request specific fields.
|
|
1803
1860
|
*/
|
|
1804
1861
|
export const getGoogleBusinessLocationDetails = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessLocationDetailsData, ThrowOnError>) => {
|
|
1805
1862
|
return (options?.client ?? client).get<GetGoogleBusinessLocationDetailsResponse, GetGoogleBusinessLocationDetailsError, ThrowOnError>({
|
|
@@ -1810,7 +1867,7 @@ export const getGoogleBusinessLocationDetails = <ThrowOnError extends boolean =
|
|
|
1810
1867
|
|
|
1811
1868
|
/**
|
|
1812
1869
|
* Update location details
|
|
1813
|
-
* Updates
|
|
1870
|
+
* Updates Google Business Profile location details. The updateMask field is required and specifies which fields to update.
|
|
1814
1871
|
* This endpoint proxies Google's Business Information API locations.patch, so any valid updateMask field is supported.
|
|
1815
1872
|
* Common fields: regularHours, specialHours, profile.description, websiteUri, phoneNumbers, categories, serviceItems.
|
|
1816
1873
|
*
|
|
@@ -1851,7 +1908,7 @@ export const createGoogleBusinessMedia = <ThrowOnError extends boolean = false>(
|
|
|
1851
1908
|
|
|
1852
1909
|
/**
|
|
1853
1910
|
* Delete photo
|
|
1854
|
-
* Deletes a photo or media item from a
|
|
1911
|
+
* Deletes a photo or media item from a Google Business Profile location.
|
|
1855
1912
|
*/
|
|
1856
1913
|
export const deleteGoogleBusinessMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteGoogleBusinessMediaData, ThrowOnError>) => {
|
|
1857
1914
|
return (options?.client ?? client).delete<DeleteGoogleBusinessMediaResponse, DeleteGoogleBusinessMediaError, ThrowOnError>({
|
|
@@ -1887,7 +1944,7 @@ export const getGmbAttributeMetadata = <ThrowOnError extends boolean = false>(op
|
|
|
1887
1944
|
|
|
1888
1945
|
/**
|
|
1889
1946
|
* Get attributes
|
|
1890
|
-
* Returns
|
|
1947
|
+
* Returns Google Business Profile location attributes (amenities, services, accessibility, payment types). Available attributes vary by business category.
|
|
1891
1948
|
*/
|
|
1892
1949
|
export const getGoogleBusinessAttributes = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessAttributesData, ThrowOnError>) => {
|
|
1893
1950
|
return (options?.client ?? client).get<GetGoogleBusinessAttributesResponse, GetGoogleBusinessAttributesError, ThrowOnError>({
|
|
@@ -1940,7 +1997,7 @@ export const createGoogleBusinessPlaceAction = <ThrowOnError extends boolean = f
|
|
|
1940
1997
|
|
|
1941
1998
|
/**
|
|
1942
1999
|
* Delete action link
|
|
1943
|
-
* Deletes a place action link (e.g. booking or ordering URL) from a
|
|
2000
|
+
* Deletes a place action link (e.g. booking or ordering URL) from a Google Business Profile location.
|
|
1944
2001
|
*/
|
|
1945
2002
|
export const deleteGoogleBusinessPlaceAction = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteGoogleBusinessPlaceActionData, ThrowOnError>) => {
|
|
1946
2003
|
return (options?.client ?? client).delete<DeleteGoogleBusinessPlaceActionResponse, DeleteGoogleBusinessPlaceActionError, ThrowOnError>({
|
|
@@ -2012,7 +2069,7 @@ export const batchGetGoogleBusinessReviews = <ThrowOnError extends boolean = fal
|
|
|
2012
2069
|
|
|
2013
2070
|
/**
|
|
2014
2071
|
* Get a review
|
|
2015
|
-
* Returns one Google Business review, in the same shape as the entries of GET /v1/accounts/{accountId}/gmb-reviews.
|
|
2072
|
+
* Returns one Google Business Profile review, in the same shape as the entries of GET /v1/accounts/{accountId}/gmb-reviews.
|
|
2016
2073
|
* The review is read from the account's selected location unless locationId overrides it, and Google returns 404 for a review id that belongs to another location.
|
|
2017
2074
|
* Read the review before replying if a human may have answered it already: replies are overwritten in place and Google keeps no history.
|
|
2018
2075
|
*
|
|
@@ -2026,7 +2083,7 @@ export const getGoogleBusinessReview = <ThrowOnError extends boolean = false>(op
|
|
|
2026
2083
|
|
|
2027
2084
|
/**
|
|
2028
2085
|
* Reply to a review
|
|
2029
|
-
* Posts (or updates) the business owner reply to a Google Business review.
|
|
2086
|
+
* Posts (or updates) the business owner reply to a Google Business Profile review.
|
|
2030
2087
|
* The reply is associated with the account's currently selected location (set via /v1/accounts/{accountId}/gmb-locations).
|
|
2031
2088
|
* Calling this endpoint a second time on the same review overwrites the previous reply (PUT semantics on Google's side).
|
|
2032
2089
|
* Google keeps no history, so an automated retry silently replaces a reply someone edited by hand in the Google Business Profile UI.
|
|
@@ -2042,7 +2099,7 @@ export const replyToGoogleBusinessReview = <ThrowOnError extends boolean = false
|
|
|
2042
2099
|
|
|
2043
2100
|
/**
|
|
2044
2101
|
* Delete a review reply
|
|
2045
|
-
* Removes the business owner reply from a Google Business review. The review itself remains.
|
|
2102
|
+
* Removes the business owner reply from a Google Business Profile review. The review itself remains.
|
|
2046
2103
|
*/
|
|
2047
2104
|
export const deleteGoogleBusinessReviewReply = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteGoogleBusinessReviewReplyData, ThrowOnError>) => {
|
|
2048
2105
|
return (options?.client ?? client).delete<DeleteGoogleBusinessReviewReplyResponse, DeleteGoogleBusinessReviewReplyError, ThrowOnError>({
|
|
@@ -2055,7 +2112,7 @@ export const deleteGoogleBusinessReviewReply = <ThrowOnError extends boolean = f
|
|
|
2055
2112
|
* Get pending OAuth data
|
|
2056
2113
|
* Fetch pending OAuth data for headless mode using the pendingDataToken from the redirect URL.
|
|
2057
2114
|
*
|
|
2058
|
-
* **Scope**: This endpoint is used for LinkedIn organizations, Google Business locations, Slack channels, Snapchat profiles, and Pinterest boards, where the selection list is too large to fit in URL params. The redirect carries a `pendingDataToken` instead of the full payload; the response includes the corresponding selection array (e.g. `boards` for Pinterest). WhatsApp, Facebook and other platforms pass selection state directly via URL query params on the redirect (`profileId`, `tempToken`, `step`), no pending record is created, so this endpoint will return 404 for those flows. Use the platform-specific selection endpoint instead (e.g. `/v1/connect/whatsapp/select-phone-number`).
|
|
2115
|
+
* **Scope**: This endpoint is used for LinkedIn organizations, Google Business Profile locations, Slack channels, Snapchat profiles, and Pinterest boards, where the selection list is too large to fit in URL params. The redirect carries a `pendingDataToken` instead of the full payload; the response includes the corresponding selection array (e.g. `boards` for Pinterest). WhatsApp, Facebook and other platforms pass selection state directly via URL query params on the redirect (`profileId`, `tempToken`, `step`), no pending record is created, so this endpoint will return 404 for those flows. Use the platform-specific selection endpoint instead (e.g. `/v1/connect/whatsapp/select-phone-number`).
|
|
2059
2116
|
*
|
|
2060
2117
|
* Reading the token does not consume it, so this fetch is repeatable until the token expires 1 hour after issuance. Completing the platform selection deletes the pending record, so the token stops working from then on. No authentication required.
|
|
2061
2118
|
*
|
|
@@ -2069,7 +2126,7 @@ export const getPendingOAuthData = <ThrowOnError extends boolean = false>(option
|
|
|
2069
2126
|
|
|
2070
2127
|
/**
|
|
2071
2128
|
* List LinkedIn orgs
|
|
2072
|
-
* Fetch full LinkedIn organization details (logos, vanity names, websites) for custom UI. No authentication required,
|
|
2129
|
+
* Fetch full LinkedIn organization details (logos, vanity names, websites) for custom UI. No authentication required, only the tempToken from OAuth.
|
|
2073
2130
|
*/
|
|
2074
2131
|
export const listLinkedInOrganizations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListLinkedInOrganizationsData, ThrowOnError>) => {
|
|
2075
2132
|
return (options?.client ?? client).get<ListLinkedInOrganizationsResponse, ListLinkedInOrganizationsError, ThrowOnError>({
|
|
@@ -2225,7 +2282,13 @@ export const completeWhatsAppPhoneSelection = <ThrowOnError extends boolean = fa
|
|
|
2225
2282
|
|
|
2226
2283
|
/**
|
|
2227
2284
|
* Connect WhatsApp from Embedded Signup
|
|
2228
|
-
* Exchange the authorization code Meta Embedded Signup
|
|
2285
|
+
* Exchange the authorization code Meta's Embedded Signup popup returned. This is the call the Zernio-hosted
|
|
2286
|
+
* signup page makes after the popup closes (`GET /v1/connect/whatsapp?signup=hosted`), sending the `wabaId`
|
|
2287
|
+
* and `phoneNumberId` Meta reported so exactly the chosen number is connected; when both are omitted the
|
|
2288
|
+
* first number the token can see is used. The code never passes through a `redirect_uri`, so
|
|
2289
|
+
* `POST /v1/connect/{platform}` cannot accept it. Authenticates with an API key, or with the connect token
|
|
2290
|
+
* the hosted flow issues (`X-Connect-Token` header).
|
|
2291
|
+
*
|
|
2229
2292
|
*/
|
|
2230
2293
|
export const connectWhatsAppEmbeddedSignup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ConnectWhatsAppEmbeddedSignupData, ThrowOnError>) => {
|
|
2231
2294
|
return (options?.client ?? client).post<ConnectWhatsAppEmbeddedSignupResponse, ConnectWhatsAppEmbeddedSignupError, ThrowOnError>({
|
|
@@ -2234,6 +2297,21 @@ export const connectWhatsAppEmbeddedSignup = <ThrowOnError extends boolean = fal
|
|
|
2234
2297
|
});
|
|
2235
2298
|
};
|
|
2236
2299
|
|
|
2300
|
+
/**
|
|
2301
|
+
* Get Embedded Signup SDK config
|
|
2302
|
+
* The Meta app id and Embedded Signup configuration id the Zernio-hosted signup page uses to open Meta's
|
|
2303
|
+
* popup. Integrators do not need this endpoint: start the hosted flow with
|
|
2304
|
+
* `GET /v1/connect/whatsapp?signup=hosted` and send the user to the returned `authUrl`. Authenticates with
|
|
2305
|
+
* an API key or with the connect token the hosted flow issues (`X-Connect-Token` header).
|
|
2306
|
+
*
|
|
2307
|
+
*/
|
|
2308
|
+
export const getWhatsAppSdkConfig = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<GetWhatsAppSdkConfigData, ThrowOnError>) => {
|
|
2309
|
+
return (options?.client ?? client).get<GetWhatsAppSdkConfigResponse, GetWhatsAppSdkConfigError, ThrowOnError>({
|
|
2310
|
+
...options,
|
|
2311
|
+
url: '/v1/connect/whatsapp/sdk-config'
|
|
2312
|
+
});
|
|
2313
|
+
};
|
|
2314
|
+
|
|
2237
2315
|
/**
|
|
2238
2316
|
* Connect a Discord channel
|
|
2239
2317
|
* Finalize a Discord connect by binding one channel to a profile. Served by a dedicated route, so it is not reachable through POST /v1/connect/{platform}. One connected account per channel: repeat the call with a different channelId to add another.
|
|
@@ -2418,7 +2496,7 @@ export const updateLinkedInOrganization = <ThrowOnError extends boolean = false>
|
|
|
2418
2496
|
* - Person mentions require the LinkedIn account to be admin of at least one organization: both endpoints that resolve a profile URL to a member URN take an organization you administer. Organization mentions (e.g. @Microsoft) have no such requirement.
|
|
2419
2497
|
* - The two are not scoped alike. peopleTypeahead?q=organizationFollowers only returns that organization's followers; vanityUrl?q=vanityUrlAsOrganization does not, and its resolvable set is opaque. A 404 here does not mean the person is unknown to you or unknown to LinkedIn: a live public profile can 404 with no reason given.
|
|
2420
2498
|
* - For person mentions to be clickable, the displayName parameter must exactly match the name shown on their LinkedIn profile.
|
|
2421
|
-
* - Person mentions DO work when published from personal profiles (the URN
|
|
2499
|
+
* - Person mentions DO work when published from personal profiles (the URN only needs to be valid). The limitation is only in the resolution step (URL to URN), not in publishing.
|
|
2422
2500
|
*
|
|
2423
2501
|
*/
|
|
2424
2502
|
export const getLinkedInMentions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetLinkedInMentionsData, ThrowOnError>) => {
|
|
@@ -2512,10 +2590,10 @@ export const getInstagramAudio = <ThrowOnError extends boolean = false>(options:
|
|
|
2512
2590
|
* Returns metrics for a single story. The `source` field discriminates
|
|
2513
2591
|
* between three states:
|
|
2514
2592
|
*
|
|
2515
|
-
* - `live
|
|
2516
|
-
* - `cached
|
|
2593
|
+
* - `live`: fetched from Meta in real time (story is still active)
|
|
2594
|
+
* - `cached`: fetched from a persisted `story_insights` webhook payload
|
|
2517
2595
|
* (story has expired but we received its final-state metrics from Meta)
|
|
2518
|
-
* - `unavailable
|
|
2596
|
+
* - `unavailable`: story has expired and we never received its webhook
|
|
2519
2597
|
* payload (for example, the account connected after the story expired)
|
|
2520
2598
|
*
|
|
2521
2599
|
* Meta can report an expired story as an empty successful result rather
|
|
@@ -2611,7 +2689,7 @@ export const updateYoutubeDefaultPlaylist = <ThrowOnError extends boolean = fals
|
|
|
2611
2689
|
};
|
|
2612
2690
|
|
|
2613
2691
|
/**
|
|
2614
|
-
* List
|
|
2692
|
+
* List Google Business Profile locations
|
|
2615
2693
|
* Returns Google Business Profile locations the connected account can access, plus the currently selected location. The list is bounded (see hasMore); for accounts that own many locations, use the search or filter query params to find a specific one instead of loading them all, or raise limit to enumerate an account with more than 100 locations.
|
|
2616
2694
|
*
|
|
2617
2695
|
*/
|
|
@@ -2623,8 +2701,8 @@ export const getGmbLocations = <ThrowOnError extends boolean = false>(options: O
|
|
|
2623
2701
|
};
|
|
2624
2702
|
|
|
2625
2703
|
/**
|
|
2626
|
-
* Update
|
|
2627
|
-
* Switch which
|
|
2704
|
+
* Update Google Business Profile location
|
|
2705
|
+
* Switch which Google Business Profile location is active for a connected account.
|
|
2628
2706
|
*/
|
|
2629
2707
|
export const updateGmbLocation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGmbLocationData, ThrowOnError>) => {
|
|
2630
2708
|
return (options?.client ?? client).put<UpdateGmbLocationResponse, UpdateGmbLocationError, ThrowOnError>({
|
|
@@ -2634,8 +2712,8 @@ export const updateGmbLocation = <ThrowOnError extends boolean = false>(options:
|
|
|
2634
2712
|
};
|
|
2635
2713
|
|
|
2636
2714
|
/**
|
|
2637
|
-
* Assign
|
|
2638
|
-
* Connect a Google Business location onto a DIFFERENT profile by reusing the OAuth grant from an already-connected
|
|
2715
|
+
* Assign Google Business Profile location to another profile
|
|
2716
|
+
* Connect a Google Business Profile location onto a DIFFERENT profile by reusing the OAuth grant from an already-connected Google Business Profile account, with no browser and no re-authorization. Built for agencies whose single Google account has manager access to many client locations and who run one profile per client: connect one location the normal way (browser OAuth), then bulk-assign the rest onto each client's profile via this endpoint. The path `accountId` is a SOURCE connected Google Business Profile account (the token holder); the body `profileId` is the TARGET profile. Returns 409 if the target profile already has a Google Business Profile connection (switch its location with PUT gmb-locations instead).
|
|
2639
2717
|
*
|
|
2640
2718
|
*/
|
|
2641
2719
|
export const assignGoogleBusinessLocation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AssignGoogleBusinessLocationData, ThrowOnError>) => {
|
|
@@ -2650,7 +2728,7 @@ export const assignGoogleBusinessLocation = <ThrowOnError extends boolean = fals
|
|
|
2650
2728
|
* Returns the reaction breakdown for a Facebook Page post: a count per reaction type
|
|
2651
2729
|
* plus the overall total.
|
|
2652
2730
|
*
|
|
2653
|
-
* The whole breakdown is fetched in a single Graph call.
|
|
2731
|
+
* The whole breakdown is fetched in a single Graph call. The post analytics
|
|
2654
2732
|
* endpoint reports only an aggregate reaction count (surfaced there as `likes`), so use
|
|
2655
2733
|
* this endpoint when you need per-type counts.
|
|
2656
2734
|
*
|
|
@@ -2844,7 +2922,7 @@ export const listSlackMembers = <ThrowOnError extends boolean = false>(options:
|
|
|
2844
2922
|
/**
|
|
2845
2923
|
* Send a Discord Direct Message
|
|
2846
2924
|
* Send a 1:1 Direct Message from the bot to a Discord user (by snowflake ID).
|
|
2847
|
-
* Supports the same payload shape as channel posts
|
|
2925
|
+
* Supports the same payload shape as channel posts: content, embeds, media
|
|
2848
2926
|
* attachments, and TTS.
|
|
2849
2927
|
*
|
|
2850
2928
|
* Constraints (Discord platform limits):
|
|
@@ -2874,7 +2952,7 @@ export const sendDiscordDirectMessage = <ThrowOnError extends boolean = false>(o
|
|
|
2874
2952
|
* pickers, role-permission UIs, or finding the role ID before calling
|
|
2875
2953
|
* the role-assign endpoint.
|
|
2876
2954
|
*
|
|
2877
|
-
* Roles are returned unordered
|
|
2955
|
+
* Roles are returned unordered. Sort client-side by `position` if you
|
|
2878
2956
|
* need Discord's UI ordering.
|
|
2879
2957
|
*
|
|
2880
2958
|
* Caller must pass `accountId` of a Discord SocialAccount bound to this
|
|
@@ -2991,7 +3069,7 @@ export const getDiscordGuildMember = <ThrowOnError extends boolean = false>(opti
|
|
|
2991
3069
|
|
|
2992
3070
|
/**
|
|
2993
3071
|
* Assign a role to a guild member
|
|
2994
|
-
* Assign one role to one member. Idempotent on Discord's side
|
|
3072
|
+
* Assign one role to one member. Idempotent on Discord's side: re-running
|
|
2995
3073
|
* on a member who already has the role is a 204 no-op.
|
|
2996
3074
|
*
|
|
2997
3075
|
* Path shape mirrors Discord's own API (`PUT /guilds/{guild}/members/{user}/roles/{role}`)
|
|
@@ -3011,7 +3089,7 @@ export const addDiscordMemberRole = <ThrowOnError extends boolean = false>(optio
|
|
|
3011
3089
|
|
|
3012
3090
|
/**
|
|
3013
3091
|
* Remove a role from a guild member
|
|
3014
|
-
* Remove one role from one member. Idempotent
|
|
3092
|
+
* Remove one role from one member. Idempotent: removing a role the
|
|
3015
3093
|
* member doesn't have returns 204 no-op.
|
|
3016
3094
|
*
|
|
3017
3095
|
* Same permission + hierarchy constraints as the PUT counterpart.
|
|
@@ -3098,11 +3176,11 @@ export const listDiscordPinnedMessages = <ThrowOnError extends boolean = false>(
|
|
|
3098
3176
|
* Pin a specific message in a channel. Path shape mirrors Discord's own
|
|
3099
3177
|
* API (`PUT /channels/{cid}/pins/{mid}`).
|
|
3100
3178
|
*
|
|
3101
|
-
* Idempotent
|
|
3179
|
+
* Idempotent: re-pinning an already-pinned message is a 204 no-op.
|
|
3102
3180
|
*
|
|
3103
3181
|
* Constraints:
|
|
3104
3182
|
* - Bot needs MANAGE_MESSAGES in the channel.
|
|
3105
|
-
* - 50-pin cap per channel
|
|
3183
|
+
* - 50-pin cap per channel: hitting it returns 400 (Discord-side).
|
|
3106
3184
|
* Caller should unpin one first.
|
|
3107
3185
|
*
|
|
3108
3186
|
*/
|
|
@@ -3116,7 +3194,7 @@ export const pinDiscordMessage = <ThrowOnError extends boolean = false>(options:
|
|
|
3116
3194
|
/**
|
|
3117
3195
|
* Unpin a Discord message
|
|
3118
3196
|
* Unpin a message. Same MANAGE_MESSAGES permission requirement as pin.
|
|
3119
|
-
* Idempotent
|
|
3197
|
+
* Idempotent: unpinning a non-pinned message is a 204 no-op.
|
|
3120
3198
|
*
|
|
3121
3199
|
*/
|
|
3122
3200
|
export const unpinDiscordMessage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UnpinDiscordMessageData, ThrowOnError>) => {
|
|
@@ -3129,7 +3207,7 @@ export const unpinDiscordMessage = <ThrowOnError extends boolean = false>(option
|
|
|
3129
3207
|
/**
|
|
3130
3208
|
* List Discord scheduled events
|
|
3131
3209
|
* Return all scheduled events in the guild. Events are distinct from
|
|
3132
|
-
* messages
|
|
3210
|
+
* messages: they appear in the server's Events panel and Discord
|
|
3133
3211
|
* auto-notifies interested members ahead of start time.
|
|
3134
3212
|
*
|
|
3135
3213
|
* Pass `withUserCount=true` to include `user_count` (number of members
|
|
@@ -3148,15 +3226,15 @@ export const listDiscordScheduledEvents = <ThrowOnError extends boolean = false>
|
|
|
3148
3226
|
* Create a guild scheduled event. Three event types, selected via the
|
|
3149
3227
|
* discriminator on `entity.type`:
|
|
3150
3228
|
*
|
|
3151
|
-
* - `external
|
|
3229
|
+
* - `external`: off-platform (Zoom, in-person, livestream). Requires
|
|
3152
3230
|
* both `location` and `endsAt`. Most common type for scheduler
|
|
3153
3231
|
* integrations.
|
|
3154
|
-
* - `voice
|
|
3155
|
-
* - `stage
|
|
3232
|
+
* - `voice`: hosted in a Discord voice channel. Requires `channelId`.
|
|
3233
|
+
* - `stage`: hosted in a Discord stage channel. Requires `channelId`.
|
|
3156
3234
|
*
|
|
3157
3235
|
* Bot needs MANAGE_EVENTS in the guild. Existing installs (pre-events
|
|
3158
3236
|
* PR) need a re-invite OR a server admin manually granting the
|
|
3159
|
-
* permission
|
|
3237
|
+
* permission. See route header for details.
|
|
3160
3238
|
*
|
|
3161
3239
|
*/
|
|
3162
3240
|
export const createDiscordScheduledEvent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateDiscordScheduledEventData, ThrowOnError>) => {
|
|
@@ -3179,7 +3257,7 @@ export const getDiscordScheduledEvent = <ThrowOnError extends boolean = false>(o
|
|
|
3179
3257
|
/**
|
|
3180
3258
|
* Update a Discord scheduled event
|
|
3181
3259
|
* Patch any subset of fields. Passing `status: 'cancelled'` is how you
|
|
3182
|
-
* cancel an event
|
|
3260
|
+
* cancel an event. Discord doesn't have a dedicated cancel endpoint,
|
|
3183
3261
|
* it's a status transition.
|
|
3184
3262
|
*
|
|
3185
3263
|
* Most status transitions Discord enforces (you can't go SCHEDULED →
|
|
@@ -3442,11 +3520,16 @@ export const listLogs = <ThrowOnError extends boolean = false>(options?: Options
|
|
|
3442
3520
|
/**
|
|
3443
3521
|
* List conversations
|
|
3444
3522
|
* Fetch conversations (DMs) from all connected messaging accounts in a single API call. Supports filtering by profile and platform. Results are aggregated and deduplicated.
|
|
3445
|
-
* Supported platforms: Facebook, Instagram, Twitter/X, Bluesky, Reddit, Telegram.
|
|
3446
3523
|
*
|
|
3447
|
-
*
|
|
3524
|
+
* Supported platforms: Facebook, Instagram, X, Bluesky, Reddit, Telegram.
|
|
3448
3525
|
*
|
|
3449
|
-
*
|
|
3526
|
+
* **X limitation.** X has replaced traditional DMs with encrypted "X Chat" for many accounts. Messages sent or received through encrypted X Chat are not accessible via X's API (the /2/dm_events endpoint only returns legacy unencrypted DMs). This means some X conversations may show only outgoing messages or appear empty. This is an X platform limitation that affects all third-party applications. See X's docs on encrypted messaging for more details.
|
|
3527
|
+
*
|
|
3528
|
+
* **Instagram and Facebook pre-connect history.** When one of these accounts is connected, Zernio replays the DM history the account already holds on Meta, so conversations that began before the account was connected appear here. Up to 500 conversations per account are replayed.
|
|
3529
|
+
*
|
|
3530
|
+
* - The replay runs in the background and can finish after a listing you have already taken, and replayed conversations keep their original lastMessageAt, so they sort into date order rather than appearing at the top. If you mirror this endpoint into your own store, re-run the sweep rather than relying on a single pass at connect time.
|
|
3531
|
+
* - Replayed history emits no webhooks and is stored as already read, so it never affects unread counts.
|
|
3532
|
+
* - Threads that Meta refuses to serve are skipped, and an account whose Instagram "connected tools" message access is turned off is not replayed at all.
|
|
3450
3533
|
*
|
|
3451
3534
|
*/
|
|
3452
3535
|
export const listInboxConversations = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListInboxConversationsData, ThrowOnError>) => {
|
|
@@ -3458,19 +3541,28 @@ export const listInboxConversations = <ThrowOnError extends boolean = false>(opt
|
|
|
3458
3541
|
|
|
3459
3542
|
/**
|
|
3460
3543
|
* Create conversation
|
|
3461
|
-
*
|
|
3544
|
+
* Start a direct message conversation with a user. If a conversation with that recipient already exists, the message is added to the existing thread.
|
|
3545
|
+
*
|
|
3546
|
+
* Supported platforms: X, Bluesky, Reddit, WhatsApp, SMS, and Slack. Other platforms return PLATFORM_NOT_SUPPORTED.
|
|
3462
3547
|
*
|
|
3463
|
-
*
|
|
3548
|
+
* **Slack.** Pass a workspace member id as participantId (list them with GET /v1/accounts/{accountId}/slack-members). Zernio opens the DM channel with that member and sends the message; the thread then behaves like any other Slack conversation in the inbox. The member must belong to the connected workspace.
|
|
3464
3549
|
*
|
|
3465
|
-
*
|
|
3550
|
+
* **WhatsApp.** This is the endpoint for sending an approved template message to a phone number. Provide templateName, templateLanguage, and templateParams (variable values for the text header, body and dynamic URL buttons, in that order), with the recipient phone in participantId. A template is required because WhatsApp does not permit freeform messages to open a conversation; a missing template returns TEMPLATE_REQUIRED.
|
|
3466
3551
|
*
|
|
3467
|
-
*
|
|
3552
|
+
* - Templates with media headers (image, video, document) are handled automatically: Zernio reads the approved template definition and fills the header at send time with the template's approved sample asset. To send a DIFFERENT asset per message (e.g. a distinct invoice PDF for each recipient), pass the headerMedia field with a public link (or a Meta media id); it overrides the sample for that send.
|
|
3553
|
+
* - A template whose approved header format is LOCATION has no header asset to reconstruct at all: Meta only accepts the location at send time, so pass headerLocation (latitude and longitude required) whenever such a template is sent; headerMedia and headerLocation cannot both be supplied.
|
|
3554
|
+
* - A button that carries its own value at send time (a copy-code button holding a Pix payment code or a coupon, a flow token) is sent with templateButtonParams, addressed by the button's index; templateParams covers text variables and dynamic URL buttons only.
|
|
3555
|
+
* - Template fields are accepted on the JSON body only, not on multipart requests.
|
|
3468
3556
|
*
|
|
3469
|
-
*
|
|
3557
|
+
* For a number you already have a thread with, this sends the template into that thread, which also makes it the way to re-engage a contact after the 24-hour customer-service window has closed. Once the recipient replies (opening the 24h window), send freeform messages with the send-message endpoint (POST /v1/inbox/conversations/{conversationId}/messages).
|
|
3470
3558
|
*
|
|
3471
|
-
*
|
|
3559
|
+
* Alternatively, WhatsApp Business Accounts eligible for Meta Direct Send can open a conversation with a business-initiated utility text message and no template: pass category: 'utility' together with message (and no templateName). See the category field below.
|
|
3472
3560
|
*
|
|
3473
|
-
*
|
|
3561
|
+
* **DM eligibility (X).** Before sending, the endpoint checks if the recipient accepts DMs from your account (via the receives_your_dm field). If not, a 422 error with code DM_NOT_ALLOWED is returned. You can skip this check with skipDmCheck: true if you have already verified eligibility.
|
|
3562
|
+
*
|
|
3563
|
+
* **X API tier requirement.** DM write endpoints require X API Pro tier ($5,000/month) or Enterprise access. This applies to BYOK (Bring Your Own Key) users who provide their own X API credentials.
|
|
3564
|
+
*
|
|
3565
|
+
* **Rate limits (X only).** X's DM API enforces 200 requests per 15 minutes, 1,000 per 24 hours per connected X account, and 15,000 per 24 hours per X developer app (shared across all DM endpoints). These limits do NOT apply to other platforms. WhatsApp sends are governed by Meta's per-number messaging tiers (unique business-initiated conversations per 24 hours) and per-number throughput instead.
|
|
3474
3566
|
*
|
|
3475
3567
|
*/
|
|
3476
3568
|
export const createInboxConversation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateInboxConversationData, ThrowOnError>) => {
|
|
@@ -3489,7 +3581,7 @@ export const createInboxConversation = <ThrowOnError extends boolean = false>(op
|
|
|
3489
3581
|
*
|
|
3490
3582
|
* A conversation that matches both ways is returned once, carrying its message matches.
|
|
3491
3583
|
*
|
|
3492
|
-
* Only platforms whose messages are stored by Zernio are searchable: WhatsApp, SMS, Telegram, Facebook, Instagram,
|
|
3584
|
+
* Only platforms whose messages are stored by Zernio are searchable: WhatsApp, SMS, Telegram, Facebook, Instagram, X and Reddit. Bluesky conversations are fetched live from the platform and cannot be searched; those accounts are listed in meta.accountsSkipped.
|
|
3493
3585
|
*
|
|
3494
3586
|
*/
|
|
3495
3587
|
export const searchInboxConversations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SearchInboxConversationsData, ThrowOnError>) => {
|
|
@@ -3532,9 +3624,9 @@ export const updateInboxConversation = <ThrowOnError extends boolean = false>(op
|
|
|
3532
3624
|
*
|
|
3533
3625
|
* Sort order: defaults to `asc` (oldest first, chat style). For the
|
|
3534
3626
|
* "show me the latest messages" pattern, pass `?sortOrder=desc&limit=N`.
|
|
3535
|
-
*
|
|
3627
|
+
* X, Instagram, Telegram, WhatsApp and Reddit honor the requested
|
|
3536
3628
|
* order from the local message store. For Facebook and Bluesky, the
|
|
3537
|
-
* upstream APIs only return newest-first and have no order parameter
|
|
3629
|
+
* upstream APIs only return newest-first and have no order parameter, so
|
|
3538
3630
|
* sort order is best-effort and only reverses items within a single page
|
|
3539
3631
|
* (pages still walk newest→oldest). The response field `sortOrderApplied`
|
|
3540
3632
|
* tells you what was actually applied.
|
|
@@ -3551,7 +3643,7 @@ export const updateInboxConversation = <ThrowOnError extends boolean = false>(op
|
|
|
3551
3643
|
* the account was connected are unaffected. Replayed messages are stored
|
|
3552
3644
|
* as already read and emit no webhooks.
|
|
3553
3645
|
*
|
|
3554
|
-
*
|
|
3646
|
+
* X limitation: X's encrypted "X Chat" messages are not accessible via the API. Conversations where the other participant uses encrypted X Chat may only show your outgoing messages. See the list conversations endpoint for more details.
|
|
3555
3647
|
*
|
|
3556
3648
|
* This endpoint is read-only and does NOT mark messages as read or send
|
|
3557
3649
|
* read receipts. To mark a conversation read (and send WhatsApp blue ticks
|
|
@@ -3663,7 +3755,7 @@ export const editInboxMessage = <ThrowOnError extends boolean = false>(options:
|
|
|
3663
3755
|
* Delete message
|
|
3664
3756
|
* Delete a message from a conversation. Platform support varies:
|
|
3665
3757
|
* - Telegram: Full delete (bot's own messages anytime, others if admin)
|
|
3666
|
-
* - X
|
|
3758
|
+
* - X: Full delete (own DM events only)
|
|
3667
3759
|
* - Bluesky: Delete for self only (recipient still sees it)
|
|
3668
3760
|
* - Reddit: Delete from sender's view only
|
|
3669
3761
|
* - Facebook, Instagram, WhatsApp: Not supported (returns 400)
|
|
@@ -3695,6 +3787,23 @@ export const sendTypingIndicator = <ThrowOnError extends boolean = false>(option
|
|
|
3695
3787
|
});
|
|
3696
3788
|
};
|
|
3697
3789
|
|
|
3790
|
+
/**
|
|
3791
|
+
* Hand a conversation to or from Meta Business Agent
|
|
3792
|
+
* WhatsApp only, on numbers with Meta Business Agent enabled. Wraps Meta's thread control:
|
|
3793
|
+
* - `release`: hand the conversation back to the agent so it resumes answering. You must currently hold control (sending any message takes it implicitly).
|
|
3794
|
+
* - `take`: take control before sending anything, so the agent stops replying while an operator reads the thread. Meta accepts this only from the business configured as the number's escalation partner; other apps take control by sending a message.
|
|
3795
|
+
* - `pass`: transfer control to the number's configured escalation partner, or to the agent with `target: ai_agent`. Meta's Cloud API currently rejects it ("Pass action is not supported", verified 2026-09-08); use `release` to hand a thread back to the agent.
|
|
3796
|
+
*
|
|
3797
|
+
* The conversation's `threadControl` follows the result; a `conversation.control_changed` webhook fires when Meta later reports the change.
|
|
3798
|
+
*
|
|
3799
|
+
*/
|
|
3800
|
+
export const setConversationThreadControl = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetConversationThreadControlData, ThrowOnError>) => {
|
|
3801
|
+
return (options?.client ?? client).post<SetConversationThreadControlResponse, SetConversationThreadControlError, ThrowOnError>({
|
|
3802
|
+
...options,
|
|
3803
|
+
url: '/v1/inbox/conversations/{conversationId}/thread-control'
|
|
3804
|
+
});
|
|
3805
|
+
};
|
|
3806
|
+
|
|
3698
3807
|
/**
|
|
3699
3808
|
* Mark a conversation as read
|
|
3700
3809
|
* Marks all unread incoming messages in the conversation as read.
|
|
@@ -3758,7 +3867,7 @@ export const removeMessageReaction = <ThrowOnError extends boolean = false>(opti
|
|
|
3758
3867
|
* Maximum file size is 25MB.
|
|
3759
3868
|
*
|
|
3760
3869
|
* Unlike /v1/media/upload (which uses upload tokens for end-user flows),
|
|
3761
|
-
* this endpoint
|
|
3870
|
+
* this endpoint takes your API key in the Authorization header, for programmatic use.
|
|
3762
3871
|
*
|
|
3763
3872
|
*/
|
|
3764
3873
|
export const uploadMediaDirect = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UploadMediaDirectData, ThrowOnError>) => {
|
|
@@ -3887,7 +3996,7 @@ export const deleteTelegramCommands = <ThrowOnError extends boolean = false>(opt
|
|
|
3887
3996
|
* **Webhook payloads do not carry `refreshUrl`**, so a webhook-driven
|
|
3888
3997
|
* integration builds this URL itself. Every piece is in the event:
|
|
3889
3998
|
* `message.conversationId`, `message.platformMessageId`, the attachment's
|
|
3890
|
-
* zero-based position, and `account.accountId`.
|
|
3999
|
+
* zero-based position, and `account.accountId`. **`accountId` is a
|
|
3891
4000
|
* required query parameter**; omitting it returns `400`
|
|
3892
4001
|
* `missing_required_field`, which is the same requirement
|
|
3893
4002
|
* `GET /v1/whatsapp/media/{mediaId}` has.
|
|
@@ -3918,7 +4027,7 @@ export const getMessageAttachment = <ThrowOnError extends boolean = false>(optio
|
|
|
3918
4027
|
* `comment.received` webhook, which fires for every new comment across your posts and
|
|
3919
4028
|
* carries the post reference needed to keep this list current.
|
|
3920
4029
|
*
|
|
3921
|
-
* For users with the Ads add-on (
|
|
4030
|
+
* For users with the Ads add-on (accounts on usage-based billing always qualify), the user's Meta ads
|
|
3922
4031
|
* (boosted/dark posts) are included too. There's one row per (ad, placement-with-comments):
|
|
3923
4032
|
* an ad that runs on both Facebook feed and Instagram feed produces up to two rows (the
|
|
3924
4033
|
* Page dark post and the IG media have separate comment threads), each flagged
|
|
@@ -4040,7 +4149,7 @@ export const editInboxComment = <ThrowOnError extends boolean = false>(options:
|
|
|
4040
4149
|
* belongs to. You cannot moderate comments on videos you do not own.
|
|
4041
4150
|
*
|
|
4042
4151
|
* This is distinct from `POST /v1/inbox/comments/{postId}/{commentId}/hide`, which
|
|
4043
|
-
* covers Facebook, Instagram, Threads, and X
|
|
4152
|
+
* covers Facebook, Instagram, Threads, and X and does not apply to YouTube.
|
|
4044
4153
|
*
|
|
4045
4154
|
*/
|
|
4046
4155
|
export const setCommentModeration = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetCommentModerationData, ThrowOnError>) => {
|
|
@@ -4052,9 +4161,9 @@ export const setCommentModeration = <ThrowOnError extends boolean = false>(optio
|
|
|
4052
4161
|
|
|
4053
4162
|
/**
|
|
4054
4163
|
* Hide comment
|
|
4055
|
-
* Hide a comment on a post. Supported by Facebook, Instagram, Threads, and X
|
|
4164
|
+
* Hide a comment on a post. Supported by Facebook, Instagram, Threads, and X.
|
|
4056
4165
|
* Hidden comments are only visible to the commenter and page admin.
|
|
4057
|
-
* For X
|
|
4166
|
+
* For X, the reply must belong to a conversation started by the authenticated user.
|
|
4058
4167
|
*
|
|
4059
4168
|
*/
|
|
4060
4169
|
export const hideInboxComment = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<HideInboxCommentData, ThrowOnError>) => {
|
|
@@ -4066,7 +4175,7 @@ export const hideInboxComment = <ThrowOnError extends boolean = false>(options:
|
|
|
4066
4175
|
|
|
4067
4176
|
/**
|
|
4068
4177
|
* Unhide comment
|
|
4069
|
-
* Unhide a previously hidden comment. Supported by Facebook, Instagram, Threads, and X
|
|
4178
|
+
* Unhide a previously hidden comment. Supported by Facebook, Instagram, Threads, and X.
|
|
4070
4179
|
*
|
|
4071
4180
|
*/
|
|
4072
4181
|
export const unhideInboxComment = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UnhideInboxCommentData, ThrowOnError>) => {
|
|
@@ -4078,7 +4187,7 @@ export const unhideInboxComment = <ThrowOnError extends boolean = false>(options
|
|
|
4078
4187
|
|
|
4079
4188
|
/**
|
|
4080
4189
|
* Like comment
|
|
4081
|
-
* Like or upvote a comment on a post. Supported platforms: Facebook,
|
|
4190
|
+
* Like or upvote a comment on a post. Supported platforms: Facebook, X,
|
|
4082
4191
|
* Bluesky, Reddit, LinkedIn, and Instagram in limited release (see below). For
|
|
4083
4192
|
* Bluesky, the cid (content identifier) is
|
|
4084
4193
|
* required in the request body. For LinkedIn, pass the composite comment URN returned
|
|
@@ -4112,7 +4221,7 @@ export const likeInboxComment = <ThrowOnError extends boolean = false>(options:
|
|
|
4112
4221
|
|
|
4113
4222
|
/**
|
|
4114
4223
|
* Unlike comment
|
|
4115
|
-
* Remove a like from a comment. Supported platforms: Facebook,
|
|
4224
|
+
* Remove a like from a comment. Supported platforms: Facebook, X, Bluesky,
|
|
4116
4225
|
* Reddit, LinkedIn, and Instagram in limited release. For Bluesky, the likeUri query
|
|
4117
4226
|
* parameter is required. Instagram has the same limited release, Facebook Login,
|
|
4118
4227
|
* `instagram_manage_engagement` and burst-limit constraints as liking.
|
|
@@ -4128,7 +4237,7 @@ export const unlikeInboxComment = <ThrowOnError extends boolean = false>(options
|
|
|
4128
4237
|
/**
|
|
4129
4238
|
* Like post
|
|
4130
4239
|
* Like (or react to) a post as a connected account. Supported platforms: LinkedIn,
|
|
4131
|
-
*
|
|
4240
|
+
* X, Facebook, YouTube, Bluesky, and Instagram in limited release (see below).
|
|
4132
4241
|
* Threads, TikTok and Pinterest
|
|
4133
4242
|
* expose no like endpoint in their APIs and return 400. Reddit returns 400 too,
|
|
4134
4243
|
* pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote,
|
|
@@ -4172,7 +4281,7 @@ export const likePost = <ThrowOnError extends boolean = false>(options: OptionsL
|
|
|
4172
4281
|
|
|
4173
4282
|
/**
|
|
4174
4283
|
* Unlike post
|
|
4175
|
-
* Remove this account's like from a post. Supported platforms: LinkedIn,
|
|
4284
|
+
* Remove this account's like from a post. Supported platforms: LinkedIn, X,
|
|
4176
4285
|
* Facebook, YouTube, Bluesky, and Instagram in limited release. On YouTube this clears
|
|
4177
4286
|
* the rating. Instagram has the same limited release, Facebook Login,
|
|
4178
4287
|
* `instagram_manage_engagement` and burst-limit constraints as liking. For Bluesky,
|
|
@@ -4189,7 +4298,7 @@ export const unlikePost = <ThrowOnError extends boolean = false>(options: Option
|
|
|
4189
4298
|
|
|
4190
4299
|
/**
|
|
4191
4300
|
* Send private reply
|
|
4192
|
-
* Send a
|
|
4301
|
+
* Send a direct message to the author of a comment. Supported on Instagram and Facebook only.
|
|
4193
4302
|
* One reply per comment, must be sent within 7 days. Optionally attach interactive elements:
|
|
4194
4303
|
* `quickReplies` (chips above the keyboard, max 13) or `buttons` (1-3 inline postback/url
|
|
4195
4304
|
* buttons rendered in the same bubble via Meta's button_template). Chips do not render in
|
|
@@ -4262,7 +4371,7 @@ export const removeBookmark = <ThrowOnError extends boolean = false>(options: Op
|
|
|
4262
4371
|
|
|
4263
4372
|
/**
|
|
4264
4373
|
* Follow a user
|
|
4265
|
-
* Follow a user on X
|
|
4374
|
+
* Follow a user on X.
|
|
4266
4375
|
* Requires the follows.write OAuth scope.
|
|
4267
4376
|
* For protected accounts, a follow request is sent instead (pending_follow will be true).
|
|
4268
4377
|
*
|
|
@@ -4276,7 +4385,7 @@ export const followUser = <ThrowOnError extends boolean = false>(options: Option
|
|
|
4276
4385
|
|
|
4277
4386
|
/**
|
|
4278
4387
|
* Unfollow a user
|
|
4279
|
-
* Unfollow a user on X
|
|
4388
|
+
* Unfollow a user on X.
|
|
4280
4389
|
*
|
|
4281
4390
|
*/
|
|
4282
4391
|
export const unfollowUser = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UnfollowUserData, ThrowOnError>) => {
|
|
@@ -4291,7 +4400,7 @@ export const unfollowUser = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
4291
4400
|
* Search public tweets from the last 7 days matching an X search query, e.g. to discover tweets to reply to.
|
|
4292
4401
|
* The query string is passed through to X unchanged and supports X's search operators
|
|
4293
4402
|
* (`from:user`, `-is:retweet`, `is:reply`, `lang:en`, `"exact phrase"`, `conversation_id:123`, boolean `OR`, ...).
|
|
4294
|
-
*
|
|
4403
|
+
* Standalone operators like `is:` / `has:` / `lang:` must be combined with a keyword or `from:` clause.
|
|
4295
4404
|
*
|
|
4296
4405
|
* To reply to a found tweet, pass its `id` as the twitter platform entry's `platformSpecificData.replyToTweetId` when creating a post.
|
|
4297
4406
|
*
|
|
@@ -4352,7 +4461,7 @@ export const listInboxMentions = <ThrowOnError extends boolean = false>(options?
|
|
|
4352
4461
|
*
|
|
4353
4462
|
* Story mentions are not supported by Instagram's API.
|
|
4354
4463
|
*
|
|
4355
|
-
*
|
|
4464
|
+
* `GET /v1/inbox/mentions` currently returns LinkedIn mentions only and does
|
|
4356
4465
|
* not surface Instagram mentions. Source `mediaId` and `commentId` from Instagram's
|
|
4357
4466
|
* `comments` webhook, which is where mention notifications are delivered for accounts
|
|
4358
4467
|
* connected through Instagram Login.
|
|
@@ -4367,8 +4476,8 @@ export const replyToMention = <ThrowOnError extends boolean = false>(options: Op
|
|
|
4367
4476
|
|
|
4368
4477
|
/**
|
|
4369
4478
|
* List reviews
|
|
4370
|
-
* Fetch reviews from all connected Facebook Pages and Google Business accounts. Aggregates data with filtering and sorting options.
|
|
4371
|
-
* Supported platforms: Facebook, Google Business.
|
|
4479
|
+
* Fetch reviews from all connected Facebook Pages and Google Business Profile accounts. Aggregates data with filtering and sorting options.
|
|
4480
|
+
* Supported platforms: Facebook, Google Business Profile.
|
|
4372
4481
|
*
|
|
4373
4482
|
*/
|
|
4374
4483
|
export const listInboxReviews = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListInboxReviewsData, ThrowOnError>) => {
|
|
@@ -4408,7 +4517,7 @@ export const replyToInboxReview = <ThrowOnError extends boolean = false>(options
|
|
|
4408
4517
|
|
|
4409
4518
|
/**
|
|
4410
4519
|
* Delete review reply
|
|
4411
|
-
* Delete a reply to a review (Google Business only). Requires accountId in request body.
|
|
4520
|
+
* Delete a reply to a review (Google Business Profile only). Requires accountId in request body.
|
|
4412
4521
|
*/
|
|
4413
4522
|
export const deleteInboxReviewReply = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteInboxReviewReplyData, ThrowOnError>) => {
|
|
4414
4523
|
return (options?.client ?? client).delete<DeleteInboxReviewReplyResponse, DeleteInboxReviewReplyError, ThrowOnError>({
|
|
@@ -4915,7 +5024,7 @@ export const getVoiceCallEstimate = <ThrowOnError extends boolean = false>(optio
|
|
|
4915
5024
|
* `POST /v1/voice/calls/web/dial` with the returned `credentialId` to
|
|
4916
5025
|
* place the call. The split avoids bridging to a browser that has not
|
|
4917
5026
|
* finished registering. The token lives ~1 hour (it must outlive the
|
|
4918
|
-
* whole call, not
|
|
5027
|
+
* whole call, not only the handshake).
|
|
4919
5028
|
*
|
|
4920
5029
|
*/
|
|
4921
5030
|
export const createVoiceWebSession = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<unknown, ThrowOnError>) => {
|
|
@@ -5006,7 +5115,7 @@ export const listSmsOptOuts = <ThrowOnError extends boolean = false>(options?: O
|
|
|
5006
5115
|
|
|
5007
5116
|
/**
|
|
5008
5117
|
* Create an alphanumeric sender ID
|
|
5009
|
-
* Registers an alphanumeric sender ID (e.g. `ZERNIO`)
|
|
5118
|
+
* Registers an alphanumeric sender ID (e.g. `ZERNIO`), a branded `from`
|
|
5010
5119
|
* for one-way international SMS. No phone number purchase or carrier
|
|
5011
5120
|
* registration is needed; once created, pass it as `from` on
|
|
5012
5121
|
* `POST /v1/sms/messages`.
|
|
@@ -5016,7 +5125,7 @@ export const listSmsOptOuts = <ThrowOnError extends boolean = false>(options?: O
|
|
|
5016
5125
|
* text-only, and recipients cannot reply. Sender IDs that impersonate
|
|
5017
5126
|
* well-known brands or institutions are rejected. Names are not
|
|
5018
5127
|
* exclusive: the same sender ID can be registered by any number of
|
|
5019
|
-
*
|
|
5128
|
+
* teams. Creating the same sender ID again is a no-op
|
|
5020
5129
|
* (re-activates it after a delete).
|
|
5021
5130
|
*
|
|
5022
5131
|
*/
|
|
@@ -5039,7 +5148,7 @@ export const listSmsSenderIds = <ThrowOnError extends boolean = false>(options?:
|
|
|
5039
5148
|
|
|
5040
5149
|
/**
|
|
5041
5150
|
* Request a higher sender ID daily limit
|
|
5042
|
-
* Asks support to raise the
|
|
5151
|
+
* Asks support to raise the team's daily sender-ID message cap.
|
|
5043
5152
|
* There is no self-serve raise: the request (desired cap + use case) is
|
|
5044
5153
|
* reviewed manually, usually within a business day.
|
|
5045
5154
|
*
|
|
@@ -5120,8 +5229,8 @@ export const preflightSmsRegistration = <ThrowOnError extends boolean = false>(o
|
|
|
5120
5229
|
* Deactivate a brand/campaign registration
|
|
5121
5230
|
* Terminates the campaign with the carrier registry so the recurring
|
|
5122
5231
|
* monthly campaign fee stops (carriers bill the first 3 months of a
|
|
5123
|
-
* campaign regardless). Numbers covered by it can no longer SEND texts
|
|
5124
|
-
* receiving is unaffected
|
|
5232
|
+
* campaign regardless). Numbers covered by it can no longer SEND texts
|
|
5233
|
+
* (receiving is unaffected) until they're registered under a new brand.
|
|
5125
5234
|
* Irreversible: a deactivated campaign cannot be restored; texting again
|
|
5126
5235
|
* later requires a new registration (new one-time and review fees).
|
|
5127
5236
|
* Idempotent.
|
|
@@ -5162,7 +5271,7 @@ export const verifySmsRegistrationOtp = <ThrowOnError extends boolean = false>(o
|
|
|
5162
5271
|
/**
|
|
5163
5272
|
* Re-send the sole-prop OTP
|
|
5164
5273
|
* Re-sends the sole-proprietor verification PIN to the brand's mobile
|
|
5165
|
-
* number
|
|
5274
|
+
* number. Use it when the original code expired or never arrived. Only
|
|
5166
5275
|
* valid while the registration is pending and awaiting its OTP; rate
|
|
5167
5276
|
* limited to one send per minute.
|
|
5168
5277
|
*
|
|
@@ -5201,7 +5310,7 @@ export const appealSmsRegistration = <ThrowOnError extends boolean = false>(opti
|
|
|
5201
5310
|
* Replies to a reviewer change request on a registration in
|
|
5202
5311
|
* `changes_requested` state: a note, hosted document URLs (from
|
|
5203
5312
|
* `POST /v1/sms/opt-in-proof`), or both, sent together. The registration
|
|
5204
|
-
* returns to `requested` (back in review)
|
|
5313
|
+
* returns to `requested` (back in review), and you do not need to resubmit the
|
|
5205
5314
|
* whole registration. To change the submitted brand/campaign fields
|
|
5206
5315
|
* themselves, resubmit via `POST /v1/sms/registrations` with
|
|
5207
5316
|
* `resubmitRequestId` instead.
|
|
@@ -5218,7 +5327,7 @@ export const respondToSmsRegistrationReview = <ThrowOnError extends boolean = fa
|
|
|
5218
5327
|
* Upload opt-in form proof
|
|
5219
5328
|
* Hosts a screenshot (or PDF) of your SMS opt-in form and returns its
|
|
5220
5329
|
* public URL. Include that URL in the campaign's `messageFlow` (the
|
|
5221
|
-
* opt-in workflow text)
|
|
5330
|
+
* opt-in workflow text). The carrier registry has no attachment field,
|
|
5222
5331
|
* so reviewers verify consent by opening links in that answer. Works
|
|
5223
5332
|
* before a registration exists (use it when registering) and for
|
|
5224
5333
|
* appeals. `/v1/sms/registrations/{id}/opt-in-proof` is an alias.
|
|
@@ -5240,7 +5349,7 @@ export const uploadSmsOptInProofFile = <ThrowOnError extends boolean = false>(op
|
|
|
5240
5349
|
* Upload opt-in form proof for an appeal
|
|
5241
5350
|
* Hosts a screenshot (or PDF) of your SMS opt-in form and returns its
|
|
5242
5351
|
* public URL. Carrier reviewers reject campaigns whose consent can't be
|
|
5243
|
-
* verified and ask for a "link/screenshot of the opt-in form"
|
|
5352
|
+
* verified and ask for a "link/screenshot of the opt-in form". The
|
|
5244
5353
|
* registry has no attachment field, so include the returned URL inside
|
|
5245
5354
|
* the `messageFlow` you submit with the appeal
|
|
5246
5355
|
* (`POST /v1/sms/registrations/{id}/appeal`).
|
|
@@ -5321,7 +5430,7 @@ export const updateWhatsAppBusinessProfile = <ThrowOnError extends boolean = fal
|
|
|
5321
5430
|
* uploads the image bytes, then updates the business profile with the resulting handle.
|
|
5322
5431
|
*
|
|
5323
5432
|
* Provide the image either as a binary upload (`multipart/form-data` with `file`)
|
|
5324
|
-
* or as a download URL (`application/json` with `url`)
|
|
5433
|
+
* or as a download URL (`application/json` with `url`). With a URL we fetch the
|
|
5325
5434
|
* image server-side and upload the bytes for you. Meta's profile-photo API is
|
|
5326
5435
|
* bytes-only, so there is no direct URL passthrough. JPEG/PNG, max 5MB either way.
|
|
5327
5436
|
*
|
|
@@ -5529,7 +5638,7 @@ export const listWhatsAppAccountEvents = <ThrowOnError extends boolean = false>(
|
|
|
5529
5638
|
* Get CTWA conversions dataset
|
|
5530
5639
|
* Returns the Meta Click-to-WhatsApp conversions dataset currently linked
|
|
5531
5640
|
* to the WhatsApp account, if one has been provisioned. Reads only from
|
|
5532
|
-
* the stored `metadata.metaCapiDatasetId
|
|
5641
|
+
* the stored `metadata.metaCapiDatasetId`, never hits Meta, never
|
|
5533
5642
|
* creates a dataset. Use this to detect whether `POST /v1/whatsapp/conversions`
|
|
5534
5643
|
* is configured for an account.
|
|
5535
5644
|
*
|
|
@@ -5547,7 +5656,7 @@ export const getWhatsAppDataset = <ThrowOnError extends boolean = false>(options
|
|
|
5547
5656
|
* Click-to-WhatsApp ad events are reported against via the Conversions
|
|
5548
5657
|
* API, and persists its ID on the account as `metadata.metaCapiDatasetId`.
|
|
5549
5658
|
*
|
|
5550
|
-
* The call is GET-first idempotent
|
|
5659
|
+
* The call is GET-first idempotent: a WABA can only own one CTWA
|
|
5551
5660
|
* dataset, so a second call after a successful provision is a safe no-op
|
|
5552
5661
|
* that returns the same ID with `created: false`.
|
|
5553
5662
|
*
|
|
@@ -5585,7 +5694,7 @@ export const listPhoneNumbers = <ThrowOnError extends boolean = false>(options?:
|
|
|
5585
5694
|
* track Meta pre-verification (US sync path) and, for regulated (Tier 3/4)
|
|
5586
5695
|
* numbers, the async lifecycle: pending_regulatory → active (or
|
|
5587
5696
|
* regulatory_declined). When a regulated number has an Onfido ID step,
|
|
5588
|
-
* `onfidoVerificationUrl` appears here once the order is placed
|
|
5697
|
+
* `onfidoVerificationUrl` appears here once the order is placed. Forward
|
|
5589
5698
|
* it to the end user. (Or subscribe to the whatsapp.number.* webhooks
|
|
5590
5699
|
* instead of polling.)
|
|
5591
5700
|
*
|
|
@@ -5600,7 +5709,7 @@ export const getPhoneNumber = <ThrowOnError extends boolean = false>(options: Op
|
|
|
5600
5709
|
/**
|
|
5601
5710
|
* Release phone number
|
|
5602
5711
|
* Release a purchased phone number. This will:
|
|
5603
|
-
* 1. Disconnect any linked WhatsApp
|
|
5712
|
+
* 1. Disconnect any linked WhatsApp account
|
|
5604
5713
|
* 2. Decrement the Stripe subscription quantity (or cancel if last number)
|
|
5605
5714
|
* 3. Release the number from Telnyx
|
|
5606
5715
|
* 4. Mark the number as released
|
|
@@ -5696,7 +5805,7 @@ export const checkPhoneNumberAvailability = <ThrowOnError extends boolean = fals
|
|
|
5696
5805
|
*
|
|
5697
5806
|
* List all WhatsApp phone numbers purchased by the authenticated user.
|
|
5698
5807
|
* By default, released numbers are excluded. Connected (bring-your-own)
|
|
5699
|
-
* numbers are returned in the separate `connected` array
|
|
5808
|
+
* numbers are returned in the separate `connected` array. They are not
|
|
5700
5809
|
* billed and have no provisioning lifecycle.
|
|
5701
5810
|
*
|
|
5702
5811
|
*/
|
|
@@ -5826,7 +5935,7 @@ export const getPhoneNumberKycForm = <ThrowOnError extends boolean = false>(opti
|
|
|
5826
5935
|
*
|
|
5827
5936
|
* Before submitting, call GET /v1/phone-numbers/availability to
|
|
5828
5937
|
* check the country has deliverable inventory and, for geographic-match
|
|
5829
|
-
* countries, which area the address must be in
|
|
5938
|
+
* countries, which area the address must be in. Otherwise the submission
|
|
5830
5939
|
* can pass review yet never be assignable a number.
|
|
5831
5940
|
*
|
|
5832
5941
|
*/
|
|
@@ -5844,7 +5953,7 @@ export const submitPhoneNumberKyc = <ThrowOnError extends boolean = false>(optio
|
|
|
5844
5953
|
* the account holder can see what's on file before reusing it. Returned
|
|
5845
5954
|
* inline as `application/pdf` (uploads are normalized to PDF). Auth-scoped:
|
|
5846
5955
|
* a document is viewable only when its id is referenced by one of the
|
|
5847
|
-
* caller's own numbers
|
|
5956
|
+
* caller's own numbers. Otherwise `404`.
|
|
5848
5957
|
*
|
|
5849
5958
|
*/
|
|
5850
5959
|
export const viewPhoneNumberKycDocument = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ViewPhoneNumberKycDocumentData, ThrowOnError>) => {
|
|
@@ -5894,7 +6003,7 @@ export const validatePhoneNumberKycAddress = <ThrowOnError extends boolean = fal
|
|
|
5894
6003
|
/**
|
|
5895
6004
|
* Create a hosted KYC link
|
|
5896
6005
|
* Create a single-use, 7-day hosted KYC link that your end customer
|
|
5897
|
-
* completes WITHOUT a Zernio login
|
|
6006
|
+
* completes WITHOUT a Zernio login. Useful when the person who holds the
|
|
5898
6007
|
* ID and address is not your team. They fill the regulated verification on
|
|
5899
6008
|
* a Zernio-hosted page; the number provisions under YOUR account once they
|
|
5900
6009
|
* submit. Only regulated (KYC) countries are valid: a country that does not
|
|
@@ -5902,7 +6011,7 @@ export const validatePhoneNumberKycAddress = <ThrowOnError extends boolean = fal
|
|
|
5902
6011
|
*
|
|
5903
6012
|
* White-label the page with `branding` (your company name, logo, brand
|
|
5904
6013
|
* color). Supply `redirect_url` to send the end customer back to your own
|
|
5905
|
-
* site after a successful submit (completion params are appended
|
|
6014
|
+
* site after a successful submit (completion params are appended; see
|
|
5906
6015
|
* below). Listen for the `whatsapp.number.kyc_submitted` webhook to react
|
|
5907
6016
|
* when the form is completed.
|
|
5908
6017
|
*
|
|
@@ -5925,7 +6034,7 @@ export const createPhoneNumberKycLink = <ThrowOnError extends boolean = false>(o
|
|
|
5925
6034
|
*
|
|
5926
6035
|
* Run the portability check (POST /v1/phone-numbers/port-in/check) and
|
|
5927
6036
|
* upload the two documents (POST /v1/phone-numbers/port-in/documents)
|
|
5928
|
-
* first
|
|
6037
|
+
* first. Uploaded documents must be attached to an order within 30
|
|
5929
6038
|
* minutes or the carrier deletes them, so upload right before this call.
|
|
5930
6039
|
* The carrier may split the numbers into several orders (by country,
|
|
5931
6040
|
* number type, losing carrier); `orders` carries per-order results, and a
|
|
@@ -6000,7 +6109,7 @@ export const uploadPhoneNumberPortInDocument = <ThrowOnError extends boolean = f
|
|
|
6000
6109
|
/**
|
|
6001
6110
|
* Country porting requirements
|
|
6002
6111
|
* The country-specific information a port-in needs BEYOND the LOA,
|
|
6003
|
-
* invoice, and account/address details
|
|
6112
|
+
* invoice, and account/address details, such as an ID copy, proof of
|
|
6004
6113
|
* address, a tax id, or a porting code. Call it after the portability
|
|
6005
6114
|
* check (which returns each number's `countryCode` and
|
|
6006
6115
|
* `phoneNumberType`), render the fields, and pass the collected values as
|
|
@@ -6068,7 +6177,7 @@ export const reviewPhoneNumberKycPacket = <ThrowOnError extends boolean = false>
|
|
|
6068
6177
|
* Get declined requirements
|
|
6069
6178
|
* For a number in `regulatory_declined`, returns ONLY the requirements the
|
|
6070
6179
|
* reviewer flagged declined, as a form spec (same shape as the KYC form GET).
|
|
6071
|
-
* The customer fixes
|
|
6180
|
+
* The customer fixes only those, because Telnyx supports correcting a declined
|
|
6072
6181
|
* requirement group and re-submitting it (no new number/group). Falls back
|
|
6073
6182
|
* to the full spec if the provider exposes no per-requirement flags.
|
|
6074
6183
|
*
|
|
@@ -6086,7 +6195,7 @@ export const getPhoneNumberRemediation = <ThrowOnError extends boolean = false>(
|
|
|
6086
6195
|
* PATCH them onto the SAME requirement group and re-submit it for approval;
|
|
6087
6196
|
* the number goes `regulatory_declined` → `pending_regulatory`. No new
|
|
6088
6197
|
* number and no new billing. Body shape matches the KYC submit (values /
|
|
6089
|
-
* documents / address)
|
|
6198
|
+
* documents / address). Send only the corrected fields.
|
|
6090
6199
|
*
|
|
6091
6200
|
*/
|
|
6092
6201
|
export const remediatePhoneNumber = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemediatePhoneNumberData, ThrowOnError>) => {
|
|
@@ -6099,7 +6208,7 @@ export const remediatePhoneNumber = <ThrowOnError extends boolean = false>(optio
|
|
|
6099
6208
|
/**
|
|
6100
6209
|
* Reply to the regulatory reviewer
|
|
6101
6210
|
* Post a free-text reply (with optional file attachments) to the reviewer
|
|
6102
|
-
* on a number awaiting remediation
|
|
6211
|
+
* on a number awaiting remediation, for asks the structured form can't
|
|
6103
6212
|
* express (e.g. "is this personal or business?"). Attachments are stored by
|
|
6104
6213
|
* us and their links are added to the reviewer's comment thread (the
|
|
6105
6214
|
* carrier's number order takes no loose files). A reply to a comment-style
|
|
@@ -6174,7 +6283,7 @@ export const getWhatsAppNumberKycForm = <ThrowOnError extends boolean = false>(o
|
|
|
6174
6283
|
*
|
|
6175
6284
|
* Before submitting, call GET /v1/whatsapp/phone-numbers/availability to
|
|
6176
6285
|
* check the country has deliverable inventory and, for geographic-match
|
|
6177
|
-
* countries, which area the address must be in
|
|
6286
|
+
* countries, which area the address must be in. Otherwise the submission
|
|
6178
6287
|
* can pass review yet never be assignable a number.
|
|
6179
6288
|
*
|
|
6180
6289
|
*/
|
|
@@ -6237,7 +6346,7 @@ export const validateWhatsAppNumberKycAddress = <ThrowOnError extends boolean =
|
|
|
6237
6346
|
* integrations should use that path.
|
|
6238
6347
|
*
|
|
6239
6348
|
* Create a single-use, 7-day hosted KYC link that your end customer
|
|
6240
|
-
* completes WITHOUT a Zernio login
|
|
6349
|
+
* completes WITHOUT a Zernio login. Useful when the person who holds the
|
|
6241
6350
|
* ID and address is not your team. They fill the regulated verification on
|
|
6242
6351
|
* a Zernio-hosted page; the number provisions under YOUR account once they
|
|
6243
6352
|
* submit. Only regulated (KYC) countries are valid: a country that does not
|
|
@@ -6245,7 +6354,7 @@ export const validateWhatsAppNumberKycAddress = <ThrowOnError extends boolean =
|
|
|
6245
6354
|
*
|
|
6246
6355
|
* White-label the page with `branding` (your company name, logo, brand
|
|
6247
6356
|
* color). Supply `redirect_url` to send the end customer back to your own
|
|
6248
|
-
* site after a successful submit (completion params are appended
|
|
6357
|
+
* site after a successful submit (completion params are appended; see
|
|
6249
6358
|
* below). Listen for the `whatsapp.number.kyc_submitted` webhook to react
|
|
6250
6359
|
* when the form is completed.
|
|
6251
6360
|
*
|
|
@@ -6267,7 +6376,7 @@ export const createWhatsAppNumberKycLink = <ThrowOnError extends boolean = false
|
|
|
6267
6376
|
* carry a profileId and this endpoint moves them together.
|
|
6268
6377
|
*
|
|
6269
6378
|
* Use this instead of `PATCH /v1/accounts/{accountId}`: that one moves the
|
|
6270
|
-
*
|
|
6379
|
+
* account only and leaves the number itself pinned to its original
|
|
6271
6380
|
* profile, which splits the number across two profiles. Connecting a
|
|
6272
6381
|
* Zernio-provisioned number from any profile but its own is rejected with a
|
|
6273
6382
|
* `409` (`WHATSAPP_NUMBER_PINNED_TO_PROFILE`). This endpoint is how you
|
|
@@ -6294,7 +6403,7 @@ export const moveWhatsAppNumberToProfile = <ThrowOnError extends boolean = false
|
|
|
6294
6403
|
*
|
|
6295
6404
|
* For a number in `regulatory_declined`, returns ONLY the requirements the
|
|
6296
6405
|
* reviewer flagged declined, as a form spec (same shape as the KYC form GET).
|
|
6297
|
-
* The customer fixes
|
|
6406
|
+
* The customer fixes only those, because Telnyx supports correcting a declined
|
|
6298
6407
|
* requirement group and re-submitting it (no new number/group). Falls back
|
|
6299
6408
|
* to the full spec if the provider exposes no per-requirement flags.
|
|
6300
6409
|
*
|
|
@@ -6316,7 +6425,7 @@ export const getWhatsAppNumberRemediation = <ThrowOnError extends boolean = fals
|
|
|
6316
6425
|
* PATCH them onto the SAME requirement group and re-submit it for approval;
|
|
6317
6426
|
* the number goes `regulatory_declined` → `pending_regulatory`. No new
|
|
6318
6427
|
* number and no new billing. Body shape matches the KYC submit (values /
|
|
6319
|
-
* documents / address)
|
|
6428
|
+
* documents / address). Send only the corrected fields.
|
|
6320
6429
|
*
|
|
6321
6430
|
*/
|
|
6322
6431
|
export const remediateWhatsAppNumber = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemediateWhatsAppNumberData, ThrowOnError>) => {
|
|
@@ -6412,8 +6521,8 @@ export const deletePhoneNumberStockWatch = <ThrowOnError extends boolean = false
|
|
|
6412
6521
|
*
|
|
6413
6522
|
* The `digestPassword` is returned only by this call (and by
|
|
6414
6523
|
* rotate-credentials); store it immediately. Attach any number of numbers
|
|
6415
|
-
* to a trunk. Several trunks may point at the same host
|
|
6416
|
-
* own credentials and spend cap, so separate
|
|
6524
|
+
* to a trunk. Several trunks may point at the same host. Each carries its
|
|
6525
|
+
* own credentials and spend cap, so separate destinations (e.g.
|
|
6417
6526
|
* an agency's clients) stay isolated.
|
|
6418
6527
|
*
|
|
6419
6528
|
*/
|
|
@@ -6510,7 +6619,7 @@ export const detachNumberFromSipTrunk = <ThrowOnError extends boolean = false>(o
|
|
|
6510
6619
|
* US numbers additionally need a carrier registration before messages
|
|
6511
6620
|
* deliver; the response tells you which path applies:
|
|
6512
6621
|
* - `alreadyRegistered: true`: a prior registration still covers this
|
|
6513
|
-
* number; SMS was
|
|
6622
|
+
* number; SMS was reactivated.
|
|
6514
6623
|
* - `reusable` set: you have an approved registration this number can
|
|
6515
6624
|
* join in one click via
|
|
6516
6625
|
* `POST /v1/phone-numbers/{id}/sms/reuse-registration`
|
|
@@ -6531,7 +6640,7 @@ export const enableSmsOnNumber = <ThrowOnError extends boolean = false>(options:
|
|
|
6531
6640
|
/**
|
|
6532
6641
|
* Disable SMS on a number
|
|
6533
6642
|
* Turns off SMS for the number (deactivates its SMS account). The carrier
|
|
6534
|
-
* registration is untouched, so re-enabling later
|
|
6643
|
+
* registration is untouched, so re-enabling later reactivates it,
|
|
6535
6644
|
* with no re-registration.
|
|
6536
6645
|
*
|
|
6537
6646
|
*/
|
|
@@ -6565,7 +6674,7 @@ export const reuseSmsRegistrationForNumber = <ThrowOnError extends boolean = fal
|
|
|
6565
6674
|
* sub-resource). Encrypted secrets are never returned; only a boolean
|
|
6566
6675
|
* saying whether a SIP password is stored. The account-scoped read
|
|
6567
6676
|
* (`GET /v1/whatsapp/calling?accountId=`) remains for callers that only
|
|
6568
|
-
* know the
|
|
6677
|
+
* know the account id, and additionally carries account-level
|
|
6569
6678
|
* extras (billing eligibility, current-period spend).
|
|
6570
6679
|
*
|
|
6571
6680
|
*/
|
|
@@ -6662,7 +6771,7 @@ export const verifyWhatsAppCallerId = <ThrowOnError extends boolean = false>(opt
|
|
|
6662
6771
|
* track Meta pre-verification (US sync path) and, for regulated (Tier 3/4)
|
|
6663
6772
|
* numbers, the async lifecycle: pending_regulatory → active (or
|
|
6664
6773
|
* regulatory_declined). When a regulated number has an Onfido ID step,
|
|
6665
|
-
* `onfidoVerificationUrl` appears here once the order is placed
|
|
6774
|
+
* `onfidoVerificationUrl` appears here once the order is placed. Forward
|
|
6666
6775
|
* it to the end user. (Or subscribe to the whatsapp.number.* webhooks
|
|
6667
6776
|
* instead of polling.)
|
|
6668
6777
|
*
|
|
@@ -6681,7 +6790,7 @@ export const getWhatsAppPhoneNumber = <ThrowOnError extends boolean = false>(opt
|
|
|
6681
6790
|
* integrations should use that path.
|
|
6682
6791
|
*
|
|
6683
6792
|
* Release a purchased phone number. This will:
|
|
6684
|
-
* 1. Disconnect any linked WhatsApp
|
|
6793
|
+
* 1. Disconnect any linked WhatsApp account
|
|
6685
6794
|
* 2. Decrement the Stripe subscription quantity (or cancel if last number)
|
|
6686
6795
|
* 3. Release the number from Telnyx
|
|
6687
6796
|
* 4. Mark the number as released
|
|
@@ -6714,7 +6823,7 @@ export const listWhatsAppSandboxSessions = <ThrowOnError extends boolean = false
|
|
|
6714
6823
|
* Creates (or refreshes) a pending sandbox session for the given phone and
|
|
6715
6824
|
* immediately fires the verified sandbox template from the shared sandbox
|
|
6716
6825
|
* number to that phone. The session activates when the phone owner replies
|
|
6717
|
-
* to that WhatsApp message
|
|
6826
|
+
* to that WhatsApp message: the reply itself is proof of ownership.
|
|
6718
6827
|
*
|
|
6719
6828
|
* One phone per user: if the caller already has a non-expired session for
|
|
6720
6829
|
* a DIFFERENT phone, the request is rejected with `invalid_field_value`
|
|
@@ -6738,8 +6847,8 @@ export const createWhatsAppSandboxSession = <ThrowOnError extends boolean = fals
|
|
|
6738
6847
|
* Revoke a sandbox session
|
|
6739
6848
|
* Hard-deletes the session. The user loses the ability to send to that
|
|
6740
6849
|
* phone via the sandbox until they re-activate it. Existing conversations
|
|
6741
|
-
* and messages already exchanged with that phone are untouched
|
|
6742
|
-
*
|
|
6850
|
+
* and messages already exchanged with that phone are untouched.
|
|
6851
|
+
* Revocation only blocks FUTURE sends.
|
|
6743
6852
|
*
|
|
6744
6853
|
* Sessions belonging to other users cannot be revoked; the response is
|
|
6745
6854
|
* the same 400 as "session not found" so existence isn't leaked.
|
|
@@ -7015,7 +7124,7 @@ export const getWhatsAppFlowPreview = <ThrowOnError extends boolean = false>(opt
|
|
|
7015
7124
|
* List flow versions
|
|
7016
7125
|
* List the flow's version history (the clone lineage Zernio tracks, since Meta has no
|
|
7017
7126
|
* native versioning), newest version first. Each entry is enriched with the version's
|
|
7018
|
-
* live name and status from Meta. A flow with no lineage returns
|
|
7127
|
+
* live name and status from Meta. A flow with no lineage returns only itself as version 1.
|
|
7019
7128
|
*
|
|
7020
7129
|
*/
|
|
7021
7130
|
export const listWhatsAppFlowVersions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListWhatsAppFlowVersionsData, ThrowOnError>) => {
|
|
@@ -7104,7 +7213,7 @@ export const sendWhatsAppFlowMessage = <ThrowOnError extends boolean = false>(op
|
|
|
7104
7213
|
* List flow responses
|
|
7105
7214
|
* List the responses customers submitted when completing a flow (parsed from the
|
|
7106
7215
|
* nfm_reply messages received via webhook), newest first. Scope to a single flow
|
|
7107
|
-
* with `flowId
|
|
7216
|
+
* with `flowId`, which matches responses whose flow_token carries the `<flowId>:`
|
|
7108
7217
|
* prefix that Zernio stamps on auto-generated tokens at send time. Responses sent
|
|
7109
7218
|
* with a custom integrator-supplied flow_token are not attributed to a flow.
|
|
7110
7219
|
*
|
|
@@ -7461,7 +7570,7 @@ export const listWorkflowExecutions = <ThrowOnError extends boolean = false>(opt
|
|
|
7461
7570
|
|
|
7462
7571
|
/**
|
|
7463
7572
|
* Manually start a workflow run
|
|
7464
|
-
* Kick off a run without waiting for an inbound message (useful for testing). Target an existing conversation by `conversationId`, or
|
|
7573
|
+
* Kick off a run without waiting for an inbound message (useful for testing). Target an existing conversation by `conversationId`, or (WhatsApp only) a phone number via `to` (a conversation is found or created). `text` seeds the run's `lastMessage` variable. The graph must be runnable.
|
|
7465
7574
|
*
|
|
7466
7575
|
*/
|
|
7467
7576
|
export const triggerWorkflow = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<TriggerWorkflowData, ThrowOnError>) => {
|
|
@@ -7485,7 +7594,7 @@ export const listWorkflowExecutionEvents = <ThrowOnError extends boolean = false
|
|
|
7485
7594
|
|
|
7486
7595
|
/**
|
|
7487
7596
|
* Duplicate a workflow
|
|
7488
|
-
* Create an independent copy of a workflow's graph, name, description, and account binding. The copy is created in `draft` status with fresh execution counters and a new id
|
|
7597
|
+
* Create an independent copy of a workflow's graph, name, description, and account binding. The copy is created in `draft` status with fresh execution counters and a new id. Execution history is NOT copied. Useful for branching off a known-good workflow before making experimental edits.
|
|
7489
7598
|
*
|
|
7490
7599
|
*/
|
|
7491
7600
|
export const duplicateWorkflow = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DuplicateWorkflowData, ThrowOnError>) => {
|
|
@@ -7497,7 +7606,7 @@ export const duplicateWorkflow = <ThrowOnError extends boolean = false>(options:
|
|
|
7497
7606
|
|
|
7498
7607
|
/**
|
|
7499
7608
|
* List a workflow's version history
|
|
7500
|
-
* Returns the snapshot history. A new version is recorded automatically before every PATCH to `nodes` / `edges` / `entryNodeId`, and explicitly when a previous version is restored. Lightweight list
|
|
7609
|
+
* Returns the snapshot history. A new version is recorded automatically before every PATCH to `nodes` / `edges` / `entryNodeId`, and explicitly when a previous version is restored. Lightweight list. Call `getWorkflowVersion` for the full snapshot graph.
|
|
7501
7610
|
*
|
|
7502
7611
|
*/
|
|
7503
7612
|
export const listWorkflowVersions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListWorkflowVersionsData, ThrowOnError>) => {
|
|
@@ -7751,7 +7860,7 @@ export const listCommentAutomationLogs = <ThrowOnError extends boolean = false>(
|
|
|
7751
7860
|
*
|
|
7752
7861
|
* To find the Zernio ad behind a comment you see in Meta Business Manager, filter by
|
|
7753
7862
|
* platformAdId (the Meta ad ID), effectiveObjectStoryId (Facebook), or
|
|
7754
|
-
* effectiveInstagramMediaId (Instagram)
|
|
7863
|
+
* effectiveInstagramMediaId (Instagram). Those are the post/media the ad's engagement
|
|
7755
7864
|
* lives on, and are also returned on each ad's `creative` object. Then call
|
|
7756
7865
|
* GET /v1/ads/{adId}/comments with the returned ad id.
|
|
7757
7866
|
*
|
|
@@ -7766,7 +7875,7 @@ export const listAds = <ThrowOnError extends boolean = false>(options?: OptionsL
|
|
|
7766
7875
|
/**
|
|
7767
7876
|
* Google Ads search terms report
|
|
7768
7877
|
* The actual search queries that triggered your ads, with matched-keyword
|
|
7769
|
-
* status and spend metrics
|
|
7878
|
+
* status and spend metrics, the raw material for wasted-spend analysis and
|
|
7770
7879
|
* negative-keyword lists. Reads Google's `search_term_view`, cached for
|
|
7771
7880
|
* the quota window; defaults to the last 30 days. Rows are ordered by
|
|
7772
7881
|
* cost, descending. Draws on the shared Google Ads operations budget.
|
|
@@ -7954,7 +8063,7 @@ export const createAdCampaign = <ThrowOnError extends boolean = false>(options:
|
|
|
7954
8063
|
* `updated` / `skipped` describe only the ads whose own stored status CHANGED alongside it, so
|
|
7955
8064
|
* `updated: 0` is a normal successful response, not a no-op. Ads are skipped when they are in a terminal
|
|
7956
8065
|
* status (rejected, completed, cancelled), already in the target state, or switched on but not yet
|
|
7957
|
-
* delivering
|
|
8066
|
+
* delivering. The last group keeps its `pending_review` / `error` status until the platform reports what
|
|
7958
8067
|
* it became. `skippedReasons` names which case applies.
|
|
7959
8068
|
*
|
|
7960
8069
|
* On Meta this flips the campaign only. An ad set paused in its own right stays paused, so pair this with
|
|
@@ -8001,7 +8110,7 @@ export const getCampaignBidding = <ThrowOnError extends boolean = false>(options
|
|
|
8001
8110
|
* | Body field | Meta | Google | Others |
|
|
8002
8111
|
* |---|---|---|---|
|
|
8003
8112
|
* | `bidStrategy` | Yes | Yes | 501 |
|
|
8004
|
-
* | `bidAmount`, `roasAverageFloor` | 400
|
|
8113
|
+
* | `bidAmount`, `roasAverageFloor` | 400 (ad-set level) | Yes | 400 |
|
|
8005
8114
|
* | `portfolioBidStrategyId` | 400 | Yes | 400 |
|
|
8006
8115
|
* | `budget` (CBO; ABO returns 409) | Yes | 501 | 501 |
|
|
8007
8116
|
* | `name` | Yes | 501 | 501 |
|
|
@@ -8125,9 +8234,9 @@ export const bulkUpdateAdCampaignStatus = <ThrowOnError extends boolean = false>
|
|
|
8125
8234
|
* any Group / Campaign / Creative whose source is `ACTIVE` gets its
|
|
8126
8235
|
* clone activated too. Duplicating an ACTIVE campaign with
|
|
8127
8236
|
* `INHERITED_FROM_SOURCE` starts a second front of spend the moment
|
|
8128
|
-
* the clone activates
|
|
8237
|
+
* the clone activates. The safe default is `PAUSED`.
|
|
8129
8238
|
*
|
|
8130
|
-
* The new hierarchy is asynchronous to materialize in our DB
|
|
8239
|
+
* The new hierarchy is asynchronous to materialize in our DB, and we
|
|
8131
8240
|
* trigger sync discovery automatically. Set `syncAfter: false` to
|
|
8132
8241
|
* skip and poll `/v1/ads/tree` on your own cadence.
|
|
8133
8242
|
*
|
|
@@ -8196,9 +8305,9 @@ export const updateCampaignTargeting = <ThrowOnError extends boolean = false>(op
|
|
|
8196
8305
|
* Ad sets (Google ad groups) synced for the connection, optionally
|
|
8197
8306
|
* filtered by platform and campaignId. Reads the `ad_sets` table
|
|
8198
8307
|
* directly, independent of the `ads` rollup GET /v1/ads/tree uses, so a
|
|
8199
|
-
*
|
|
8308
|
+
* newly created standalone ad group with no ad yet (POST /v1/ads/ad-sets,
|
|
8200
8309
|
* Google only) is visible here even though it is invisible in the tree
|
|
8201
|
-
* until an ad joins it via `
|
|
8310
|
+
* until an ad joins it via `adSetId` on POST /v1/ads/create. Returns at most 500
|
|
8202
8311
|
* rows, newest first.
|
|
8203
8312
|
*/
|
|
8204
8313
|
export const listAdSets = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListAdSetsData, ThrowOnError>) => {
|
|
@@ -8211,7 +8320,7 @@ export const listAdSets = <ThrowOnError extends boolean = false>(options?: Optio
|
|
|
8211
8320
|
/**
|
|
8212
8321
|
* Create a standalone ad group
|
|
8213
8322
|
* Google Ads compliance row C.190: creates an ad group WITHOUT an ad,
|
|
8214
|
-
* under an existing campaign. Ads join it later via `
|
|
8323
|
+
* under an existing campaign. Ads join it later via `adSetId`
|
|
8215
8324
|
* on POST /v1/ads/create. Google only; every other platform returns 501.
|
|
8216
8325
|
*
|
|
8217
8326
|
* Created `PAUSED` unless `status: ACTIVE`. The new ad group has no ad
|
|
@@ -8233,7 +8342,7 @@ export const createAdSet = <ThrowOnError extends boolean = false>(options: Optio
|
|
|
8233
8342
|
* Duplicates an ad set, including its ads and creatives by default (`deepCopy: true`),
|
|
8234
8343
|
* via Meta's native `POST /{adset-id}/copies`. The copy is created paused so callers can
|
|
8235
8344
|
* review before launching. `campaignId` retargets the copy into another campaign; omitted
|
|
8236
|
-
* = the source's own campaign. The new hierarchy materializes asynchronously
|
|
8345
|
+
* = the source's own campaign. The new hierarchy materializes asynchronously, and sync
|
|
8237
8346
|
* discovery is triggered automatically (`syncAfter: false` to skip).
|
|
8238
8347
|
*/
|
|
8239
8348
|
export const duplicateAdSet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DuplicateAdSetData, ThrowOnError>) => {
|
|
@@ -8260,7 +8369,7 @@ export const duplicateAd = <ThrowOnError extends boolean = false>(options: Optio
|
|
|
8260
8369
|
/**
|
|
8261
8370
|
* Live ad-set details incl. learning phase
|
|
8262
8371
|
* Reads the ad set live from Meta, returned verbatim. The default projection includes
|
|
8263
|
-
* `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING
|
|
8372
|
+
* `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING; Meta
|
|
8264
8373
|
* omits its `status` key on paused ad sets), delivery settings, budgets, schedule and
|
|
8265
8374
|
* targeting. `fields` is a raw-passthrough override; unknown fields return Meta's 400
|
|
8266
8375
|
* verbatim.
|
|
@@ -8309,7 +8418,7 @@ export const getAdSetDetails = <ThrowOnError extends boolean = false>(options: O
|
|
|
8309
8418
|
* doesn't allow) surface as 400s from Meta.
|
|
8310
8419
|
*
|
|
8311
8420
|
* When updating `budget` on an ABO campaign: if the parent campaign is
|
|
8312
|
-
* CBO, the response is 409 with code BUDGET_LEVEL_MISMATCH
|
|
8421
|
+
* CBO, the response is 409 with code BUDGET_LEVEL_MISMATCH. Route to
|
|
8313
8422
|
* PUT /v1/ads/campaigns/{campaignId} instead.
|
|
8314
8423
|
*
|
|
8315
8424
|
*/
|
|
@@ -8347,7 +8456,7 @@ export const deleteAdSet = <ThrowOnError extends boolean = false>(options: Optio
|
|
|
8347
8456
|
* /v1/ads/campaigns/{campaignId}/status.
|
|
8348
8457
|
*
|
|
8349
8458
|
* On Meta and LinkedIn this writes the ad set's own on/off switch
|
|
8350
|
-
* (Meta: `configured_status`), whatever delivery status its ads report
|
|
8459
|
+
* (Meta: `configured_status`), whatever delivery status its ads report:
|
|
8351
8460
|
* an ad still in review does not block resuming its ad set. The echoed
|
|
8352
8461
|
* `status` is the confirmation that it landed. Where the platform has no
|
|
8353
8462
|
* ad-set switch (TikTok and others) the toggle is emulated by flipping the
|
|
@@ -8402,13 +8511,13 @@ export const getAdTree = <ThrowOnError extends boolean = false>(options?: Option
|
|
|
8402
8511
|
/**
|
|
8403
8512
|
* Get daily account metrics
|
|
8404
8513
|
* Returns daily aggregate metrics across all ads in a SocialAccount as a single
|
|
8405
|
-
* time series
|
|
8514
|
+
* time series, one row per calendar day in the requested range. Use this for
|
|
8406
8515
|
* dashboards that draw a daily-spend or daily-conversions chart, instead of
|
|
8407
8516
|
* calling `/v1/ads/tree` once per day.
|
|
8408
8517
|
*
|
|
8409
8518
|
* `accountId` is required. The lookup is sibling-expanded so passing the `metaads`
|
|
8410
8519
|
* ID also includes ads under the linked `facebook` / `instagram` posting account
|
|
8411
|
-
* (and vice-versa)
|
|
8520
|
+
* (and vice-versa), the same convention as `/v1/ads/tree` and `/v1/ads`.
|
|
8412
8521
|
*
|
|
8413
8522
|
* Date range defaults to the last 90 days. Capped at 730 days. Ranges older
|
|
8414
8523
|
* than the ingested history return a `202` immediately with the covered part
|
|
@@ -8453,16 +8562,18 @@ export const getAd = <ThrowOnError extends boolean = false>(options: OptionsLega
|
|
|
8453
8562
|
* Per-platform support:
|
|
8454
8563
|
* - **Meta** (Facebook + Instagram): all fields supported.
|
|
8455
8564
|
* - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative
|
|
8456
|
-
* (via `/v2/ad/update/` patch-style
|
|
8565
|
+
* (via `/v2/ad/update/` patch-style: `headline` is ignored, `body` becomes `ad_text`).
|
|
8457
8566
|
* - **Google**: status, budget, KEYWORD edits via `targeting.keywords` /
|
|
8458
|
-
* `targeting.negativeKeywords`, and DEVICE bid adjustments via `targeting.devices
|
|
8459
|
-
*
|
|
8567
|
+
* `targeting.negativeKeywords`, and DEVICE bid adjustments via `targeting.devices`.
|
|
8568
|
+
* Each list you send becomes the FULL new set of its kind (criteria not in the
|
|
8460
8569
|
* list are removed); a kind left out is untouched. Any other `targeting` field
|
|
8461
8570
|
* returns 400: Google cannot mutate broad targeting post-create without recreating
|
|
8462
8571
|
* the campaign. `creative` returns 501.
|
|
8463
|
-
* - **LinkedIn**: status, budget, targeting (
|
|
8464
|
-
*
|
|
8465
|
-
*
|
|
8572
|
+
* - **LinkedIn**: status, budget, targeting (countries or regions, excludedLocations (countries),
|
|
8573
|
+
* the B2B facets, and audience segments; applied to the LinkedIn Campaign via
|
|
8574
|
+
* PARTIAL_UPDATE, and REPLACES the campaign's entire targetingCriteria, not a merge),
|
|
8575
|
+
* and creative (uploads new media, creates a replacement inline creative on the same
|
|
8576
|
+
* campaign, pauses the old one).
|
|
8466
8577
|
* - **Pinterest / X / OpenAI Ads**: status + budget only. Sending
|
|
8467
8578
|
* `targeting` or `creative` returns 501 with code `unsupported_platform_operation`.
|
|
8468
8579
|
* OpenAI Ads budget is lifetime-only (see `budget.type` below).
|
|
@@ -8514,7 +8625,7 @@ export const deleteAd = <ThrowOnError extends boolean = false>(options: OptionsL
|
|
|
8514
8625
|
|
|
8515
8626
|
/**
|
|
8516
8627
|
* Pause or resume a single ad
|
|
8517
|
-
* Ad-scoped pause/resume
|
|
8628
|
+
* Ad-scoped pause/resume: touches ONLY this ad, never its parent ad set or
|
|
8518
8629
|
* campaign (so sibling ads keep running). Thin wrapper over the `status`
|
|
8519
8630
|
* field of PUT /v1/ads/{adId}, for callers that want a URL symmetric to
|
|
8520
8631
|
* /v1/ads/campaigns/{campaignId}/status and /v1/ads/ad-sets/{adSetId}/status.
|
|
@@ -8536,7 +8647,7 @@ export const updateAdStatus = <ThrowOnError extends boolean = false>(options: Op
|
|
|
8536
8647
|
/**
|
|
8537
8648
|
* Attach extension assets to a Google Search campaign
|
|
8538
8649
|
* Attach sitelinks, callouts and/or structured snippets to an already-existing Google
|
|
8539
|
-
* Search campaign
|
|
8650
|
+
* Search campaign. These are the same builders POST /v1/ads/create uses, but without rebuilding
|
|
8540
8651
|
* the hierarchy. At least one of sitelinks, callouts or structuredSnippets is required.
|
|
8541
8652
|
*
|
|
8542
8653
|
* Google-only. Other platforms have no equivalent extension surface and return 501.
|
|
@@ -8607,7 +8718,7 @@ export const getAdPreviews = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
8607
8718
|
*
|
|
8608
8719
|
* Reads Meta live rather than the stored creative blob because Meta's signed fbcdn
|
|
8609
8720
|
* URLs carry an `oe=<hex>` expiration (image_url ~24 h, video source ~12 d). Treat
|
|
8610
|
-
* URLs as short-lived
|
|
8721
|
+
* URLs as short-lived: re-fetch this endpoint before serving or downloading assets
|
|
8611
8722
|
* instead of caching URLs beyond that window.
|
|
8612
8723
|
*/
|
|
8613
8724
|
export const getAdMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdMediaData, ThrowOnError>) => {
|
|
@@ -8744,7 +8855,7 @@ export const getAdTrackingTags = <ThrowOnError extends boolean = false>(options:
|
|
|
8744
8855
|
* - Meta: `urlTags` (array of {key,value}). Meta creatives are immutable, so this rebuilds the
|
|
8745
8856
|
* creative and repoints the ad. By DEFAULT we PRESERVE the existing creative verbatim
|
|
8746
8857
|
* (re-post its object_story_spec + the new url_tags, reusing the image), so you send `urlTags`
|
|
8747
|
-
* ALONE
|
|
8858
|
+
* ALONE, with no need to read back headline/body/CTA. `creative` (headline, body, callToAction,
|
|
8748
8859
|
* linkUrl, imageUrl) is OPTIONAL and only needed to rebuild explicitly, or for SHARE / page-post
|
|
8749
8860
|
* / dark / asset_feed creatives whose object_story_spec Meta strips (those return 422 asking for
|
|
8750
8861
|
* `creative`).
|
|
@@ -8774,7 +8885,7 @@ export const updateAdTrackingTags = <ThrowOnError extends boolean = false>(optio
|
|
|
8774
8885
|
* fallback for ads that predate the field.
|
|
8775
8886
|
*
|
|
8776
8887
|
* For Instagram-placed comments, the Instagram account that runs the ad must be connected
|
|
8777
|
-
* to Zernio
|
|
8888
|
+
* to Zernio, because those comments are read through that account's token. If no connected
|
|
8778
8889
|
* Instagram account on the profile can read the ad's media, the call returns
|
|
8779
8890
|
* ads_connection_required (the Facebook side, if any, is still readable via ?placement=facebook).
|
|
8780
8891
|
*
|
|
@@ -8830,7 +8941,7 @@ export const getAdsActivityLog = <ThrowOnError extends boolean = false>(options:
|
|
|
8830
8941
|
|
|
8831
8942
|
/**
|
|
8832
8943
|
* Create a Reach & Frequency prediction
|
|
8833
|
-
* Creates an R&F prediction
|
|
8944
|
+
* Creates an R&F prediction. This is a QUOTE, nothing is bought and no ad entities are created.
|
|
8834
8945
|
* Provide a date range plus exactly one of `budgetAmount` (Meta predicts reach) or `reach`
|
|
8835
8946
|
* (Meta predicts the budget). The response carries the estimate and its allowed bounds
|
|
8836
8947
|
* (min/max budget and reach). Predictions expire on their own; to buy, reserve one via
|
|
@@ -8873,7 +8984,7 @@ export const cancelRfReservation = <ThrowOnError extends boolean = false>(option
|
|
|
8873
8984
|
/**
|
|
8874
8985
|
* Reserve a Reach & Frequency prediction
|
|
8875
8986
|
* Locks the quoted price + inventory until the returned `expiresAt` and mints a NEW
|
|
8876
|
-
* prediction id
|
|
8987
|
+
* prediction id. Pass that RESERVED id (not the original) as `rfPredictionId` on
|
|
8877
8988
|
* POST /v1/ads/create. Release an unused reservation via DELETE.
|
|
8878
8989
|
*/
|
|
8879
8990
|
export const reserveRfPrediction = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReserveRfPredictionData, ThrowOnError>) => {
|
|
@@ -8944,7 +9055,7 @@ export const listHighDemandPeriods = <ThrowOnError extends boolean = false>(opti
|
|
|
8944
9055
|
*
|
|
8945
9056
|
* Two Meta constraints worth knowing before you call it. `timeStart` / `timeEnd` must
|
|
8946
9057
|
* fall on a 15-minute boundary, and a campaign cannot mix `ABSOLUTE` and `MULTIPLIER`
|
|
8947
|
-
* across its schedules
|
|
9058
|
+
* across its schedules; the second type is rejected with "Can't mix your budget scaling
|
|
8948
9059
|
* selection". Window rules (must sit inside the campaign's run dates, minimum lead time,
|
|
8949
9060
|
* no overlap) are Meta's and its message is forwarded verbatim.
|
|
8950
9061
|
*/
|
|
@@ -8999,7 +9110,7 @@ export const getAdCreative = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
8999
9110
|
|
|
9000
9111
|
/**
|
|
9001
9112
|
* Rename a creative
|
|
9002
|
-
* Renames a creative. Creatives are immutable on Meta beyond `name
|
|
9113
|
+
* Renames a creative. Creatives are immutable on Meta beyond `name`. For content changes
|
|
9003
9114
|
* create a new creative (POST /v1/ads/creatives) and swap it onto the ad
|
|
9004
9115
|
* (PUT /v1/ads/{adId} with `creative`).
|
|
9005
9116
|
*/
|
|
@@ -9013,7 +9124,7 @@ export const updateAdCreative = <ThrowOnError extends boolean = false>(options:
|
|
|
9013
9124
|
/**
|
|
9014
9125
|
* Delete a creative
|
|
9015
9126
|
* Deletes a creative from the library. Meta only allows deleting creatives not referenced
|
|
9016
|
-
* by any ad
|
|
9127
|
+
* by any ad; otherwise its 400 surfaces verbatim.
|
|
9017
9128
|
*/
|
|
9018
9129
|
export const deleteAdCreative = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAdCreativeData, ThrowOnError>) => {
|
|
9019
9130
|
return (options?.client ?? client).delete<DeleteAdCreativeResponse, DeleteAdCreativeError, ThrowOnError>({
|
|
@@ -9204,7 +9315,7 @@ export const getAdAccountFinance = <ThrowOnError extends boolean = false>(option
|
|
|
9204
9315
|
|
|
9205
9316
|
/**
|
|
9206
9317
|
* List ad accounts
|
|
9207
|
-
* Returns the platform ad accounts available for the given
|
|
9318
|
+
* Returns the platform ad accounts available for the given account (e.g. Meta ad
|
|
9208
9319
|
* accounts, TikTok advertiser IDs, Google Ads customer IDs).
|
|
9209
9320
|
*
|
|
9210
9321
|
* For TikTok agencies: enumerates every advertiser under every Business Center the token
|
|
@@ -9319,9 +9430,20 @@ export const boostPost = <ThrowOnError extends boolean = false>(options: Options
|
|
|
9319
9430
|
|
|
9320
9431
|
/**
|
|
9321
9432
|
* Create standalone ad
|
|
9322
|
-
*
|
|
9433
|
+
* Create a paid ad with custom creative across Meta, Google Ads, Pinterest, TikTok, X, LinkedIn, and OpenAI Ads (ChatGPT Ads).
|
|
9434
|
+
*
|
|
9435
|
+
* Three mutually-exclusive request shapes are selected by the body:
|
|
9436
|
+
*
|
|
9437
|
+
* - Legacy single-creative shape (all platforms, the default).
|
|
9438
|
+
* - Meta-only multi-creative shape via the creatives array: one ad set with N ads sharing budget and targeting.
|
|
9439
|
+
* - Attach shape via adSetId: adds one new ad to an existing ad set, inheriting its budget, targeting, and schedule (Meta, Google Ads, TikTok, and LinkedIn). On LinkedIn adSetId is the existing Campaign id, and the budget, schedule, targeting and bidding fields must be omitted.
|
|
9440
|
+
*
|
|
9441
|
+
* Per-platform required fields, budget minimums, and video-ad rules are documented on each property below.
|
|
9442
|
+
*
|
|
9443
|
+
* LinkedIn creates a Single Image or Single Video Ad backed by a Direct Sponsored Content "dark post" authored by a Company Page (see `organizationId`). Supported goals are engagement, traffic, awareness, and video_views (video ads use the `video` field; video_views requires a video), and traffic ads require `linkUrl`.
|
|
9323
9444
|
*
|
|
9324
9445
|
* **Idempotency:** this endpoint is not idempotent at the platform level (a blind retry creates a second campaign/ad set/ad). Send an `Idempotency-Key` header to make retries safe: the first request with a given key creates the ad and we store the response; a retry with the same key replays that exact response (with `Idempotent-Replayed: true`) instead of creating duplicates. Reusing a key with a different body returns 422; a key whose first request is still in flight returns 409 (retry after a short backoff). Keys are scoped to your credential and expire after 24h.
|
|
9446
|
+
*
|
|
9325
9447
|
*/
|
|
9326
9448
|
export const createStandaloneAd = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateStandaloneAdData, ThrowOnError>) => {
|
|
9327
9449
|
return (options?.client ?? client).post<CreateStandaloneAdResponse, CreateStandaloneAdError, ThrowOnError>({
|
|
@@ -9344,7 +9466,7 @@ export const listLeads = <ThrowOnError extends boolean = false>(options?: Option
|
|
|
9344
9466
|
|
|
9345
9467
|
/**
|
|
9346
9468
|
* List lead forms
|
|
9347
|
-
* Lists the Lead Gen forms owned by the account. Meta: forms on the connected Facebook Page. LinkedIn: forms owned by the ad account's Company Page
|
|
9469
|
+
* Lists the Lead Gen forms owned by the account. Meta: forms on the connected Facebook Page. LinkedIn: forms owned by the ad account's Company Page. Pass `adAccountId` (LinkedIn forms are org-owned). Requires the Ads add-on.
|
|
9348
9470
|
*
|
|
9349
9471
|
*/
|
|
9350
9472
|
export const listLeadForms = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListLeadFormsData, ThrowOnError>) => {
|
|
@@ -9356,7 +9478,7 @@ export const listLeadForms = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
9356
9478
|
|
|
9357
9479
|
/**
|
|
9358
9480
|
* Create a lead form
|
|
9359
|
-
* Creates a Lead Gen form. The form content goes inside `platformSpecificData` for both platforms (the shape is selected by the accountId's platform). Meta: created on the connected Facebook Page (POST /{page-id}/leadgen_forms); the old top-level Meta fields (questions, thankYou*, contextCard, …) are DEPRECATED but still accepted while platformSpecificData is absent
|
|
9481
|
+
* Creates a Lead Gen form. The form content goes inside `platformSpecificData` for both platforms (the shape is selected by the accountId's platform). Meta: created on the connected Facebook Page (POST /{page-id}/leadgen_forms); the old top-level Meta fields (questions, thankYou*, contextCard, …) are DEPRECATED but still accepted while platformSpecificData is absent; mixing both shapes is a 400. LinkedIn: created on the ad account's Company Page. NOT idempotent: a retry creates a second form. Meta prefilled question types (EMAIL, PHONE, FULL_NAME, …) must omit label/key; CUSTOM questions require both. LinkedIn exposes only free-text and multiple-choice questions via API (prefilled-from-profile fields are Campaign Manager UI-only). Requires the Ads add-on.
|
|
9360
9482
|
*
|
|
9361
9483
|
*/
|
|
9362
9484
|
export const createLeadForm = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateLeadFormData, ThrowOnError>) => {
|
|
@@ -9413,7 +9535,7 @@ export const createTestLead = <ThrowOnError extends boolean = false>(options: Op
|
|
|
9413
9535
|
|
|
9414
9536
|
/**
|
|
9415
9537
|
* Upload an ad image from base64
|
|
9416
|
-
* Uploads raw image bytes to the Meta ad account's image library
|
|
9538
|
+
* Uploads raw image bytes to the Meta ad account's image library, for callers whose
|
|
9417
9539
|
* creatives aren't hosted at a public URL. Returns the image `hash` (Meta's identifier for
|
|
9418
9540
|
* the asset) and the Meta-hosted `url`, which can be used directly as `imageUrl` on the
|
|
9419
9541
|
* create endpoints. Max 30 MB decoded.
|
|
@@ -9447,7 +9569,7 @@ export const listAdImages = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
9447
9569
|
*
|
|
9448
9570
|
* Accepts either an https `videoUrl` we download server-side (SSRF-guarded) or raw
|
|
9449
9571
|
* `videoBase64` bytes; exactly one is required. `videoBase64` is capped by Vercel's body
|
|
9450
|
-
* limit
|
|
9572
|
+
* limit, around 4.5 MB payload in practice, so larger videos must come via `videoUrl`.
|
|
9451
9573
|
*
|
|
9452
9574
|
* Returns the Meta `video.id` (reusable wherever `video.id` is accepted) plus Meta's
|
|
9453
9575
|
* auto-generated poster URL when available. The endpoint waits until Meta reports the
|
|
@@ -9470,7 +9592,7 @@ export const uploadAdVideo = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
9470
9592
|
*
|
|
9471
9593
|
* `source` lets you PLAY a video before picking it, which a poster frame alone can't settle
|
|
9472
9594
|
* when several videos share a first frame. It is a signed CDN URL that EXPIRES, so treat it
|
|
9473
|
-
* as good for preview at selection time only
|
|
9595
|
+
* as good for preview at selection time only. Never persist it; re-list to get a fresh one.
|
|
9474
9596
|
*
|
|
9475
9597
|
* This is the only way to reach a video uploaded OUTSIDE Zernio (Ads Manager, another
|
|
9476
9598
|
* tool); videos we uploaded also come back as `creative.videoId` on GET /v1/ads.
|
|
@@ -9525,22 +9647,28 @@ export const searchAdInterests = <ThrowOnError extends boolean = false>(options:
|
|
|
9525
9647
|
* `interests`/`behaviors` entity ids) on `POST /v1/ads/create`,
|
|
9526
9648
|
* `POST /v1/ads/targeting/reach-estimate`, and `saved_targeting` audiences.
|
|
9527
9649
|
*
|
|
9528
|
-
* The `dimension` param selects what is searched
|
|
9529
|
-
*
|
|
9530
|
-
*
|
|
9531
|
-
*
|
|
9532
|
-
*
|
|
9650
|
+
* The `dimension` param selects what is searched:
|
|
9651
|
+
*
|
|
9652
|
+
* - `geo`: locations, further scoped by `geoType`
|
|
9653
|
+
* - `interest`
|
|
9654
|
+
* - `behavior`
|
|
9655
|
+
* - `income`
|
|
9656
|
+
* - `language`: Google-only
|
|
9657
|
+
* - `workPosition`, `workEmployer`, `workIndustry`: the Meta-only work demographics, whose
|
|
9658
|
+
* ids feed `TargetingSpec.workPositions`/`workEmployers`/`workIndustries`
|
|
9659
|
+
*
|
|
9660
|
+
* Availability of each dimension varies by platform (e.g. behaviours are Meta/TikTok only).
|
|
9533
9661
|
* Work industries are a fixed ~30-entry Meta catalog with no server-side query,
|
|
9534
9662
|
* so `workIndustry` matching, ranking and `limit` happen in Zernio. `language`
|
|
9535
9663
|
* is likewise a fixed, checked-in table of Google's targetable
|
|
9536
9664
|
* `language_constant` rows (id, ISO code, name) matched by name or code, capped
|
|
9537
9665
|
* at 20, with no network call; its ids feed `TargetingSpec.languages`.
|
|
9538
|
-
*
|
|
9539
|
-
* across platforms into a single shape, so the same client code
|
|
9540
|
-
* TikTok, LinkedIn, X, Pinterest, and Google results.
|
|
9666
|
+
*
|
|
9667
|
+
* Results are normalized across platforms into a single shape, so the same client code
|
|
9668
|
+
* consumes Meta, TikTok, LinkedIn, X, Pinterest, and Google results.
|
|
9541
9669
|
*
|
|
9542
9670
|
* TikTok geo searches return every matching level in one list (`type` is
|
|
9543
|
-
* `country`, `region`, `city`, `district`, or `metro` for DMA areas)
|
|
9671
|
+
* `country`, `region`, `city`, `district`, or `metro` for DMA areas), and
|
|
9544
9672
|
* `geoType` is not applied. Results are scoped to the advertiser's targetable
|
|
9545
9673
|
* markets, and every id is usable in `regions`/`cities`/`metros` keys on
|
|
9546
9674
|
* `POST /v1/ads/create`.
|
|
@@ -9568,15 +9696,19 @@ export const searchAdInterests = <ThrowOnError extends boolean = false>(options:
|
|
|
9568
9696
|
* `limit` cutoff all happen in Zernio; the catalog is independent of any ad account
|
|
9569
9697
|
* and results never carry `audienceSize`. Names come back localized to the connected
|
|
9570
9698
|
* Pinterest account's language (there is no way to force a locale), so match against
|
|
9571
|
-
* whatever language that account returns.
|
|
9572
|
-
*
|
|
9573
|
-
* `
|
|
9574
|
-
*
|
|
9575
|
-
*
|
|
9576
|
-
*
|
|
9577
|
-
* `
|
|
9578
|
-
*
|
|
9579
|
-
* `
|
|
9699
|
+
* whatever language that account returns.
|
|
9700
|
+
*
|
|
9701
|
+
* `geoType` routes to a different Pinterest catalog:
|
|
9702
|
+
*
|
|
9703
|
+
* - `country` and `metro_area` read the locations catalog (`type` is `country` or `metro`)
|
|
9704
|
+
* - `region` reads the regions catalog (`type` is `region`, its id a `regions[].key` on
|
|
9705
|
+
* `POST /v1/ads/create`)
|
|
9706
|
+
* - `all` and the default `city` merge both catalogs with honest per-entry `type`s, since
|
|
9707
|
+
* Pinterest has no city-level catalog and `city` is an alias for `all`, not a literal
|
|
9708
|
+
* city search
|
|
9709
|
+
* - `zip`, `subcity`, `neighborhood`, `place` and `geo_market` return a 400: Pinterest
|
|
9710
|
+
* exposes no postal-code catalog, pass postal codes directly as
|
|
9711
|
+
* `targeting.zips: [{ key }]` on `POST /v1/ads/create`
|
|
9580
9712
|
*
|
|
9581
9713
|
* For geo queries, `q` should contain only the locality name (e.g. `"Amsterdam"`,
|
|
9582
9714
|
* not `"Amsterdam, NL"`). Use `countryCode` to disambiguate.
|
|
@@ -9682,7 +9814,7 @@ export const getLinkedInSupplyForecast = <ThrowOnError extends boolean = false>(
|
|
|
9682
9814
|
|
|
9683
9815
|
/**
|
|
9684
9816
|
* List Meta product catalogs
|
|
9685
|
-
* Lists the Meta product catalogs reachable from an ad account (owned + agency-shared catalogs of the ad account's business), for Advantage+ catalog ads (`goal: catalog_sales` on POST /v1/ads/create
|
|
9817
|
+
* Lists the Meta product catalogs reachable from an ad account (owned + agency-shared catalogs of the ad account's business), for Advantage+ catalog ads (`goal: catalog_sales` on POST /v1/ads/create, e.g. vehicle inventory catalogs). Read-only; uses scopes customers already granted (no reconnect needed). Catalog contents (items, feeds) are managed in Meta Commerce Manager, not through this API.
|
|
9686
9818
|
*/
|
|
9687
9819
|
export const listAdCatalogs = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogsData, ThrowOnError>) => {
|
|
9688
9820
|
return (options?.client ?? client).get<ListAdCatalogsResponse, ListAdCatalogsError, ThrowOnError>({
|
|
@@ -9693,7 +9825,7 @@ export const listAdCatalogs = <ThrowOnError extends boolean = false>(options: Op
|
|
|
9693
9825
|
|
|
9694
9826
|
/**
|
|
9695
9827
|
* List a catalog's product sets
|
|
9696
|
-
* Lists a Meta product catalog's product sets
|
|
9828
|
+
* Lists a Meta product catalog's product sets, the unit a catalog ad promotes. Pass the chosen set as `promotedObject.productSetId` on POST /v1/ads/create with `goal: catalog_sales`.
|
|
9697
9829
|
*/
|
|
9698
9830
|
export const listAdCatalogProductSets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogProductSetsData, ThrowOnError>) => {
|
|
9699
9831
|
return (options?.client ?? client).get<ListAdCatalogProductSetsResponse, ListAdCatalogProductSetsError, ThrowOnError>({
|
|
@@ -9704,7 +9836,7 @@ export const listAdCatalogProductSets = <ThrowOnError extends boolean = false>(o
|
|
|
9704
9836
|
|
|
9705
9837
|
/**
|
|
9706
9838
|
* List custom audiences
|
|
9707
|
-
* Returns custom audiences for the given ad account. Supports Meta, Google, TikTok, Pinterest, LinkedIn, and X
|
|
9839
|
+
* Returns custom audiences for the given ad account. Supports Meta, Google, TikTok, Pinterest, LinkedIn, and X.
|
|
9708
9840
|
*/
|
|
9709
9841
|
export const listAdAudiences = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdAudiencesData, ThrowOnError>) => {
|
|
9710
9842
|
return (options?.client ?? client).get<ListAdAudiencesResponse, ListAdAudiencesError, ThrowOnError>({
|
|
@@ -9802,18 +9934,23 @@ export const addUsersToAdAudience = <ThrowOnError extends boolean = false>(optio
|
|
|
9802
9934
|
* Upload the company rows of a LinkedIn `company_list` audience (account-based marketing).
|
|
9803
9935
|
* LinkedIn-only, every other platform returns 422.
|
|
9804
9936
|
*
|
|
9805
|
-
* A LinkedIn audience segment holds exactly one uploaded list, so the list you send here
|
|
9806
|
-
* segment's list instead of being appended to it: always send the full set of
|
|
9807
|
-
* only the identifier of the uploaded file, never its rows, so the
|
|
9808
|
-
*
|
|
9809
|
-
*
|
|
9810
|
-
*
|
|
9811
|
-
* LinkedIn takes up to 48h for a new audience and up to 24h for a later update, and the audience stays
|
|
9812
|
-
* `processing` meanwhile. LinkedIn recommends at least 1,000 companies for a usable match rate, and caps a
|
|
9813
|
-
* list at 300,000.
|
|
9937
|
+
* A LinkedIn audience segment holds exactly one uploaded list, so the list you send here
|
|
9938
|
+
* REPLACES the segment's list instead of being appended to it: always send the full set of
|
|
9939
|
+
* companies. LinkedIn returns only the identifier of the uploaded file, never its rows, so the
|
|
9940
|
+
* merge cannot be done for you, keep the source list on your side.
|
|
9941
|
+
*
|
|
9942
|
+
* How the matching behaves:
|
|
9814
9943
|
*
|
|
9815
|
-
*
|
|
9816
|
-
*
|
|
9944
|
+
* - Rows are plain text (not hashed), matched against LinkedIn's own company graph.
|
|
9945
|
+
* - Matching is asynchronous: LinkedIn takes up to 48h for a new audience and up to 24h for a
|
|
9946
|
+
* later update, and the audience stays `processing` meanwhile.
|
|
9947
|
+
* - LinkedIn does not document how quickly companies dropped from the list stop being targeted,
|
|
9948
|
+
* so treat removals as eventual rather than immediate.
|
|
9949
|
+
* - LinkedIn recommends at least 1,000 companies for a usable match rate, and caps a list at
|
|
9950
|
+
* 300,000.
|
|
9951
|
+
*
|
|
9952
|
+
* The initial list is sent with `companies` on `POST /v1/ads/audiences`; this endpoint is for
|
|
9953
|
+
* every change after that.
|
|
9817
9954
|
*
|
|
9818
9955
|
*/
|
|
9819
9956
|
export const replaceAdAudienceCompanies = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceAdAudienceCompaniesData, ThrowOnError>) => {
|
|
@@ -9847,7 +9984,7 @@ export const getConversionsQuality = <ThrowOnError extends boolean = false>(opti
|
|
|
9847
9984
|
* - Meta (`metaads`) via Graph API
|
|
9848
9985
|
* - Google Ads (`googleads`) via Data Manager API `ingestEvents`
|
|
9849
9986
|
* - LinkedIn (`linkedinads`) via `/rest/conversionEvents`
|
|
9850
|
-
* - TikTok (`tiktokads`) via the Offline Events API `/offline/batch/`
|
|
9987
|
+
* - TikTok (`tiktokads`) via the Offline Events API `/offline/batch/` (OFFLINE conversions only)
|
|
9851
9988
|
* - OpenAI Ads (`openaiads`) via its Conversions API (a separate host, `bzr.openai.com`)
|
|
9852
9989
|
*
|
|
9853
9990
|
* `destinationId` semantics differ per platform:
|
|
@@ -9862,7 +9999,7 @@ export const getConversionsQuality = <ThrowOnError extends boolean = false>(opti
|
|
|
9862
9999
|
* events. Each event must carry an email or phone (TikTok requires at least one). The connected
|
|
9863
10000
|
* TikTok ads account must have granted the Offline Events permission; older grants must reconnect.
|
|
9864
10001
|
*
|
|
9865
|
-
* OpenAI Ads notes: requires a tracking tag (pixel) to already exist on the account
|
|
10002
|
+
* OpenAI Ads notes: requires a tracking tag (pixel) to already exist on the account. Returns 422
|
|
9866
10003
|
* with code `TRACKING_TAG_REQUIRED` if `POST /v1/accounts/{accountId}/tracking-tags` hasn't been
|
|
9867
10004
|
* called yet.
|
|
9868
10005
|
*
|
|
@@ -9902,7 +10039,7 @@ export const sendConversions = <ThrowOnError extends boolean = false>(options: O
|
|
|
9902
10039
|
|
|
9903
10040
|
/**
|
|
9904
10041
|
* Adjust uploaded conversions
|
|
9905
|
-
* Adjust conversions that were previously uploaded via `POST /v1/ads/conversions
|
|
10042
|
+
* Adjust conversions that were previously uploaded via `POST /v1/ads/conversions`:
|
|
9906
10043
|
* retract them, restate their value, or enhance them with first-party data. Requires
|
|
9907
10044
|
* the Ads add-on.
|
|
9908
10045
|
*
|
|
@@ -9913,14 +10050,14 @@ export const sendConversions = <ThrowOnError extends boolean = false>(options: O
|
|
|
9913
10050
|
*
|
|
9914
10051
|
* Adjustment types:
|
|
9915
10052
|
*
|
|
9916
|
-
* - `RETRACTION
|
|
9917
|
-
* - `RESTATEMENT
|
|
9918
|
-
* - `ENHANCEMENT
|
|
10053
|
+
* - `RETRACTION`: remove the conversion entirely (refund, chargeback, cancelled order, churn).
|
|
10054
|
+
* - `RESTATEMENT`: change the conversion's value (upgrade / downgrade / partial refund). Send the corrected **total** value in `restatementValue` (not a delta).
|
|
10055
|
+
* - `ENHANCEMENT`: attach first-party identifiers (hashed email / phone) to an existing conversion (enhanced conversions applied after the fact).
|
|
9919
10056
|
*
|
|
9920
10057
|
* Identifying the original conversion (per adjustment):
|
|
9921
10058
|
*
|
|
9922
|
-
* - `orderId
|
|
9923
|
-
* - or `gclid` + `conversionTime
|
|
10059
|
+
* - `orderId`: the transaction ID you sent as `eventId` on the original conversion. Recommended, and **required** for `ENHANCEMENT`.
|
|
10060
|
+
* - or `gclid` + `conversionTime`: the click ID and the original conversion's time (unix seconds). Not available for `ENHANCEMENT`.
|
|
9924
10061
|
*
|
|
9925
10062
|
* `destinationId` is the conversion action resource name, e.g.
|
|
9926
10063
|
* `customers/1234567890/conversionActions/987654321` (same value you send to
|
|
@@ -9987,7 +10124,7 @@ export const createConversionAction = <ThrowOnError extends boolean = false>(opt
|
|
|
9987
10124
|
* posting to `POST /v1/ads/conversions`.
|
|
9988
10125
|
*
|
|
9989
10126
|
* For Google and LinkedIn, each destination's `type` reflects the
|
|
9990
|
-
* conversion type (PURCHASE, LEAD, SIGN_UP, etc.)
|
|
10127
|
+
* conversion type (PURCHASE, LEAD, SIGN_UP, etc.), and the event type is
|
|
9991
10128
|
* locked to the destination. For Meta and OpenAI Ads, `type` is absent:
|
|
9992
10129
|
* pixels accept any event name per request.
|
|
9993
10130
|
*
|
|
@@ -10069,7 +10206,7 @@ export const getConversionDestination = <ThrowOnError extends boolean = false>(o
|
|
|
10069
10206
|
* Partial-update a conversion rule. LinkedIn-only today. Whitelisted
|
|
10070
10207
|
* fields: `name`, `enabled`, attribution windows, `valueType`, `value`,
|
|
10071
10208
|
* `attributionType`. The rule's `type` and parent ad account are
|
|
10072
|
-
* intentionally not exposed for update
|
|
10209
|
+
* intentionally not exposed for update. Recreate the rule if those
|
|
10073
10210
|
* need to change.
|
|
10074
10211
|
*
|
|
10075
10212
|
*/
|
|
@@ -10083,7 +10220,7 @@ export const updateConversionDestination = <ThrowOnError extends boolean = false
|
|
|
10083
10220
|
/**
|
|
10084
10221
|
* Delete a conversion destination
|
|
10085
10222
|
* LinkedIn-only today. LinkedIn does not expose hard-delete on conversion
|
|
10086
|
-
* rules
|
|
10223
|
+
* rules; what their UI calls "delete" is the same `enabled: false` flip
|
|
10087
10224
|
* we apply here. The rule remains fetchable via GET with
|
|
10088
10225
|
* `status: 'inactive'`; the unified discovery endpoint hides it by
|
|
10089
10226
|
* default.
|
|
@@ -10102,7 +10239,7 @@ export const deleteConversionDestination = <ThrowOnError extends boolean = false
|
|
|
10102
10239
|
/**
|
|
10103
10240
|
* List associated campaigns
|
|
10104
10241
|
* LinkedIn-only today. Returns the campaigns currently associated with
|
|
10105
|
-
* this conversion rule.
|
|
10242
|
+
* this conversion rule. Auto-association on rule creation
|
|
10106
10243
|
* runs once at create time; campaigns created after the rule still need
|
|
10107
10244
|
* explicit association.
|
|
10108
10245
|
*
|
|
@@ -10275,7 +10412,7 @@ export const createCallAd = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
10275
10412
|
*
|
|
10276
10413
|
* - **Multi-creative**: supply a `creatives[]` array with N entries (each carrying its own headline, body, and image/video). Creates 1 campaign + 1 ad set + N ads sharing budget and targeting so Meta A/Bs the creatives inside a single auction instead of fragmenting budget across N parallel campaigns. Recommended when launching multiple creative variants for the same campaign.
|
|
10277
10414
|
*
|
|
10278
|
-
* **Attach shape.** Send `adSetId` (with either creative shape) to add the ads to an EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase
|
|
10415
|
+
* **Attach shape.** Send `adSetId` (with either creative shape) to add the ads to an EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase, the way to refresh a CTWA creative without resetting delivery. The ad set then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests` and `audienceId` are rejected with a 400 alongside it rather than silently dropped. The target ad set's `destination_type` must match the ad's destination (a WhatsApp ad needs a `WHATSAPP` ad set), otherwise Meta would accept an ad that never delivers.
|
|
10279
10416
|
*
|
|
10280
10417
|
* Prerequisites enforced by Meta (surfaced as platform_error on failure): the Facebook Page must be paired with a verified WhatsApp Business number, the WhatsApp Business Account must be business-verified, and the Meta access token must carry ads_management.
|
|
10281
10418
|
*/
|
|
@@ -10319,14 +10456,620 @@ export const createCustomConversion = <ThrowOnError extends boolean = false>(opt
|
|
|
10319
10456
|
});
|
|
10320
10457
|
};
|
|
10321
10458
|
|
|
10459
|
+
/**
|
|
10460
|
+
* Get agent setup status
|
|
10461
|
+
* One read that says where the merchant is: whether the number is eligible, whether the
|
|
10462
|
+
* Meta Business Agent terms are accepted, whether an agent exists, whether it is on, and its
|
|
10463
|
+
* settings. `manualSteps` lists what Zernio can verify is still pending (accepting the terms
|
|
10464
|
+
* in WhatsApp Manager); `unverifiedSteps` lists what Meta exposes no state for (the payment
|
|
10465
|
+
* method in Billing Hub). Never fails for those pre-setup states; it reports them as flags.
|
|
10466
|
+
*
|
|
10467
|
+
*/
|
|
10468
|
+
export const getBusinessAgentStatus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentStatusData, ThrowOnError>) => {
|
|
10469
|
+
return (options?.client ?? client).get<GetBusinessAgentStatusResponse, GetBusinessAgentStatusError, ThrowOnError>({
|
|
10470
|
+
...options,
|
|
10471
|
+
url: '/v1/accounts/{accountId}/business-agent'
|
|
10472
|
+
});
|
|
10473
|
+
};
|
|
10474
|
+
|
|
10475
|
+
/**
|
|
10476
|
+
* Create the agent
|
|
10477
|
+
* Creates the Meta Business Agent on the number and schedules Meta's data preparation.
|
|
10478
|
+
* Requires the terms to be accepted; eligibility is checked first and an ineligible
|
|
10479
|
+
* number answers 403 `business_agent_not_eligible`. Not idempotent: call it once, then
|
|
10480
|
+
* configure knowledge and skills, then enable it through the settings. Configuration
|
|
10481
|
+
* calls made in the first minute can still answer `business_agent_not_found` while Meta
|
|
10482
|
+
* prepares the workspace.
|
|
10483
|
+
*
|
|
10484
|
+
*/
|
|
10485
|
+
export const onboardBusinessAgent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<OnboardBusinessAgentData, ThrowOnError>) => {
|
|
10486
|
+
return (options?.client ?? client).post<OnboardBusinessAgentResponse, OnboardBusinessAgentError, ThrowOnError>({
|
|
10487
|
+
...options,
|
|
10488
|
+
url: '/v1/accounts/{accountId}/business-agent/onboard'
|
|
10489
|
+
});
|
|
10490
|
+
};
|
|
10491
|
+
|
|
10492
|
+
/**
|
|
10493
|
+
* List agent settings
|
|
10494
|
+
* Settings of every agent configured on the number (normally one). Pass `agentId` to read one.
|
|
10495
|
+
*/
|
|
10496
|
+
export const listBusinessAgentSettings = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentSettingsData, ThrowOnError>) => {
|
|
10497
|
+
return (options?.client ?? client).get<ListBusinessAgentSettingsResponse, ListBusinessAgentSettingsError, ThrowOnError>({
|
|
10498
|
+
...options,
|
|
10499
|
+
url: '/v1/accounts/{accountId}/business-agent/settings'
|
|
10500
|
+
});
|
|
10501
|
+
};
|
|
10502
|
+
|
|
10503
|
+
/**
|
|
10504
|
+
* Update agent settings
|
|
10505
|
+
* Partial update: fields you omit keep their value. `rollout.enabled: true` turns the agent
|
|
10506
|
+
* on for new conversations; `false` stops it on every thread. Turning it on for `EVERYONE`
|
|
10507
|
+
* needs a payment method on the Business Agent billable account (Meta accepts the call but
|
|
10508
|
+
* delivers nothing without one); `ALLOWLISTED_ONLY` does not, which is how you test with a
|
|
10509
|
+
* few numbers before billing. `never_say_phrases` replaces the whole list.
|
|
10510
|
+
*
|
|
10511
|
+
*/
|
|
10512
|
+
export const updateBusinessAgentSettings = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentSettingsData, ThrowOnError>) => {
|
|
10513
|
+
return (options?.client ?? client).patch<UpdateBusinessAgentSettingsResponse, UpdateBusinessAgentSettingsError, ThrowOnError>({
|
|
10514
|
+
...options,
|
|
10515
|
+
url: '/v1/accounts/{accountId}/business-agent/settings'
|
|
10516
|
+
});
|
|
10517
|
+
};
|
|
10518
|
+
|
|
10519
|
+
/**
|
|
10520
|
+
* List allowlisted consumers
|
|
10521
|
+
* Consumers the agent answers while `ai_audience` is ALLOWLISTED_ONLY.
|
|
10522
|
+
*/
|
|
10523
|
+
export const listBusinessAgentAllowlist = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentAllowlistData, ThrowOnError>) => {
|
|
10524
|
+
return (options?.client ?? client).get<ListBusinessAgentAllowlistResponse, ListBusinessAgentAllowlistError, ThrowOnError>({
|
|
10525
|
+
...options,
|
|
10526
|
+
url: '/v1/accounts/{accountId}/business-agent/allowlist'
|
|
10527
|
+
});
|
|
10528
|
+
};
|
|
10529
|
+
|
|
10530
|
+
/**
|
|
10531
|
+
* Allowlist a consumer
|
|
10532
|
+
* One E.164 number per call. Not idempotent.
|
|
10533
|
+
*/
|
|
10534
|
+
export const addBusinessAgentAllowlistEntry = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AddBusinessAgentAllowlistEntryData, ThrowOnError>) => {
|
|
10535
|
+
return (options?.client ?? client).post<AddBusinessAgentAllowlistEntryResponse, AddBusinessAgentAllowlistEntryError, ThrowOnError>({
|
|
10536
|
+
...options,
|
|
10537
|
+
url: '/v1/accounts/{accountId}/business-agent/allowlist'
|
|
10538
|
+
});
|
|
10539
|
+
};
|
|
10540
|
+
|
|
10541
|
+
/**
|
|
10542
|
+
* Remove an allowlisted consumer
|
|
10543
|
+
*/
|
|
10544
|
+
export const removeBusinessAgentAllowlistEntry = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveBusinessAgentAllowlistEntryData, ThrowOnError>) => {
|
|
10545
|
+
return (options?.client ?? client).delete<RemoveBusinessAgentAllowlistEntryResponse, RemoveBusinessAgentAllowlistEntryError, ThrowOnError>({
|
|
10546
|
+
...options,
|
|
10547
|
+
url: '/v1/accounts/{accountId}/business-agent/allowlist/{entryId}'
|
|
10548
|
+
});
|
|
10549
|
+
};
|
|
10550
|
+
|
|
10551
|
+
/**
|
|
10552
|
+
* Get business information
|
|
10553
|
+
* Payment methods, return policy, how to buy, shipping, description and contact details the agent answers from. Empty values until configured.
|
|
10554
|
+
*/
|
|
10555
|
+
export const getBusinessAgentBusinessInformation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentBusinessInformationData, ThrowOnError>) => {
|
|
10556
|
+
return (options?.client ?? client).get<GetBusinessAgentBusinessInformationResponse, GetBusinessAgentBusinessInformationError, ThrowOnError>({
|
|
10557
|
+
...options,
|
|
10558
|
+
url: '/v1/accounts/{accountId}/business-agent/business-information'
|
|
10559
|
+
});
|
|
10560
|
+
};
|
|
10561
|
+
|
|
10562
|
+
/**
|
|
10563
|
+
* Replace business information
|
|
10564
|
+
* Full replacement: every field you send overwrites the stored value; fields you omit are cleared.
|
|
10565
|
+
*/
|
|
10566
|
+
export const replaceBusinessAgentBusinessInformation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceBusinessAgentBusinessInformationData, ThrowOnError>) => {
|
|
10567
|
+
return (options?.client ?? client).put<ReplaceBusinessAgentBusinessInformationResponse, ReplaceBusinessAgentBusinessInformationError, ThrowOnError>({
|
|
10568
|
+
...options,
|
|
10569
|
+
url: '/v1/accounts/{accountId}/business-agent/business-information'
|
|
10570
|
+
});
|
|
10571
|
+
};
|
|
10572
|
+
|
|
10573
|
+
/**
|
|
10574
|
+
* Reset business information
|
|
10575
|
+
*/
|
|
10576
|
+
export const resetBusinessAgentBusinessInformation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ResetBusinessAgentBusinessInformationData, ThrowOnError>) => {
|
|
10577
|
+
return (options?.client ?? client).delete<ResetBusinessAgentBusinessInformationResponse, ResetBusinessAgentBusinessInformationError, ThrowOnError>({
|
|
10578
|
+
...options,
|
|
10579
|
+
url: '/v1/accounts/{accountId}/business-agent/business-information'
|
|
10580
|
+
});
|
|
10581
|
+
};
|
|
10582
|
+
|
|
10583
|
+
/**
|
|
10584
|
+
* List FAQs
|
|
10585
|
+
*/
|
|
10586
|
+
export const listBusinessAgentFaqs = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentFaqsData, ThrowOnError>) => {
|
|
10587
|
+
return (options?.client ?? client).get<ListBusinessAgentFaqsResponse, ListBusinessAgentFaqsError, ThrowOnError>({
|
|
10588
|
+
...options,
|
|
10589
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs'
|
|
10590
|
+
});
|
|
10591
|
+
};
|
|
10592
|
+
|
|
10593
|
+
/**
|
|
10594
|
+
* Create a FAQ
|
|
10595
|
+
* One specific question per entry; beyond a few hundred entries retrieval quality drops. Not idempotent.
|
|
10596
|
+
*/
|
|
10597
|
+
export const createBusinessAgentFaq = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentFaqData, ThrowOnError>) => {
|
|
10598
|
+
return (options?.client ?? client).post<CreateBusinessAgentFaqResponse, CreateBusinessAgentFaqError, ThrowOnError>({
|
|
10599
|
+
...options,
|
|
10600
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs'
|
|
10601
|
+
});
|
|
10602
|
+
};
|
|
10603
|
+
|
|
10604
|
+
/**
|
|
10605
|
+
* Get a FAQ
|
|
10606
|
+
*/
|
|
10607
|
+
export const getBusinessAgentFaq = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentFaqData, ThrowOnError>) => {
|
|
10608
|
+
return (options?.client ?? client).get<GetBusinessAgentFaqResponse, GetBusinessAgentFaqError, ThrowOnError>({
|
|
10609
|
+
...options,
|
|
10610
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs/{faqId}'
|
|
10611
|
+
});
|
|
10612
|
+
};
|
|
10613
|
+
|
|
10614
|
+
/**
|
|
10615
|
+
* Update a FAQ
|
|
10616
|
+
*/
|
|
10617
|
+
export const updateBusinessAgentFaq = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentFaqData, ThrowOnError>) => {
|
|
10618
|
+
return (options?.client ?? client).put<UpdateBusinessAgentFaqResponse, UpdateBusinessAgentFaqError, ThrowOnError>({
|
|
10619
|
+
...options,
|
|
10620
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs/{faqId}'
|
|
10621
|
+
});
|
|
10622
|
+
};
|
|
10623
|
+
|
|
10624
|
+
/**
|
|
10625
|
+
* Delete a FAQ
|
|
10626
|
+
*/
|
|
10627
|
+
export const deleteBusinessAgentFaq = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentFaqData, ThrowOnError>) => {
|
|
10628
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentFaqResponse, DeleteBusinessAgentFaqError, ThrowOnError>({
|
|
10629
|
+
...options,
|
|
10630
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs/{faqId}'
|
|
10631
|
+
});
|
|
10632
|
+
};
|
|
10633
|
+
|
|
10634
|
+
/**
|
|
10635
|
+
* List crawled websites
|
|
10636
|
+
*/
|
|
10637
|
+
export const listBusinessAgentWebsites = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentWebsitesData, ThrowOnError>) => {
|
|
10638
|
+
return (options?.client ?? client).get<ListBusinessAgentWebsitesResponse, ListBusinessAgentWebsitesError, ThrowOnError>({
|
|
10639
|
+
...options,
|
|
10640
|
+
url: '/v1/accounts/{accountId}/business-agent/websites'
|
|
10641
|
+
});
|
|
10642
|
+
};
|
|
10643
|
+
|
|
10644
|
+
/**
|
|
10645
|
+
* Add a website to crawl
|
|
10646
|
+
* Meta crawls the site into the agent knowledge and recrawls it periodically; check `crawl_status` and `crawl_error` on read. Not idempotent.
|
|
10647
|
+
*/
|
|
10648
|
+
export const addBusinessAgentWebsite = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AddBusinessAgentWebsiteData, ThrowOnError>) => {
|
|
10649
|
+
return (options?.client ?? client).post<AddBusinessAgentWebsiteResponse, AddBusinessAgentWebsiteError, ThrowOnError>({
|
|
10650
|
+
...options,
|
|
10651
|
+
url: '/v1/accounts/{accountId}/business-agent/websites'
|
|
10652
|
+
});
|
|
10653
|
+
};
|
|
10654
|
+
|
|
10655
|
+
/**
|
|
10656
|
+
* Get a crawled website
|
|
10657
|
+
*/
|
|
10658
|
+
export const getBusinessAgentWebsite = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentWebsiteData, ThrowOnError>) => {
|
|
10659
|
+
return (options?.client ?? client).get<GetBusinessAgentWebsiteResponse, GetBusinessAgentWebsiteError, ThrowOnError>({
|
|
10660
|
+
...options,
|
|
10661
|
+
url: '/v1/accounts/{accountId}/business-agent/websites/{websiteId}'
|
|
10662
|
+
});
|
|
10663
|
+
};
|
|
10664
|
+
|
|
10665
|
+
/**
|
|
10666
|
+
* Update a crawled website
|
|
10667
|
+
*/
|
|
10668
|
+
export const updateBusinessAgentWebsite = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentWebsiteData, ThrowOnError>) => {
|
|
10669
|
+
return (options?.client ?? client).put<UpdateBusinessAgentWebsiteResponse, UpdateBusinessAgentWebsiteError, ThrowOnError>({
|
|
10670
|
+
...options,
|
|
10671
|
+
url: '/v1/accounts/{accountId}/business-agent/websites/{websiteId}'
|
|
10672
|
+
});
|
|
10673
|
+
};
|
|
10674
|
+
|
|
10675
|
+
/**
|
|
10676
|
+
* Remove a crawled website
|
|
10677
|
+
*/
|
|
10678
|
+
export const deleteBusinessAgentWebsite = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentWebsiteData, ThrowOnError>) => {
|
|
10679
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentWebsiteResponse, DeleteBusinessAgentWebsiteError, ThrowOnError>({
|
|
10680
|
+
...options,
|
|
10681
|
+
url: '/v1/accounts/{accountId}/business-agent/websites/{websiteId}'
|
|
10682
|
+
});
|
|
10683
|
+
};
|
|
10684
|
+
|
|
10685
|
+
/**
|
|
10686
|
+
* List knowledge files
|
|
10687
|
+
*/
|
|
10688
|
+
export const listBusinessAgentFiles = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentFilesData, ThrowOnError>) => {
|
|
10689
|
+
return (options?.client ?? client).get<ListBusinessAgentFilesResponse, ListBusinessAgentFilesError, ThrowOnError>({
|
|
10690
|
+
...options,
|
|
10691
|
+
url: '/v1/accounts/{accountId}/business-agent/files'
|
|
10692
|
+
});
|
|
10693
|
+
};
|
|
10694
|
+
|
|
10695
|
+
/**
|
|
10696
|
+
* Upload a knowledge file
|
|
10697
|
+
* Accepted types: pdf, doc, docx, png, jpg, jpeg, plus csv and xlsx when Meta enabled
|
|
10698
|
+
* extraction on the asset. Meta's limit is 100 MB. Two ways to send the file:
|
|
10699
|
+
* - JSON `{ url, fileName }`: Zernio downloads the file (public https URL, no redirects,
|
|
10700
|
+
* capped at 100 MB) and forwards it. Use this for anything above a few megabytes.
|
|
10701
|
+
* - multipart form-data with a `file` part (and an optional `fileName`): bounded by the
|
|
10702
|
+
* request body limit of about 4.5 MB; larger uploads must use the `url` form.
|
|
10703
|
+
* Not idempotent.
|
|
10704
|
+
*
|
|
10705
|
+
*/
|
|
10706
|
+
export const uploadBusinessAgentFile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UploadBusinessAgentFileData, ThrowOnError>) => {
|
|
10707
|
+
return (options?.client ?? client).post<UploadBusinessAgentFileResponse, UploadBusinessAgentFileError, ThrowOnError>({
|
|
10708
|
+
...options,
|
|
10709
|
+
url: '/v1/accounts/{accountId}/business-agent/files'
|
|
10710
|
+
});
|
|
10711
|
+
};
|
|
10712
|
+
|
|
10713
|
+
/**
|
|
10714
|
+
* Get a knowledge file
|
|
10715
|
+
*/
|
|
10716
|
+
export const getBusinessAgentFile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentFileData, ThrowOnError>) => {
|
|
10717
|
+
return (options?.client ?? client).get<GetBusinessAgentFileResponse, GetBusinessAgentFileError, ThrowOnError>({
|
|
10718
|
+
...options,
|
|
10719
|
+
url: '/v1/accounts/{accountId}/business-agent/files/{fileId}'
|
|
10720
|
+
});
|
|
10721
|
+
};
|
|
10722
|
+
|
|
10723
|
+
/**
|
|
10724
|
+
* Delete a knowledge file
|
|
10725
|
+
*/
|
|
10726
|
+
export const deleteBusinessAgentFile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentFileData, ThrowOnError>) => {
|
|
10727
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentFileResponse, DeleteBusinessAgentFileError, ThrowOnError>({
|
|
10728
|
+
...options,
|
|
10729
|
+
url: '/v1/accounts/{accountId}/business-agent/files/{fileId}'
|
|
10730
|
+
});
|
|
10731
|
+
};
|
|
10732
|
+
|
|
10733
|
+
/**
|
|
10734
|
+
* List skills
|
|
10735
|
+
*/
|
|
10736
|
+
export const listBusinessAgentSkills = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentSkillsData, ThrowOnError>) => {
|
|
10737
|
+
return (options?.client ?? client).get<ListBusinessAgentSkillsResponse, ListBusinessAgentSkillsError, ThrowOnError>({
|
|
10738
|
+
...options,
|
|
10739
|
+
url: '/v1/accounts/{accountId}/business-agent/skills'
|
|
10740
|
+
});
|
|
10741
|
+
};
|
|
10742
|
+
|
|
10743
|
+
/**
|
|
10744
|
+
* Create a skill
|
|
10745
|
+
* Behavioral instructions in the brand voice. Reads back `pending_review` until Meta content review passes it. Not idempotent.
|
|
10746
|
+
*/
|
|
10747
|
+
export const createBusinessAgentSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentSkillData, ThrowOnError>) => {
|
|
10748
|
+
return (options?.client ?? client).post<CreateBusinessAgentSkillResponse, CreateBusinessAgentSkillError, ThrowOnError>({
|
|
10749
|
+
...options,
|
|
10750
|
+
url: '/v1/accounts/{accountId}/business-agent/skills'
|
|
10751
|
+
});
|
|
10752
|
+
};
|
|
10753
|
+
|
|
10754
|
+
/**
|
|
10755
|
+
* Get a skill
|
|
10756
|
+
*/
|
|
10757
|
+
export const getBusinessAgentSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentSkillData, ThrowOnError>) => {
|
|
10758
|
+
return (options?.client ?? client).get<GetBusinessAgentSkillResponse, GetBusinessAgentSkillError, ThrowOnError>({
|
|
10759
|
+
...options,
|
|
10760
|
+
url: '/v1/accounts/{accountId}/business-agent/skills/{skillId}'
|
|
10761
|
+
});
|
|
10762
|
+
};
|
|
10763
|
+
|
|
10764
|
+
/**
|
|
10765
|
+
* Update a skill
|
|
10766
|
+
*/
|
|
10767
|
+
export const updateBusinessAgentSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentSkillData, ThrowOnError>) => {
|
|
10768
|
+
return (options?.client ?? client).put<UpdateBusinessAgentSkillResponse, UpdateBusinessAgentSkillError, ThrowOnError>({
|
|
10769
|
+
...options,
|
|
10770
|
+
url: '/v1/accounts/{accountId}/business-agent/skills/{skillId}'
|
|
10771
|
+
});
|
|
10772
|
+
};
|
|
10773
|
+
|
|
10774
|
+
/**
|
|
10775
|
+
* Delete a skill
|
|
10776
|
+
*/
|
|
10777
|
+
export const deleteBusinessAgentSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentSkillData, ThrowOnError>) => {
|
|
10778
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentSkillResponse, DeleteBusinessAgentSkillError, ThrowOnError>({
|
|
10779
|
+
...options,
|
|
10780
|
+
url: '/v1/accounts/{accountId}/business-agent/skills/{skillId}'
|
|
10781
|
+
});
|
|
10782
|
+
};
|
|
10783
|
+
|
|
10784
|
+
/**
|
|
10785
|
+
* List UI skills
|
|
10786
|
+
* Cursor paged; follow `paging.cursors.after` until `paging.next` is absent.
|
|
10787
|
+
*/
|
|
10788
|
+
export const listBusinessAgentUiSkills = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentUiSkillsData, ThrowOnError>) => {
|
|
10789
|
+
return (options?.client ?? client).get<ListBusinessAgentUiSkillsResponse, ListBusinessAgentUiSkillsError, ThrowOnError>({
|
|
10790
|
+
...options,
|
|
10791
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills'
|
|
10792
|
+
});
|
|
10793
|
+
};
|
|
10794
|
+
|
|
10795
|
+
/**
|
|
10796
|
+
* Create a UI skill
|
|
10797
|
+
* Tells the agent when to send a rich component (CTA URL button, image, carousel, list, reply buttons, location, Flow) and what to put in it. Not idempotent.
|
|
10798
|
+
*/
|
|
10799
|
+
export const createBusinessAgentUiSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentUiSkillData, ThrowOnError>) => {
|
|
10800
|
+
return (options?.client ?? client).post<CreateBusinessAgentUiSkillResponse, CreateBusinessAgentUiSkillError, ThrowOnError>({
|
|
10801
|
+
...options,
|
|
10802
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills'
|
|
10803
|
+
});
|
|
10804
|
+
};
|
|
10805
|
+
|
|
10806
|
+
/**
|
|
10807
|
+
* Get a UI skill
|
|
10808
|
+
*/
|
|
10809
|
+
export const getBusinessAgentUiSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentUiSkillData, ThrowOnError>) => {
|
|
10810
|
+
return (options?.client ?? client).get<GetBusinessAgentUiSkillResponse, GetBusinessAgentUiSkillError, ThrowOnError>({
|
|
10811
|
+
...options,
|
|
10812
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills/{uiSkillId}'
|
|
10813
|
+
});
|
|
10814
|
+
};
|
|
10815
|
+
|
|
10816
|
+
/**
|
|
10817
|
+
* Update a UI skill
|
|
10818
|
+
*/
|
|
10819
|
+
export const updateBusinessAgentUiSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentUiSkillData, ThrowOnError>) => {
|
|
10820
|
+
return (options?.client ?? client).put<UpdateBusinessAgentUiSkillResponse, UpdateBusinessAgentUiSkillError, ThrowOnError>({
|
|
10821
|
+
...options,
|
|
10822
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills/{uiSkillId}'
|
|
10823
|
+
});
|
|
10824
|
+
};
|
|
10825
|
+
|
|
10826
|
+
/**
|
|
10827
|
+
* Delete a UI skill
|
|
10828
|
+
*/
|
|
10829
|
+
export const deleteBusinessAgentUiSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentUiSkillData, ThrowOnError>) => {
|
|
10830
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentUiSkillResponse, DeleteBusinessAgentUiSkillError, ThrowOnError>({
|
|
10831
|
+
...options,
|
|
10832
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills/{uiSkillId}'
|
|
10833
|
+
});
|
|
10834
|
+
};
|
|
10835
|
+
|
|
10836
|
+
/**
|
|
10837
|
+
* List connectors
|
|
10838
|
+
* External APIs the agent may call. `connection_status` says whether Meta can currently reach each one.
|
|
10839
|
+
*/
|
|
10840
|
+
export const listBusinessAgentConnectors = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentConnectorsData, ThrowOnError>) => {
|
|
10841
|
+
return (options?.client ?? client).get<ListBusinessAgentConnectorsResponse, ListBusinessAgentConnectorsError, ThrowOnError>({
|
|
10842
|
+
...options,
|
|
10843
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors'
|
|
10844
|
+
});
|
|
10845
|
+
};
|
|
10846
|
+
|
|
10847
|
+
/**
|
|
10848
|
+
* Create a connector
|
|
10849
|
+
* Base URL plus how to authenticate (OAuth client credentials, API key or none). Names are unique per number. Not idempotent.
|
|
10850
|
+
*/
|
|
10851
|
+
export const createBusinessAgentConnector = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentConnectorData, ThrowOnError>) => {
|
|
10852
|
+
return (options?.client ?? client).post<CreateBusinessAgentConnectorResponse, CreateBusinessAgentConnectorError, ThrowOnError>({
|
|
10853
|
+
...options,
|
|
10854
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors'
|
|
10855
|
+
});
|
|
10856
|
+
};
|
|
10857
|
+
|
|
10858
|
+
/**
|
|
10859
|
+
* Get a connector
|
|
10860
|
+
*/
|
|
10861
|
+
export const getBusinessAgentConnector = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentConnectorData, ThrowOnError>) => {
|
|
10862
|
+
return (options?.client ?? client).get<GetBusinessAgentConnectorResponse, GetBusinessAgentConnectorError, ThrowOnError>({
|
|
10863
|
+
...options,
|
|
10864
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}'
|
|
10865
|
+
});
|
|
10866
|
+
};
|
|
10867
|
+
|
|
10868
|
+
/**
|
|
10869
|
+
* Update a connector
|
|
10870
|
+
*/
|
|
10871
|
+
export const updateBusinessAgentConnector = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentConnectorData, ThrowOnError>) => {
|
|
10872
|
+
return (options?.client ?? client).put<UpdateBusinessAgentConnectorResponse, UpdateBusinessAgentConnectorError, ThrowOnError>({
|
|
10873
|
+
...options,
|
|
10874
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}'
|
|
10875
|
+
});
|
|
10876
|
+
};
|
|
10877
|
+
|
|
10878
|
+
/**
|
|
10879
|
+
* Delete a connector
|
|
10880
|
+
*/
|
|
10881
|
+
export const deleteBusinessAgentConnector = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentConnectorData, ThrowOnError>) => {
|
|
10882
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentConnectorResponse, DeleteBusinessAgentConnectorError, ThrowOnError>({
|
|
10883
|
+
...options,
|
|
10884
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}'
|
|
10885
|
+
});
|
|
10886
|
+
};
|
|
10887
|
+
|
|
10888
|
+
/**
|
|
10889
|
+
* Set connector credentials
|
|
10890
|
+
* Set or rotate the connector's credentials in place: `kind: api_key`, `kind: oauth`
|
|
10891
|
+
* (client credentials) or `kind: certificate` (mTLS client certificate). Meta has no call
|
|
10892
|
+
* that removes a credential layer; change the connector's `auth_type` or delete it instead.
|
|
10893
|
+
*
|
|
10894
|
+
*/
|
|
10895
|
+
export const setBusinessAgentConnectorCredentials = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetBusinessAgentConnectorCredentialsData, ThrowOnError>) => {
|
|
10896
|
+
return (options?.client ?? client).post<SetBusinessAgentConnectorCredentialsResponse, SetBusinessAgentConnectorCredentialsError, ThrowOnError>({
|
|
10897
|
+
...options,
|
|
10898
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/credentials'
|
|
10899
|
+
});
|
|
10900
|
+
};
|
|
10901
|
+
|
|
10902
|
+
/**
|
|
10903
|
+
* Refresh MCP connector tools
|
|
10904
|
+
* Re-discovers the tools of an MCP connector. A failed discovery keeps the previous tool set and reports an ERROR sync status inside a 200.
|
|
10905
|
+
*/
|
|
10906
|
+
export const refreshBusinessAgentConnectorTools = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RefreshBusinessAgentConnectorToolsData, ThrowOnError>) => {
|
|
10907
|
+
return (options?.client ?? client).post<RefreshBusinessAgentConnectorToolsResponse, RefreshBusinessAgentConnectorToolsError, ThrowOnError>({
|
|
10908
|
+
...options,
|
|
10909
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/refresh-tools'
|
|
10910
|
+
});
|
|
10911
|
+
};
|
|
10912
|
+
|
|
10913
|
+
/**
|
|
10914
|
+
* Get connector failure logs
|
|
10915
|
+
* Third-party failures over the last 7 days (window at most 7 days, default the last 24 hours). Each entry carries `failure_code_name` and `error_message`.
|
|
10916
|
+
*/
|
|
10917
|
+
export const getBusinessAgentConnectorLogs = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentConnectorLogsData, ThrowOnError>) => {
|
|
10918
|
+
return (options?.client ?? client).get<GetBusinessAgentConnectorLogsResponse, GetBusinessAgentConnectorLogsError, ThrowOnError>({
|
|
10919
|
+
...options,
|
|
10920
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/logs'
|
|
10921
|
+
});
|
|
10922
|
+
};
|
|
10923
|
+
|
|
10924
|
+
/**
|
|
10925
|
+
* List connector tools
|
|
10926
|
+
*/
|
|
10927
|
+
export const listBusinessAgentConnectorTools = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentConnectorToolsData, ThrowOnError>) => {
|
|
10928
|
+
return (options?.client ?? client).get<ListBusinessAgentConnectorToolsResponse, ListBusinessAgentConnectorToolsError, ThrowOnError>({
|
|
10929
|
+
...options,
|
|
10930
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools'
|
|
10931
|
+
});
|
|
10932
|
+
};
|
|
10933
|
+
|
|
10934
|
+
/**
|
|
10935
|
+
* Create a connector tool
|
|
10936
|
+
* One operation on the connector, with the request definition Meta uses to build the outbound call from the conversation. Type the body params explicitly. Not idempotent.
|
|
10937
|
+
*/
|
|
10938
|
+
export const createBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10939
|
+
return (options?.client ?? client).post<CreateBusinessAgentConnectorToolResponse, CreateBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10940
|
+
...options,
|
|
10941
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools'
|
|
10942
|
+
});
|
|
10943
|
+
};
|
|
10944
|
+
|
|
10945
|
+
/**
|
|
10946
|
+
* Get a connector tool
|
|
10947
|
+
*/
|
|
10948
|
+
export const getBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10949
|
+
return (options?.client ?? client).get<GetBusinessAgentConnectorToolResponse, GetBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10950
|
+
...options,
|
|
10951
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools/{toolId}'
|
|
10952
|
+
});
|
|
10953
|
+
};
|
|
10954
|
+
|
|
10955
|
+
/**
|
|
10956
|
+
* Update a connector tool
|
|
10957
|
+
*/
|
|
10958
|
+
export const updateBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10959
|
+
return (options?.client ?? client).put<UpdateBusinessAgentConnectorToolResponse, UpdateBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10960
|
+
...options,
|
|
10961
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools/{toolId}'
|
|
10962
|
+
});
|
|
10963
|
+
};
|
|
10964
|
+
|
|
10965
|
+
/**
|
|
10966
|
+
* Delete a connector tool
|
|
10967
|
+
*/
|
|
10968
|
+
export const deleteBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10969
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentConnectorToolResponse, DeleteBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10970
|
+
...options,
|
|
10971
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools/{toolId}'
|
|
10972
|
+
});
|
|
10973
|
+
};
|
|
10974
|
+
|
|
10975
|
+
/**
|
|
10976
|
+
* Run a connector tool once
|
|
10977
|
+
* Executes the tool against the merchant API and returns the raw upstream result, to check a connector before the agent relies on it.
|
|
10978
|
+
*/
|
|
10979
|
+
export const runBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RunBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10980
|
+
return (options?.client ?? client).post<RunBusinessAgentConnectorToolResponse, RunBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10981
|
+
...options,
|
|
10982
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools/{toolId}/run'
|
|
10983
|
+
});
|
|
10984
|
+
};
|
|
10985
|
+
|
|
10986
|
+
/**
|
|
10987
|
+
* Get usage budgets
|
|
10988
|
+
* Caps over rolling windows for the Business Manager that owns the number. An empty list means unlimited.
|
|
10989
|
+
*/
|
|
10990
|
+
export const getBusinessAgentBudget = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentBudgetData, ThrowOnError>) => {
|
|
10991
|
+
return (options?.client ?? client).get<GetBusinessAgentBudgetResponse, GetBusinessAgentBudgetError, ThrowOnError>({
|
|
10992
|
+
...options,
|
|
10993
|
+
url: '/v1/accounts/{accountId}/business-agent/budget'
|
|
10994
|
+
});
|
|
10995
|
+
};
|
|
10996
|
+
|
|
10997
|
+
/**
|
|
10998
|
+
* Replace usage budgets
|
|
10999
|
+
* The full desired set: budgets left out are removed, an empty list returns to unlimited. Pass `budget_id` to edit one in place. When a cap is hit the agent finishes its turn, stops answering and hands the thread to a human until the window rolls over.
|
|
11000
|
+
*/
|
|
11001
|
+
export const replaceBusinessAgentBudget = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceBusinessAgentBudgetData, ThrowOnError>) => {
|
|
11002
|
+
return (options?.client ?? client).put<ReplaceBusinessAgentBudgetResponse, ReplaceBusinessAgentBudgetError, ThrowOnError>({
|
|
11003
|
+
...options,
|
|
11004
|
+
url: '/v1/accounts/{accountId}/business-agent/budget'
|
|
11005
|
+
});
|
|
11006
|
+
};
|
|
11007
|
+
|
|
11008
|
+
/**
|
|
11009
|
+
* Send a test message
|
|
11010
|
+
* Runs the message through the full agent pipeline in Meta sandbox with no WhatsApp user and no token billing. Pass back `conversationId` to continue a thread. Meta rate-limits it per number per hour.
|
|
11011
|
+
*/
|
|
11012
|
+
export const sendBusinessAgentTestMessage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SendBusinessAgentTestMessageData, ThrowOnError>) => {
|
|
11013
|
+
return (options?.client ?? client).post<SendBusinessAgentTestMessageResponse, SendBusinessAgentTestMessageError, ThrowOnError>({
|
|
11014
|
+
...options,
|
|
11015
|
+
url: '/v1/accounts/{accountId}/business-agent/test-messages'
|
|
11016
|
+
});
|
|
11017
|
+
};
|
|
11018
|
+
|
|
11019
|
+
/**
|
|
11020
|
+
* Send a business event
|
|
11021
|
+
* Tell the agent something happened in your systems (order shipped, document verified) so it messages the consumer about it. The consumer must already have a conversation with the number. Answers 202 with the event id; poll it for the outcome.
|
|
11022
|
+
*/
|
|
11023
|
+
export const sendBusinessAgentEvent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SendBusinessAgentEventData, ThrowOnError>) => {
|
|
11024
|
+
return (options?.client ?? client).post<SendBusinessAgentEventResponse, SendBusinessAgentEventError, ThrowOnError>({
|
|
11025
|
+
...options,
|
|
11026
|
+
url: '/v1/accounts/{accountId}/business-agent/events'
|
|
11027
|
+
});
|
|
11028
|
+
};
|
|
11029
|
+
|
|
11030
|
+
/**
|
|
11031
|
+
* Get a business event status
|
|
11032
|
+
*/
|
|
11033
|
+
export const getBusinessAgentEvent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentEventData, ThrowOnError>) => {
|
|
11034
|
+
return (options?.client ?? client).get<GetBusinessAgentEventResponse, GetBusinessAgentEventError, ThrowOnError>({
|
|
11035
|
+
...options,
|
|
11036
|
+
url: '/v1/accounts/{accountId}/business-agent/events/{eventId}'
|
|
11037
|
+
});
|
|
11038
|
+
};
|
|
11039
|
+
|
|
11040
|
+
/**
|
|
11041
|
+
* Read evaluation data
|
|
11042
|
+
* Without query parameters, lists the evaluation scenarios (`eval_cases`). With `jobId`,
|
|
11043
|
+
* polls a run started with POST. With `summaryIds`, returns the aggregated insight reports.
|
|
11044
|
+
* With `evalIds`, returns per-conversation evaluation details. One of the three at a time.
|
|
11045
|
+
*
|
|
11046
|
+
*/
|
|
11047
|
+
export const readBusinessAgentEvals = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReadBusinessAgentEvalsData, ThrowOnError>) => {
|
|
11048
|
+
return (options?.client ?? client).get<ReadBusinessAgentEvalsResponse, ReadBusinessAgentEvalsError, ThrowOnError>({
|
|
11049
|
+
...options,
|
|
11050
|
+
url: '/v1/accounts/{accountId}/business-agent/evals'
|
|
11051
|
+
});
|
|
11052
|
+
};
|
|
11053
|
+
|
|
11054
|
+
/**
|
|
11055
|
+
* Start an evaluation run
|
|
11056
|
+
* Simulates the given scenarios against the agent and scores them. Answers 202 with a `job_id` to poll with GET.
|
|
11057
|
+
*/
|
|
11058
|
+
export const startBusinessAgentEvalRun = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<StartBusinessAgentEvalRunData, ThrowOnError>) => {
|
|
11059
|
+
return (options?.client ?? client).post<StartBusinessAgentEvalRunResponse, StartBusinessAgentEvalRunError, ThrowOnError>({
|
|
11060
|
+
...options,
|
|
11061
|
+
url: '/v1/accounts/{accountId}/business-agent/evals'
|
|
11062
|
+
});
|
|
11063
|
+
};
|
|
11064
|
+
|
|
10322
11065
|
/**
|
|
10323
11066
|
* List tracking tags
|
|
10324
11067
|
* Returns the tracking tags (Meta Pixels, or OpenAI Ads pixels) the
|
|
10325
11068
|
* connected ads account can see. Pass `?adAccountId=act_...` (Meta only)
|
|
10326
11069
|
* to scope the list to a single ad account; omit it to list every pixel
|
|
10327
11070
|
* reachable by the token (the name is then suffixed with the ad account
|
|
10328
|
-
* it was discovered on, for disambiguation). The list view omits `code
|
|
10329
|
-
*
|
|
11071
|
+
* it was discovered on, for disambiguation). The list view omits `code`.
|
|
11072
|
+
* Call `getTrackingTag` for the install snippet and full detail (Meta
|
|
10330
11073
|
* only; OpenAI Ads has no get-by-id endpoint).
|
|
10331
11074
|
*
|
|
10332
11075
|
* Meta (platform `metaads`) and OpenAI Ads (platform `openaiads`); other
|
|
@@ -10346,20 +11089,20 @@ export const listTrackingTags = <ThrowOnError extends boolean = false>(options:
|
|
|
10346
11089
|
|
|
10347
11090
|
/**
|
|
10348
11091
|
* Create a tracking tag
|
|
10349
|
-
* Meta: creates a Meta Pixel on the given ad account (`POST /act_{id}/adspixels
|
|
10350
|
-
*
|
|
11092
|
+
* Meta: creates a Meta Pixel on the given ad account (`POST /act_{id}/adspixels`,
|
|
11093
|
+
* where `name` is the only input). Returns the created tag including its
|
|
10351
11094
|
* install `code`. The pixel is owned by the Business Manager that owns the
|
|
10352
11095
|
* ad account; a pixel created on a personal (non-BM) ad account ends up
|
|
10353
11096
|
* with `ownerBusinessId: null` and can't be shared with other ad accounts.
|
|
10354
11097
|
*
|
|
10355
|
-
* Creating a Meta pixel does NOT install it
|
|
11098
|
+
* Creating a Meta pixel does NOT install it. Install the returned `code`
|
|
10356
11099
|
* snippet on the site, or send events server-side via
|
|
10357
11100
|
* `POST /v1/ads/conversions`. The check `installed` is derived from
|
|
10358
11101
|
* `lastFiredTime`.
|
|
10359
11102
|
*
|
|
10360
11103
|
* OpenAI Ads: creates an OpenAI pixel AND provisions a Conversions API
|
|
10361
11104
|
* key for it in the same call (`adAccountId` is required by this
|
|
10362
|
-
* endpoint but ignored
|
|
11105
|
+
* endpoint but ignored: one API key maps to exactly one ad account, so
|
|
10363
11106
|
* there's nothing to select). Returns 422 (`FEATURE_NOT_AVAILABLE`) if
|
|
10364
11107
|
* the ad account isn't enabled for pixel management; contact your OpenAI
|
|
10365
11108
|
* partner representative to enable it. There is no delete API for
|
|
@@ -10388,7 +11131,7 @@ export const createTrackingTag = <ThrowOnError extends boolean = false>(options:
|
|
|
10388
11131
|
* Returns the full tag record including the base-code `code` snippet,
|
|
10389
11132
|
* `lastFiredTime`, `ownerBusinessId`, `isUnavailable`, etc. Meta only
|
|
10390
11133
|
* (platform `metaads`); other platforms return 405. OpenAI Ads has no
|
|
10391
|
-
* get-by-id endpoint, so it 405s here too
|
|
11134
|
+
* get-by-id endpoint, so it 405s here too. Use
|
|
10392
11135
|
* `GET /v1/accounts/{accountId}/tracking-tags` (list) instead.
|
|
10393
11136
|
*
|
|
10394
11137
|
*/
|
|
@@ -10407,7 +11150,7 @@ export const getTrackingTag = <ThrowOnError extends boolean = false>(options: Op
|
|
|
10407
11150
|
* Returns the re-fetched canonical tag. Meta only (platform `metaads`);
|
|
10408
11151
|
* other platforms return 405.
|
|
10409
11152
|
*
|
|
10410
|
-
* There is no DELETE
|
|
11153
|
+
* There is no DELETE: Meta has no API to delete a pixel. To stop using
|
|
10411
11154
|
* one, unshare it from your ad accounts (`DELETE
|
|
10412
11155
|
* .../tracking-tags/{tagId}/shared-accounts`) or disable it in Events
|
|
10413
11156
|
* Manager.
|
|
@@ -10464,7 +11207,7 @@ export const removeTrackingTagSharedAccount = <ThrowOnError extends boolean = fa
|
|
|
10464
11207
|
/**
|
|
10465
11208
|
* Get aggregated event stats
|
|
10466
11209
|
* Returns aggregated event counts for the pixel (`GET /{pixel_id}/stats`).
|
|
10467
|
-
* Rows are passed through from Meta as-is
|
|
11210
|
+
* Rows are passed through from Meta as-is; their shape depends on the
|
|
10468
11211
|
* `aggregation` requested. Meta only (platform `metaads`); other platforms
|
|
10469
11212
|
* return 405.
|
|
10470
11213
|
*
|
|
@@ -10702,7 +11445,7 @@ export const getVerification = <ThrowOnError extends boolean = false>(options: O
|
|
|
10702
11445
|
/**
|
|
10703
11446
|
* Check a verification code
|
|
10704
11447
|
* Verify the code the user typed. Wrong, expired, and exhausted codes
|
|
10705
|
-
* answer 200 with `valid: false` and the settled `status
|
|
11448
|
+
* answer 200 with `valid: false` and the settled `status`. Only an
|
|
10706
11449
|
* unknown id is a 404. A correct code consumes the verification
|
|
10707
11450
|
* (single-use, `status: approved`) and fires the `verification.approved`
|
|
10708
11451
|
* webhook; the 5th wrong attempt settles it as `max_attempts_reached`
|