@zernio/node 0.2.726 → 0.2.728
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 +2419 -739
- package/dist/index.d.ts +2419 -739
- 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 +1034 -287
- package/src/generated/types.gen.ts +2503 -668
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
|
*
|
|
@@ -97,13 +97,17 @@ export const getAnalytics = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
97
97
|
* 1,600 connected accounts: about 1,599 per-account analytics calls an hour became
|
|
98
98
|
* about 205 delta calls an hour, a 7.8x reduction.
|
|
99
99
|
*
|
|
100
|
-
* **Bootstrap once, then stay in sync.**
|
|
101
|
-
* `
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
100
|
+
* **Bootstrap once, then stay in sync.** Take the cursor FIRST: call this endpoint
|
|
101
|
+
* with NO `cursor` and it answers with an empty `data` array plus the feed's current
|
|
102
|
+
* position in `nextCursor`. Then load your baseline from `GET /v1/analytics`, the
|
|
103
|
+
* historical endpoint, because this one is a rolling 7-day change log and cannot
|
|
104
|
+
* replay history. Then resume from the cursor you took before the baseline. Taking
|
|
105
|
+
* the cursor afterwards instead drops every change that lands while the baseline is
|
|
106
|
+
* loading: it is in neither the row you already read nor the feed you resume behind
|
|
107
|
+
* it. The overlap this order creates is safe, because metrics are absolute values
|
|
108
|
+
* rather than increments, so draining it leaves every post on its newest value.
|
|
109
|
+
* `nextCursor` is present on every response, empty pages included, so you always
|
|
110
|
+
* have something to advance with.
|
|
107
111
|
*
|
|
108
112
|
* **Ordering.** Entries come back oldest first, in the order the feed received
|
|
109
113
|
* them. That order is NOT `syncedAt`: `syncedAt` is stamped when an account's sync
|
|
@@ -122,7 +126,7 @@ export const getAnalytics = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
122
126
|
* behind a cursor you have already advanced past. A read issued the instant an
|
|
123
127
|
* `analytics.synced` webhook lands will therefore often return an empty page for
|
|
124
128
|
* that account. Do not read an empty page as "nothing changed": poll again with the
|
|
125
|
-
* SAME cursor you
|
|
129
|
+
* SAME cursor you last used rather than advancing.
|
|
126
130
|
*
|
|
127
131
|
* **Repeats inside one instant.** A sync cycle occasionally records the same post
|
|
128
132
|
* twice at the same feed position. When that happens the feed delivers one of those
|
|
@@ -133,9 +137,9 @@ export const getAnalytics = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
133
137
|
*
|
|
134
138
|
* **Retention is 7 days.** Changes older than that leave the feed. A cursor older
|
|
135
139
|
* than 6 days is rejected with a `400` (a day of margin, because expiry is lazy).
|
|
136
|
-
* Recover
|
|
137
|
-
*
|
|
138
|
-
* daily never reaches this.
|
|
140
|
+
* Recover the same way you bootstrapped: take a fresh cursor from a call to this
|
|
141
|
+
* endpoint with no `cursor`, then re-load from `GET /v1/analytics`, then resume
|
|
142
|
+
* from that cursor. A consumer that polls at least daily never reaches this.
|
|
139
143
|
*
|
|
140
144
|
* Pairs with the `analytics.synced` webhook, so changes can be read on notification
|
|
141
145
|
* instead of on a timer. That event carries no cursor of its own: keep using the
|
|
@@ -464,7 +468,7 @@ export const getPostTimeline = <ThrowOnError extends boolean = false>(options: O
|
|
|
464
468
|
};
|
|
465
469
|
|
|
466
470
|
/**
|
|
467
|
-
* Get
|
|
471
|
+
* Get Google Business Profile performance metrics
|
|
468
472
|
* Returns daily performance metrics for a Google Business Profile location.
|
|
469
473
|
* Metrics include impressions (Maps/Search, desktop/mobile), website clicks,
|
|
470
474
|
* call clicks, direction requests, conversations, bookings, and food orders.
|
|
@@ -480,7 +484,7 @@ export const getGoogleBusinessPerformance = <ThrowOnError extends boolean = fals
|
|
|
480
484
|
};
|
|
481
485
|
|
|
482
486
|
/**
|
|
483
|
-
* Get
|
|
487
|
+
* Get Google Business Profile search keywords
|
|
484
488
|
* Returns search keywords that triggered impressions for a Google Business Profile location.
|
|
485
489
|
* Data is aggregated monthly. Keywords below a minimum impression threshold set by Google are excluded.
|
|
486
490
|
* Max 18 months of historical data. Requires the Analytics add-on.
|
|
@@ -511,7 +515,7 @@ export const getInboxVolume = <ThrowOnError extends boolean = false>(options: Op
|
|
|
511
515
|
/**
|
|
512
516
|
* Get day × hour heatmap
|
|
513
517
|
* Day-of-week × hour-of-day breakdown of inbox messages. Buckets are
|
|
514
|
-
* sparse
|
|
518
|
+
* sparse: only cells with at least one event are returned; clients
|
|
515
519
|
* zero-fill the rest to render the full 7×24 grid. The `dow` field
|
|
516
520
|
* follows ClickHouse's `toDayOfWeek` convention (1 = Monday … 7 =
|
|
517
521
|
* Sunday). Max date range is 365 days.
|
|
@@ -548,7 +552,7 @@ export const getInboxSourceBreakdown = <ThrowOnError extends boolean = false>(op
|
|
|
548
552
|
* for the analytics page's TTR chart.
|
|
549
553
|
*
|
|
550
554
|
* `sampleSize` reflects only conversations that received AND got a
|
|
551
|
-
* reply in the window
|
|
555
|
+
* reply in the window. Received-but-never-answered conversations
|
|
552
556
|
* are excluded. Compare against /v1/analytics/inbox/volume's
|
|
553
557
|
* `summary.received` to compute reply rate.
|
|
554
558
|
*
|
|
@@ -564,9 +568,9 @@ export const getInboxResponseTime = <ThrowOnError extends boolean = false>(optio
|
|
|
564
568
|
|
|
565
569
|
/**
|
|
566
570
|
* Get top accounts by inbox volume
|
|
567
|
-
* Leaderboard of
|
|
571
|
+
* Leaderboard of accounts by inbox message volume. Decorates
|
|
568
572
|
* each row with display labels from the live SocialAccount record
|
|
569
|
-
* (so the UI shows username + displayName, not
|
|
573
|
+
* (so the UI shows username + displayName, not only an ID). Accounts
|
|
570
574
|
* that no longer map to a SocialAccount surface as "(disconnected)"
|
|
571
575
|
* so the row stays visible. Max date range is 365 days.
|
|
572
576
|
*
|
|
@@ -581,7 +585,7 @@ export const getInboxTopAccounts = <ThrowOnError extends boolean = false>(option
|
|
|
581
585
|
/**
|
|
582
586
|
* List conversation analytics
|
|
583
587
|
* Per-conversation listing with per-row totals + first/last message
|
|
584
|
-
* timestamps. The inbox analog of GET /v1/analytics (posts listing)
|
|
588
|
+
* timestamps. The inbox analog of GET /v1/analytics (posts listing):
|
|
585
589
|
* same filter shape, same pagination, same sort/order semantics.
|
|
586
590
|
* Use as the entry point for the per-conversation analytics drawer
|
|
587
591
|
* at /v1/analytics/inbox/conversations/{conversationId}.
|
|
@@ -602,7 +606,7 @@ export const listInboxConversationAnalytics = <ThrowOnError extends boolean = fa
|
|
|
602
606
|
/**
|
|
603
607
|
* Get conversation analytics
|
|
604
608
|
* Per-conversation inbox analytics. The inbox analog of
|
|
605
|
-
* /v1/analytics/post-timeline
|
|
609
|
+
* /v1/analytics/post-timeline: one conversation, daily totals,
|
|
606
610
|
* source mix.
|
|
607
611
|
*
|
|
608
612
|
* The {conversationId} path param accepts EITHER the Mongo `_id` of
|
|
@@ -638,7 +642,7 @@ export const listAccountGroups = <ThrowOnError extends boolean = false>(options?
|
|
|
638
642
|
|
|
639
643
|
/**
|
|
640
644
|
* Create group
|
|
641
|
-
* Creates a new account group with a name and a list of
|
|
645
|
+
* Creates a new account group with a name and a list of account IDs.
|
|
642
646
|
* Accounts can belong to different profiles; the caller must have access to
|
|
643
647
|
* every account's profile. Group names must be unique per user.
|
|
644
648
|
*
|
|
@@ -710,10 +714,10 @@ export const getRedditFeed = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
710
714
|
* The billing "wallet/statement" view: current plan, billing cycle,
|
|
711
715
|
* accrued balance + remaining credits this period, spend caps, and
|
|
712
716
|
* payment / access status. This is the billing half of the legacy
|
|
713
|
-
* `/v1/usage-stats` snapshot
|
|
717
|
+
* `/v1/usage-stats` snapshot. The per-product consumption half is metering
|
|
714
718
|
* and lives on `GET /v1/usage`.
|
|
715
719
|
*
|
|
716
|
-
*
|
|
720
|
+
* Accounts on usage-based billing get a populated `balance`; legacy Stripe
|
|
717
721
|
* accounts get `balance: null` plus a deprecated `legacy.limits` block and,
|
|
718
722
|
* when payment-blocked, `status.openInvoiceUrl` / `status.declineReason`.
|
|
719
723
|
*
|
|
@@ -726,16 +730,16 @@ export const getBilling = <ThrowOnError extends boolean = false>(options?: Optio
|
|
|
726
730
|
};
|
|
727
731
|
|
|
728
732
|
/**
|
|
729
|
-
* Get X
|
|
730
|
-
* Returns Zernio's canonical X
|
|
731
|
-
* own
|
|
733
|
+
* Get X API pricing table
|
|
734
|
+
* Returns Zernio's canonical X API pricing table. Each X action has its
|
|
735
|
+
* own billing product and its own rate, and Zernio passes X API costs through
|
|
732
736
|
* at exact rates with zero markup.
|
|
733
737
|
*
|
|
734
738
|
* The response is identical for every authenticated user (pricing is universal),
|
|
735
739
|
* so it is safe to cache on the client for the duration of a billing period.
|
|
736
740
|
*
|
|
737
741
|
* To compute your own per-operation spend, pair this endpoint with
|
|
738
|
-
* `GET /v1/usage-stats
|
|
742
|
+
* `GET /v1/usage-stats`, which returns `usage.xApiCallsByOperation`
|
|
739
743
|
* keyed by the same `operation` field you get here.
|
|
740
744
|
*
|
|
741
745
|
*/
|
|
@@ -748,20 +752,20 @@ export const getXApiPricing = <ThrowOnError extends boolean = false>(options?: O
|
|
|
748
752
|
|
|
749
753
|
/**
|
|
750
754
|
* Usage snapshot (default) or billed-spend metering (with params)
|
|
751
|
-
* Dual-mode endpoint, selected by query params
|
|
755
|
+
* Dual-mode endpoint, selected by query params, and fully backward
|
|
752
756
|
* compatible:
|
|
753
757
|
*
|
|
754
758
|
* **Without metering params (the default):** the plan / quota / usage
|
|
755
|
-
* snapshot
|
|
759
|
+
* snapshot: plan name, billing period, limits, usage counts, access
|
|
756
760
|
* state. Identical to `GET /v1/usage-stats`. Existing integrations keep
|
|
757
761
|
* working unchanged.
|
|
758
762
|
*
|
|
759
|
-
* **With `range`, `granularity`, `from`, or `to`:** usage METERING
|
|
763
|
+
* **With `range`, `granularity`, `from`, or `to`:** usage METERING:
|
|
760
764
|
* billed spend (USD) by product family (`accounts`, `numbers`, `calls`,
|
|
761
765
|
* `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
|
|
766
|
+
* `day` / `month` / `total` granularity, from the usage-based invoice
|
|
767
|
+
* breakdown (the CHARGE view, which always reconciles with what gets billed).
|
|
768
|
+
* Also served at `GET /v1/usage/daily`. Usage-based accounts only:
|
|
765
769
|
* legacy Stripe accounts get `{ "supported": false, "days": [] }`.
|
|
766
770
|
*
|
|
767
771
|
* **Attribution (metering mode):** `groupBy=profile|account` adds an
|
|
@@ -770,7 +774,7 @@ export const getXApiPricing = <ThrowOnError extends boolean = false>(options?: O
|
|
|
770
774
|
* `sum(groups) + unattributed` equals `totals` exactly. `profileId` /
|
|
771
775
|
* `accountId` instead project the whole payload (`days`, `totals`,
|
|
772
776
|
* `lineItems`) onto that one group; `peaks`, `callUsage` and `tax` are
|
|
773
|
-
* then `null` (
|
|
777
|
+
* then `null` (team-level facts). Projected `days` spread the
|
|
774
778
|
* group's period share over each day (usage is attributed per period,
|
|
775
779
|
* not per day). Profile-scoped API keys and members only see their
|
|
776
780
|
* profiles' groups (`attribution.restricted: true`, with `totals`
|
|
@@ -802,13 +806,13 @@ export const getUsage = <ThrowOnError extends boolean = false>(options?: Options
|
|
|
802
806
|
*
|
|
803
807
|
* The response shape depends on the account's `billingSystem`:
|
|
804
808
|
* * Stripe users: per-period `usage.uploads` / `usage.profiles` counters.
|
|
805
|
-
* *
|
|
806
|
-
* `usage.xApiCallsByOperation` (per-operation X API call counts
|
|
809
|
+
* * Usage-based billing users: `usage.connectedAccounts`,
|
|
810
|
+
* `usage.xApiCallsByOperation` (per-operation X API call counts;
|
|
807
811
|
* resolve keys via `GET /v1/billing/x-pricing`), plus a `spend`
|
|
808
812
|
* block with `currentPeriodCents`, `xSpendCents`, and
|
|
809
813
|
* `xSpendLimitCents`. The legacy `usage.xApiCalls` 3-tier
|
|
810
814
|
* aggregate is still emitted for back-compat but excludes the
|
|
811
|
-
* $0.200 URL tier and any future tiers
|
|
815
|
+
* $0.200 URL tier and any future tiers, so new clients should
|
|
812
816
|
* consume `xApiCallsByOperation` only.
|
|
813
817
|
*
|
|
814
818
|
*/
|
|
@@ -873,26 +877,47 @@ export const listPosts = <ThrowOnError extends boolean = false>(options?: Option
|
|
|
873
877
|
|
|
874
878
|
/**
|
|
875
879
|
* Create post
|
|
876
|
-
* Create and optionally publish
|
|
877
|
-
*
|
|
880
|
+
* Create a post, and optionally publish it in the same request. A post published immediately (`publishNow: true`) comes back with `platformPostUrl` in the response.
|
|
881
|
+
*
|
|
882
|
+
* `content` is optional in four cases:
|
|
883
|
+
*
|
|
884
|
+
* - media is attached
|
|
885
|
+
* - all platforms have `customContent`
|
|
886
|
+
* - every platform entry is an X Article (`platformSpecificData.article`)
|
|
887
|
+
* - every platform entry is a LinkedIn text-free reshare (`platformSpecificData.reshareUrl` with no text)
|
|
888
|
+
*
|
|
889
|
+
* See each platform's schema for media constraints.
|
|
878
890
|
*
|
|
879
891
|
* ## Scheduling
|
|
880
892
|
*
|
|
881
|
-
* Pick one of
|
|
893
|
+
* Pick one of:
|
|
894
|
+
*
|
|
895
|
+
* - `scheduledFor`: publish at the scheduled time
|
|
896
|
+
* - `publishNow: true`: publish synchronously, inside this request
|
|
897
|
+
* - `queuedFromProfile`: publish in the profile's next queue slot
|
|
898
|
+
*
|
|
899
|
+
* With none of them and `isDraft` unset, the post is saved as a draft. `platforms` is required unless the post is a draft.
|
|
900
|
+
*
|
|
901
|
+
* 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
902
|
*
|
|
883
903
|
* ## Idempotency
|
|
884
904
|
*
|
|
885
905
|
* Two layers of duplicate-protection apply, so safe-to-retry callers (network blips, n8n / Zapier retries, etc.) don't accidentally double-post.
|
|
886
906
|
*
|
|
887
907
|
* **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
|
-
* -
|
|
908
|
+
* 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.
|
|
909
|
+
*
|
|
910
|
+
* 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:
|
|
911
|
+
*
|
|
912
|
+
* - Set a unique `x-request-id` per logical call (recommended, UUIDv4 is fine)
|
|
913
|
+
* - Or omit the header, and we'll treat each request as new
|
|
891
914
|
*
|
|
892
915
|
* **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
916
|
*
|
|
894
917
|
* **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`.
|
|
918
|
+
* 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.
|
|
919
|
+
*
|
|
920
|
+
* 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
921
|
*
|
|
897
922
|
* Order: same-`x-request-id` retries (200) are checked first; if no idempotency match, the content-hash dedup (409) runs.
|
|
898
923
|
*
|
|
@@ -906,16 +931,16 @@ export const createPost = <ThrowOnError extends boolean = false>(options: Option
|
|
|
906
931
|
|
|
907
932
|
/**
|
|
908
933
|
* Sync an external post
|
|
909
|
-
* Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a
|
|
934
|
+
* 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
935
|
*
|
|
911
936
|
* 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
937
|
*
|
|
913
938
|
* Behavior:
|
|
914
939
|
* - We check our stored copy first and return immediately if the post is already known (no platform call).
|
|
915
940
|
* - 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
|
|
941
|
+
* - Requests are debounced per account (~15s): if the account was synced inside that window, the live fetch is skipped.
|
|
917
942
|
*
|
|
918
|
-
* `accountId` is required
|
|
943
|
+
* `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
944
|
*
|
|
920
945
|
* 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
946
|
*
|
|
@@ -1035,13 +1060,13 @@ export const unpublishPost = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
1035
1060
|
|
|
1036
1061
|
/**
|
|
1037
1062
|
* Edit published post
|
|
1038
|
-
* Edit the text of an already-published post. Supported on X
|
|
1063
|
+
* Edit the text of an already-published post. Supported on X, Discord,
|
|
1039
1064
|
* Facebook, Reddit, LinkedIn, Telegram, Pinterest, Google Business Profile, YouTube,
|
|
1040
1065
|
* and Slack. When a post was published to several accounts on the same platform,
|
|
1041
1066
|
* pass `accountId` to pick which account's copy to edit (the first entry is edited
|
|
1042
1067
|
* otherwise). Each platform enforces its own rules:
|
|
1043
1068
|
*
|
|
1044
|
-
* **X
|
|
1069
|
+
* **X**
|
|
1045
1070
|
* - Connected X account must have an active X Premium subscription
|
|
1046
1071
|
* - Must be within 1 hour of original publish time
|
|
1047
1072
|
* - Maximum 5 edits per tweet (enforced by X)
|
|
@@ -1127,7 +1152,7 @@ export const editPost = <ThrowOnError extends boolean = false>(options: OptionsL
|
|
|
1127
1152
|
*
|
|
1128
1153
|
* 1. Post-based (video published through Zernio): pass the Zernio postId in the URL and platform in the body.
|
|
1129
1154
|
* 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
|
|
1155
|
+
* and pass videoId + accountId + platform in the body. The accountId is the Zernio account ID
|
|
1131
1156
|
* for the connected YouTube channel.
|
|
1132
1157
|
*
|
|
1133
1158
|
*/
|
|
@@ -1140,7 +1165,7 @@ export const updatePostMetadata = <ThrowOnError extends boolean = false>(options
|
|
|
1140
1165
|
|
|
1141
1166
|
/**
|
|
1142
1167
|
* List users
|
|
1143
|
-
* Returns all users in the
|
|
1168
|
+
* Returns all users in the team including roles and profile access. Also returns the currentUserId of the caller.
|
|
1144
1169
|
*/
|
|
1145
1170
|
export const listUsers = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<unknown, ThrowOnError>) => {
|
|
1146
1171
|
return (options?.client ?? client).get<ListUsersResponse, ListUsersError, ThrowOnError>({
|
|
@@ -1173,7 +1198,7 @@ export const listProfiles = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
1173
1198
|
|
|
1174
1199
|
/**
|
|
1175
1200
|
* Create profile
|
|
1176
|
-
* Creates a new profile with a name, optional description, and color. Names are unique per
|
|
1201
|
+
* 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
1202
|
*/
|
|
1178
1203
|
export const createProfile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateProfileData, ThrowOnError>) => {
|
|
1179
1204
|
return (options?.client ?? client).post<CreateProfileResponse, CreateProfileError, ThrowOnError>({
|
|
@@ -1217,7 +1242,7 @@ export const deleteProfile = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
1217
1242
|
|
|
1218
1243
|
/**
|
|
1219
1244
|
* List accounts
|
|
1220
|
-
* Returns connected
|
|
1245
|
+
* Returns connected accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on.
|
|
1221
1246
|
* Supports optional server-side pagination via page/limit params. When omitted, returns all accounts (backward-compatible).
|
|
1222
1247
|
* page and limit must be supplied together; out-of-range page/limit values are rejected with 400 rather than silently clamped.
|
|
1223
1248
|
*
|
|
@@ -1231,7 +1256,7 @@ export const listAccounts = <ThrowOnError extends boolean = false>(options?: Opt
|
|
|
1231
1256
|
|
|
1232
1257
|
/**
|
|
1233
1258
|
* Get follower stats
|
|
1234
|
-
* Returns follower count history and growth metrics for connected
|
|
1259
|
+
* Returns follower count history and growth metrics for connected accounts.
|
|
1235
1260
|
* Requires analytics add-on subscription. Follower counts are refreshed once per day.
|
|
1236
1261
|
*
|
|
1237
1262
|
*/
|
|
@@ -1244,11 +1269,11 @@ export const getFollowerStats = <ThrowOnError extends boolean = false>(options?:
|
|
|
1244
1269
|
|
|
1245
1270
|
/**
|
|
1246
1271
|
* Update account
|
|
1247
|
-
* Updates a connected
|
|
1272
|
+
* Updates a connected account's display name or username override.
|
|
1248
1273
|
*
|
|
1249
|
-
* For X
|
|
1274
|
+
* For X accounts on usage-based billing, also accepts an `xCapabilities`
|
|
1250
1275
|
* object to toggle background API operations that incur X API pass-through costs.
|
|
1251
|
-
* Both fields are opt-in (default `false`)
|
|
1276
|
+
* Both fields are opt-in (default `false`). When off, no analytics syncs or DM
|
|
1252
1277
|
* polling are performed for that account, and no API call is metered for those
|
|
1253
1278
|
* operations. Publishing and deleting posts are always available regardless of
|
|
1254
1279
|
* these toggles. Setting `xCapabilities` on a non-X account returns 400.
|
|
@@ -1263,7 +1288,7 @@ export const updateAccount = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
1263
1288
|
|
|
1264
1289
|
/**
|
|
1265
1290
|
* Move account to another profile
|
|
1266
|
-
* Moves a connected
|
|
1291
|
+
* Moves a connected account to a different profile owned by the same
|
|
1267
1292
|
* user. The target profile must belong to the same user as the account.
|
|
1268
1293
|
*
|
|
1269
1294
|
* For API keys restricted to specific profiles, BOTH the source account's
|
|
@@ -1280,7 +1305,7 @@ export const moveAccountToProfile = <ThrowOnError extends boolean = false>(optio
|
|
|
1280
1305
|
|
|
1281
1306
|
/**
|
|
1282
1307
|
* Disconnect account
|
|
1283
|
-
* Disconnects and removes a connected
|
|
1308
|
+
* 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
1309
|
*/
|
|
1285
1310
|
export const deleteAccount = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAccountData, ThrowOnError>) => {
|
|
1286
1311
|
return (options?.client ?? client).delete<DeleteAccountResponse, DeleteAccountError, ThrowOnError>({
|
|
@@ -1316,6 +1341,37 @@ export const registerWhatsAppNumber = <ThrowOnError extends boolean = false>(opt
|
|
|
1316
1341
|
});
|
|
1317
1342
|
};
|
|
1318
1343
|
|
|
1344
|
+
/**
|
|
1345
|
+
* Request a Meta re-verification code for a BYO WhatsApp number
|
|
1346
|
+
* For a bring-your-own WhatsApp number (its own WABA, migrated off another BSP) that
|
|
1347
|
+
* Meta demoted to re-verification, this requests a new OTP from Meta. The code lands
|
|
1348
|
+
* on the customer's own handset, so verifying it is necessarily self-service; call
|
|
1349
|
+
* POST /v1/accounts/{accountId}/whatsapp/verify-code with the code once it arrives.
|
|
1350
|
+
* Rate-limited to one request per 10 minutes per account, and Meta enforces its own
|
|
1351
|
+
* cooldown on top of that.
|
|
1352
|
+
*
|
|
1353
|
+
*/
|
|
1354
|
+
export const requestWhatsAppVerificationCode = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RequestWhatsAppVerificationCodeData, ThrowOnError>) => {
|
|
1355
|
+
return (options?.client ?? client).post<RequestWhatsAppVerificationCodeResponse, RequestWhatsAppVerificationCodeError, ThrowOnError>({
|
|
1356
|
+
...options,
|
|
1357
|
+
url: '/v1/accounts/{accountId}/whatsapp/request-code'
|
|
1358
|
+
});
|
|
1359
|
+
};
|
|
1360
|
+
|
|
1361
|
+
/**
|
|
1362
|
+
* Verify the Meta re-verification code for a BYO WhatsApp number
|
|
1363
|
+
* Submits the OTP Meta sent in response to POST /v1/accounts/{accountId}/whatsapp/request-code.
|
|
1364
|
+
* This only verifies the number with Meta; it does not register it on the Cloud API.
|
|
1365
|
+
* Call POST /v1/accounts/{accountId}/whatsapp/register afterward to complete activation.
|
|
1366
|
+
*
|
|
1367
|
+
*/
|
|
1368
|
+
export const verifyWhatsAppNumber = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<VerifyWhatsAppNumberData, ThrowOnError>) => {
|
|
1369
|
+
return (options?.client ?? client).post<VerifyWhatsAppNumberResponse, VerifyWhatsAppNumberError, ThrowOnError>({
|
|
1370
|
+
...options,
|
|
1371
|
+
url: '/v1/accounts/{accountId}/whatsapp/verify-code'
|
|
1372
|
+
});
|
|
1373
|
+
};
|
|
1374
|
+
|
|
1319
1375
|
/**
|
|
1320
1376
|
* Check account health
|
|
1321
1377
|
* Returns detailed health info for a specific account including token status, permissions, and recommendations.
|
|
@@ -1522,7 +1578,7 @@ export const getConnectUrl = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
1522
1578
|
* Complete OAuth callback
|
|
1523
1579
|
* Exchange the OAuth authorization code for tokens and connect the account to the specified profile.
|
|
1524
1580
|
*
|
|
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`.
|
|
1581
|
+
* 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
1582
|
*
|
|
1527
1583
|
*/
|
|
1528
1584
|
export const handleOAuthCallback = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<HandleOAuthCallbackData, ThrowOnError>) => {
|
|
@@ -1536,16 +1592,17 @@ export const handleOAuthCallback = <ThrowOnError extends boolean = false>(option
|
|
|
1536
1592
|
* Connect ads for a platform
|
|
1537
1593
|
* Unified ads connection endpoint. Creates a dedicated ads SocialAccount for the specified platform.
|
|
1538
1594
|
*
|
|
1539
|
-
* Same-token platforms (facebook, instagram, linkedin, pinterest)
|
|
1595
|
+
* **Same-token platforms (facebook, instagram, linkedin, pinterest).** The ads SocialAccount
|
|
1540
1596
|
* (metaads, linkedinads, pinterestads) reuses the OAuth token of the parent posting account,
|
|
1541
1597
|
* but only when an active parent exists and, for facebook and instagram, its stored token
|
|
1542
1598
|
* 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
|
-
*
|
|
1599
|
+
* case no extra OAuth happens and the response is alreadyConnected: true.
|
|
1600
|
+
*
|
|
1601
|
+
* When no such parent exists, or the scopes are missing, the endpoint returns an authUrl and a
|
|
1602
|
+
* full OAuth round trip is required. When a parent exists but carries no token usable for ad
|
|
1603
|
+
* accounts, the call fails with 400 RECONNECT_REQUIRED. Independently of the branch, the call
|
|
1604
|
+
* can return 403 ADS_ADDON_REQUIRED without the ads add-on and 402 PAYMENT_REQUIRED when the
|
|
1605
|
+
* billing gate is closed.
|
|
1549
1606
|
*
|
|
1550
1607
|
* Meta Ads prerequisite: connecting Meta Ads (via facebook or instagram) requires a Facebook
|
|
1551
1608
|
* Page. Not because the ad account is read through a Page, but because both parent posting
|
|
@@ -1555,11 +1612,15 @@ export const handleOAuthCallback = <ThrowOnError extends boolean = false>(option
|
|
|
1555
1612
|
* Facebook Page cannot complete this connection, and the facebook flow ends with
|
|
1556
1613
|
* error=no_facebook_pages.
|
|
1557
1614
|
*
|
|
1558
|
-
* Separate-token platforms (tiktok, twitter)
|
|
1559
|
-
*
|
|
1560
|
-
*
|
|
1615
|
+
* **Separate-token platforms (tiktok, twitter).** Starts the platform-specific marketing API
|
|
1616
|
+
* OAuth flow and creates an ads SocialAccount (tiktokads, xads) with its own token. If the ads
|
|
1617
|
+
* account already exists, returns alreadyConnected: true.
|
|
1618
|
+
* - 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).
|
|
1619
|
+
* - twitter (X Ads): accountId is REQUIRED. There's no ads-only mode, because tweets need to be authored by a real X user.
|
|
1561
1620
|
*
|
|
1562
|
-
* Standalone platforms (googleads)
|
|
1621
|
+
* **Standalone platforms (googleads).** Starts the Google Ads OAuth flow and creates a
|
|
1622
|
+
* standalone ads SocialAccount (googleads) with no parent. If the account already exists,
|
|
1623
|
+
* returns alreadyConnected: true.
|
|
1563
1624
|
*
|
|
1564
1625
|
* Ads accounts appear as regular SocialAccount documents with ads platform values (e.g., metaads, tiktokads) in GET /v1/accounts.
|
|
1565
1626
|
*
|
|
@@ -1697,8 +1758,8 @@ export const selectInstagramAccount = <ThrowOnError extends boolean = false>(opt
|
|
|
1697
1758
|
};
|
|
1698
1759
|
|
|
1699
1760
|
/**
|
|
1700
|
-
* List
|
|
1701
|
-
* For headless flows. Returns the list of
|
|
1761
|
+
* List Google Business Profile locations
|
|
1762
|
+
* 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
1763
|
*
|
|
1703
1764
|
*/
|
|
1704
1765
|
export const listGoogleBusinessLocations = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListGoogleBusinessLocationsData, ThrowOnError>) => {
|
|
@@ -1709,8 +1770,8 @@ export const listGoogleBusinessLocations = <ThrowOnError extends boolean = false
|
|
|
1709
1770
|
};
|
|
1710
1771
|
|
|
1711
1772
|
/**
|
|
1712
|
-
* Select
|
|
1713
|
-
* Complete the headless
|
|
1773
|
+
* Select Google Business Profile location
|
|
1774
|
+
* 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
1775
|
*
|
|
1715
1776
|
*/
|
|
1716
1777
|
export const selectGoogleBusinessLocation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SelectGoogleBusinessLocationData, ThrowOnError>) => {
|
|
@@ -1722,7 +1783,7 @@ export const selectGoogleBusinessLocation = <ThrowOnError extends boolean = fals
|
|
|
1722
1783
|
|
|
1723
1784
|
/**
|
|
1724
1785
|
* Get reviews
|
|
1725
|
-
* Returns reviews for a
|
|
1786
|
+
* Returns reviews for a Google Business Profile account including ratings, comments, and owner replies. Use nextPageToken for pagination.
|
|
1726
1787
|
*/
|
|
1727
1788
|
export const getGoogleBusinessReviews = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessReviewsData, ThrowOnError>) => {
|
|
1728
1789
|
return (options?.client ?? client).get<GetGoogleBusinessReviewsResponse, GetGoogleBusinessReviewsError, ThrowOnError>({
|
|
@@ -1777,7 +1838,7 @@ export const completeGoogleBusinessVerification = <ThrowOnError extends boolean
|
|
|
1777
1838
|
|
|
1778
1839
|
/**
|
|
1779
1840
|
* Get food menus
|
|
1780
|
-
* Returns food menus for a
|
|
1841
|
+
* Returns food menus for a Google Business Profile location including sections, items, pricing, and dietary info. Only for locations with food menu support.
|
|
1781
1842
|
*/
|
|
1782
1843
|
export const getGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessFoodMenusData, ThrowOnError>) => {
|
|
1783
1844
|
return (options?.client ?? client).get<GetGoogleBusinessFoodMenusResponse, GetGoogleBusinessFoodMenusError, ThrowOnError>({
|
|
@@ -1788,7 +1849,7 @@ export const getGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>
|
|
|
1788
1849
|
|
|
1789
1850
|
/**
|
|
1790
1851
|
* Update food menus
|
|
1791
|
-
* Updates food menus for a
|
|
1852
|
+
* Updates food menus for a Google Business Profile location. Send the full menus array. Use updateMask for partial updates.
|
|
1792
1853
|
*/
|
|
1793
1854
|
export const updateGoogleBusinessFoodMenus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGoogleBusinessFoodMenusData, ThrowOnError>) => {
|
|
1794
1855
|
return (options?.client ?? client).put<UpdateGoogleBusinessFoodMenusResponse, UpdateGoogleBusinessFoodMenusError, ThrowOnError>({
|
|
@@ -1799,7 +1860,7 @@ export const updateGoogleBusinessFoodMenus = <ThrowOnError extends boolean = fal
|
|
|
1799
1860
|
|
|
1800
1861
|
/**
|
|
1801
1862
|
* Get location details
|
|
1802
|
-
* Returns detailed
|
|
1863
|
+
* Returns detailed Google Business Profile location info (hours, description, phone, website, categories, services). Use readMask to request specific fields.
|
|
1803
1864
|
*/
|
|
1804
1865
|
export const getGoogleBusinessLocationDetails = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessLocationDetailsData, ThrowOnError>) => {
|
|
1805
1866
|
return (options?.client ?? client).get<GetGoogleBusinessLocationDetailsResponse, GetGoogleBusinessLocationDetailsError, ThrowOnError>({
|
|
@@ -1810,7 +1871,7 @@ export const getGoogleBusinessLocationDetails = <ThrowOnError extends boolean =
|
|
|
1810
1871
|
|
|
1811
1872
|
/**
|
|
1812
1873
|
* Update location details
|
|
1813
|
-
* Updates
|
|
1874
|
+
* Updates Google Business Profile location details. The updateMask field is required and specifies which fields to update.
|
|
1814
1875
|
* This endpoint proxies Google's Business Information API locations.patch, so any valid updateMask field is supported.
|
|
1815
1876
|
* Common fields: regularHours, specialHours, profile.description, websiteUri, phoneNumbers, categories, serviceItems.
|
|
1816
1877
|
*
|
|
@@ -1851,7 +1912,7 @@ export const createGoogleBusinessMedia = <ThrowOnError extends boolean = false>(
|
|
|
1851
1912
|
|
|
1852
1913
|
/**
|
|
1853
1914
|
* Delete photo
|
|
1854
|
-
* Deletes a photo or media item from a
|
|
1915
|
+
* Deletes a photo or media item from a Google Business Profile location.
|
|
1855
1916
|
*/
|
|
1856
1917
|
export const deleteGoogleBusinessMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteGoogleBusinessMediaData, ThrowOnError>) => {
|
|
1857
1918
|
return (options?.client ?? client).delete<DeleteGoogleBusinessMediaResponse, DeleteGoogleBusinessMediaError, ThrowOnError>({
|
|
@@ -1887,7 +1948,7 @@ export const getGmbAttributeMetadata = <ThrowOnError extends boolean = false>(op
|
|
|
1887
1948
|
|
|
1888
1949
|
/**
|
|
1889
1950
|
* Get attributes
|
|
1890
|
-
* Returns
|
|
1951
|
+
* Returns Google Business Profile location attributes (amenities, services, accessibility, payment types). Available attributes vary by business category.
|
|
1891
1952
|
*/
|
|
1892
1953
|
export const getGoogleBusinessAttributes = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleBusinessAttributesData, ThrowOnError>) => {
|
|
1893
1954
|
return (options?.client ?? client).get<GetGoogleBusinessAttributesResponse, GetGoogleBusinessAttributesError, ThrowOnError>({
|
|
@@ -1940,7 +2001,7 @@ export const createGoogleBusinessPlaceAction = <ThrowOnError extends boolean = f
|
|
|
1940
2001
|
|
|
1941
2002
|
/**
|
|
1942
2003
|
* Delete action link
|
|
1943
|
-
* Deletes a place action link (e.g. booking or ordering URL) from a
|
|
2004
|
+
* Deletes a place action link (e.g. booking or ordering URL) from a Google Business Profile location.
|
|
1944
2005
|
*/
|
|
1945
2006
|
export const deleteGoogleBusinessPlaceAction = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteGoogleBusinessPlaceActionData, ThrowOnError>) => {
|
|
1946
2007
|
return (options?.client ?? client).delete<DeleteGoogleBusinessPlaceActionResponse, DeleteGoogleBusinessPlaceActionError, ThrowOnError>({
|
|
@@ -2012,7 +2073,7 @@ export const batchGetGoogleBusinessReviews = <ThrowOnError extends boolean = fal
|
|
|
2012
2073
|
|
|
2013
2074
|
/**
|
|
2014
2075
|
* Get a review
|
|
2015
|
-
* Returns one Google Business review, in the same shape as the entries of GET /v1/accounts/{accountId}/gmb-reviews.
|
|
2076
|
+
* Returns one Google Business Profile review, in the same shape as the entries of GET /v1/accounts/{accountId}/gmb-reviews.
|
|
2016
2077
|
* 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
2078
|
* Read the review before replying if a human may have answered it already: replies are overwritten in place and Google keeps no history.
|
|
2018
2079
|
*
|
|
@@ -2026,7 +2087,7 @@ export const getGoogleBusinessReview = <ThrowOnError extends boolean = false>(op
|
|
|
2026
2087
|
|
|
2027
2088
|
/**
|
|
2028
2089
|
* Reply to a review
|
|
2029
|
-
* Posts (or updates) the business owner reply to a Google Business review.
|
|
2090
|
+
* Posts (or updates) the business owner reply to a Google Business Profile review.
|
|
2030
2091
|
* The reply is associated with the account's currently selected location (set via /v1/accounts/{accountId}/gmb-locations).
|
|
2031
2092
|
* Calling this endpoint a second time on the same review overwrites the previous reply (PUT semantics on Google's side).
|
|
2032
2093
|
* Google keeps no history, so an automated retry silently replaces a reply someone edited by hand in the Google Business Profile UI.
|
|
@@ -2042,7 +2103,7 @@ export const replyToGoogleBusinessReview = <ThrowOnError extends boolean = false
|
|
|
2042
2103
|
|
|
2043
2104
|
/**
|
|
2044
2105
|
* Delete a review reply
|
|
2045
|
-
* Removes the business owner reply from a Google Business review. The review itself remains.
|
|
2106
|
+
* Removes the business owner reply from a Google Business Profile review. The review itself remains.
|
|
2046
2107
|
*/
|
|
2047
2108
|
export const deleteGoogleBusinessReviewReply = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteGoogleBusinessReviewReplyData, ThrowOnError>) => {
|
|
2048
2109
|
return (options?.client ?? client).delete<DeleteGoogleBusinessReviewReplyResponse, DeleteGoogleBusinessReviewReplyError, ThrowOnError>({
|
|
@@ -2055,7 +2116,7 @@ export const deleteGoogleBusinessReviewReply = <ThrowOnError extends boolean = f
|
|
|
2055
2116
|
* Get pending OAuth data
|
|
2056
2117
|
* Fetch pending OAuth data for headless mode using the pendingDataToken from the redirect URL.
|
|
2057
2118
|
*
|
|
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`).
|
|
2119
|
+
* **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
2120
|
*
|
|
2060
2121
|
* 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
2122
|
*
|
|
@@ -2069,7 +2130,7 @@ export const getPendingOAuthData = <ThrowOnError extends boolean = false>(option
|
|
|
2069
2130
|
|
|
2070
2131
|
/**
|
|
2071
2132
|
* List LinkedIn orgs
|
|
2072
|
-
* Fetch full LinkedIn organization details (logos, vanity names, websites) for custom UI. No authentication required,
|
|
2133
|
+
* Fetch full LinkedIn organization details (logos, vanity names, websites) for custom UI. No authentication required, only the tempToken from OAuth.
|
|
2073
2134
|
*/
|
|
2074
2135
|
export const listLinkedInOrganizations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListLinkedInOrganizationsData, ThrowOnError>) => {
|
|
2075
2136
|
return (options?.client ?? client).get<ListLinkedInOrganizationsResponse, ListLinkedInOrganizationsError, ThrowOnError>({
|
|
@@ -2225,7 +2286,13 @@ export const completeWhatsAppPhoneSelection = <ThrowOnError extends boolean = fa
|
|
|
2225
2286
|
|
|
2226
2287
|
/**
|
|
2227
2288
|
* Connect WhatsApp from Embedded Signup
|
|
2228
|
-
* Exchange the authorization code Meta Embedded Signup
|
|
2289
|
+
* Exchange the authorization code Meta's Embedded Signup popup returned. This is the call the Zernio-hosted
|
|
2290
|
+
* signup page makes after the popup closes (`GET /v1/connect/whatsapp?signup=hosted`), sending the `wabaId`
|
|
2291
|
+
* and `phoneNumberId` Meta reported so exactly the chosen number is connected; when both are omitted the
|
|
2292
|
+
* first number the token can see is used. The code never passes through a `redirect_uri`, so
|
|
2293
|
+
* `POST /v1/connect/{platform}` cannot accept it. Authenticates with an API key, or with the connect token
|
|
2294
|
+
* the hosted flow issues (`X-Connect-Token` header).
|
|
2295
|
+
*
|
|
2229
2296
|
*/
|
|
2230
2297
|
export const connectWhatsAppEmbeddedSignup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ConnectWhatsAppEmbeddedSignupData, ThrowOnError>) => {
|
|
2231
2298
|
return (options?.client ?? client).post<ConnectWhatsAppEmbeddedSignupResponse, ConnectWhatsAppEmbeddedSignupError, ThrowOnError>({
|
|
@@ -2234,6 +2301,21 @@ export const connectWhatsAppEmbeddedSignup = <ThrowOnError extends boolean = fal
|
|
|
2234
2301
|
});
|
|
2235
2302
|
};
|
|
2236
2303
|
|
|
2304
|
+
/**
|
|
2305
|
+
* Get Embedded Signup SDK config
|
|
2306
|
+
* The Meta app id and Embedded Signup configuration id the Zernio-hosted signup page uses to open Meta's
|
|
2307
|
+
* popup. Integrators do not need this endpoint: start the hosted flow with
|
|
2308
|
+
* `GET /v1/connect/whatsapp?signup=hosted` and send the user to the returned `authUrl`. Authenticates with
|
|
2309
|
+
* an API key or with the connect token the hosted flow issues (`X-Connect-Token` header).
|
|
2310
|
+
*
|
|
2311
|
+
*/
|
|
2312
|
+
export const getWhatsAppSdkConfig = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<GetWhatsAppSdkConfigData, ThrowOnError>) => {
|
|
2313
|
+
return (options?.client ?? client).get<GetWhatsAppSdkConfigResponse, GetWhatsAppSdkConfigError, ThrowOnError>({
|
|
2314
|
+
...options,
|
|
2315
|
+
url: '/v1/connect/whatsapp/sdk-config'
|
|
2316
|
+
});
|
|
2317
|
+
};
|
|
2318
|
+
|
|
2237
2319
|
/**
|
|
2238
2320
|
* Connect a Discord channel
|
|
2239
2321
|
* 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 +2500,7 @@ export const updateLinkedInOrganization = <ThrowOnError extends boolean = false>
|
|
|
2418
2500
|
* - 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
2501
|
* - 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
2502
|
* - 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
|
|
2503
|
+
* - 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
2504
|
*
|
|
2423
2505
|
*/
|
|
2424
2506
|
export const getLinkedInMentions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetLinkedInMentionsData, ThrowOnError>) => {
|
|
@@ -2512,10 +2594,10 @@ export const getInstagramAudio = <ThrowOnError extends boolean = false>(options:
|
|
|
2512
2594
|
* Returns metrics for a single story. The `source` field discriminates
|
|
2513
2595
|
* between three states:
|
|
2514
2596
|
*
|
|
2515
|
-
* - `live
|
|
2516
|
-
* - `cached
|
|
2597
|
+
* - `live`: fetched from Meta in real time (story is still active)
|
|
2598
|
+
* - `cached`: fetched from a persisted `story_insights` webhook payload
|
|
2517
2599
|
* (story has expired but we received its final-state metrics from Meta)
|
|
2518
|
-
* - `unavailable
|
|
2600
|
+
* - `unavailable`: story has expired and we never received its webhook
|
|
2519
2601
|
* payload (for example, the account connected after the story expired)
|
|
2520
2602
|
*
|
|
2521
2603
|
* Meta can report an expired story as an empty successful result rather
|
|
@@ -2611,7 +2693,7 @@ export const updateYoutubeDefaultPlaylist = <ThrowOnError extends boolean = fals
|
|
|
2611
2693
|
};
|
|
2612
2694
|
|
|
2613
2695
|
/**
|
|
2614
|
-
* List
|
|
2696
|
+
* List Google Business Profile locations
|
|
2615
2697
|
* 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
2698
|
*
|
|
2617
2699
|
*/
|
|
@@ -2623,8 +2705,8 @@ export const getGmbLocations = <ThrowOnError extends boolean = false>(options: O
|
|
|
2623
2705
|
};
|
|
2624
2706
|
|
|
2625
2707
|
/**
|
|
2626
|
-
* Update
|
|
2627
|
-
* Switch which
|
|
2708
|
+
* Update Google Business Profile location
|
|
2709
|
+
* Switch which Google Business Profile location is active for a connected account.
|
|
2628
2710
|
*/
|
|
2629
2711
|
export const updateGmbLocation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGmbLocationData, ThrowOnError>) => {
|
|
2630
2712
|
return (options?.client ?? client).put<UpdateGmbLocationResponse, UpdateGmbLocationError, ThrowOnError>({
|
|
@@ -2634,8 +2716,8 @@ export const updateGmbLocation = <ThrowOnError extends boolean = false>(options:
|
|
|
2634
2716
|
};
|
|
2635
2717
|
|
|
2636
2718
|
/**
|
|
2637
|
-
* Assign
|
|
2638
|
-
* Connect a Google Business location onto a DIFFERENT profile by reusing the OAuth grant from an already-connected
|
|
2719
|
+
* Assign Google Business Profile location to another profile
|
|
2720
|
+
* 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
2721
|
*
|
|
2640
2722
|
*/
|
|
2641
2723
|
export const assignGoogleBusinessLocation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AssignGoogleBusinessLocationData, ThrowOnError>) => {
|
|
@@ -2650,7 +2732,7 @@ export const assignGoogleBusinessLocation = <ThrowOnError extends boolean = fals
|
|
|
2650
2732
|
* Returns the reaction breakdown for a Facebook Page post: a count per reaction type
|
|
2651
2733
|
* plus the overall total.
|
|
2652
2734
|
*
|
|
2653
|
-
* The whole breakdown is fetched in a single Graph call.
|
|
2735
|
+
* The whole breakdown is fetched in a single Graph call. The post analytics
|
|
2654
2736
|
* endpoint reports only an aggregate reaction count (surfaced there as `likes`), so use
|
|
2655
2737
|
* this endpoint when you need per-type counts.
|
|
2656
2738
|
*
|
|
@@ -2844,7 +2926,7 @@ export const listSlackMembers = <ThrowOnError extends boolean = false>(options:
|
|
|
2844
2926
|
/**
|
|
2845
2927
|
* Send a Discord Direct Message
|
|
2846
2928
|
* 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
|
|
2929
|
+
* Supports the same payload shape as channel posts: content, embeds, media
|
|
2848
2930
|
* attachments, and TTS.
|
|
2849
2931
|
*
|
|
2850
2932
|
* Constraints (Discord platform limits):
|
|
@@ -2874,7 +2956,7 @@ export const sendDiscordDirectMessage = <ThrowOnError extends boolean = false>(o
|
|
|
2874
2956
|
* pickers, role-permission UIs, or finding the role ID before calling
|
|
2875
2957
|
* the role-assign endpoint.
|
|
2876
2958
|
*
|
|
2877
|
-
* Roles are returned unordered
|
|
2959
|
+
* Roles are returned unordered. Sort client-side by `position` if you
|
|
2878
2960
|
* need Discord's UI ordering.
|
|
2879
2961
|
*
|
|
2880
2962
|
* Caller must pass `accountId` of a Discord SocialAccount bound to this
|
|
@@ -2991,7 +3073,7 @@ export const getDiscordGuildMember = <ThrowOnError extends boolean = false>(opti
|
|
|
2991
3073
|
|
|
2992
3074
|
/**
|
|
2993
3075
|
* Assign a role to a guild member
|
|
2994
|
-
* Assign one role to one member. Idempotent on Discord's side
|
|
3076
|
+
* Assign one role to one member. Idempotent on Discord's side: re-running
|
|
2995
3077
|
* on a member who already has the role is a 204 no-op.
|
|
2996
3078
|
*
|
|
2997
3079
|
* Path shape mirrors Discord's own API (`PUT /guilds/{guild}/members/{user}/roles/{role}`)
|
|
@@ -3011,7 +3093,7 @@ export const addDiscordMemberRole = <ThrowOnError extends boolean = false>(optio
|
|
|
3011
3093
|
|
|
3012
3094
|
/**
|
|
3013
3095
|
* Remove a role from a guild member
|
|
3014
|
-
* Remove one role from one member. Idempotent
|
|
3096
|
+
* Remove one role from one member. Idempotent: removing a role the
|
|
3015
3097
|
* member doesn't have returns 204 no-op.
|
|
3016
3098
|
*
|
|
3017
3099
|
* Same permission + hierarchy constraints as the PUT counterpart.
|
|
@@ -3098,11 +3180,11 @@ export const listDiscordPinnedMessages = <ThrowOnError extends boolean = false>(
|
|
|
3098
3180
|
* Pin a specific message in a channel. Path shape mirrors Discord's own
|
|
3099
3181
|
* API (`PUT /channels/{cid}/pins/{mid}`).
|
|
3100
3182
|
*
|
|
3101
|
-
* Idempotent
|
|
3183
|
+
* Idempotent: re-pinning an already-pinned message is a 204 no-op.
|
|
3102
3184
|
*
|
|
3103
3185
|
* Constraints:
|
|
3104
3186
|
* - Bot needs MANAGE_MESSAGES in the channel.
|
|
3105
|
-
* - 50-pin cap per channel
|
|
3187
|
+
* - 50-pin cap per channel: hitting it returns 400 (Discord-side).
|
|
3106
3188
|
* Caller should unpin one first.
|
|
3107
3189
|
*
|
|
3108
3190
|
*/
|
|
@@ -3116,7 +3198,7 @@ export const pinDiscordMessage = <ThrowOnError extends boolean = false>(options:
|
|
|
3116
3198
|
/**
|
|
3117
3199
|
* Unpin a Discord message
|
|
3118
3200
|
* Unpin a message. Same MANAGE_MESSAGES permission requirement as pin.
|
|
3119
|
-
* Idempotent
|
|
3201
|
+
* Idempotent: unpinning a non-pinned message is a 204 no-op.
|
|
3120
3202
|
*
|
|
3121
3203
|
*/
|
|
3122
3204
|
export const unpinDiscordMessage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UnpinDiscordMessageData, ThrowOnError>) => {
|
|
@@ -3129,7 +3211,7 @@ export const unpinDiscordMessage = <ThrowOnError extends boolean = false>(option
|
|
|
3129
3211
|
/**
|
|
3130
3212
|
* List Discord scheduled events
|
|
3131
3213
|
* Return all scheduled events in the guild. Events are distinct from
|
|
3132
|
-
* messages
|
|
3214
|
+
* messages: they appear in the server's Events panel and Discord
|
|
3133
3215
|
* auto-notifies interested members ahead of start time.
|
|
3134
3216
|
*
|
|
3135
3217
|
* Pass `withUserCount=true` to include `user_count` (number of members
|
|
@@ -3148,15 +3230,15 @@ export const listDiscordScheduledEvents = <ThrowOnError extends boolean = false>
|
|
|
3148
3230
|
* Create a guild scheduled event. Three event types, selected via the
|
|
3149
3231
|
* discriminator on `entity.type`:
|
|
3150
3232
|
*
|
|
3151
|
-
* - `external
|
|
3233
|
+
* - `external`: off-platform (Zoom, in-person, livestream). Requires
|
|
3152
3234
|
* both `location` and `endsAt`. Most common type for scheduler
|
|
3153
3235
|
* integrations.
|
|
3154
|
-
* - `voice
|
|
3155
|
-
* - `stage
|
|
3236
|
+
* - `voice`: hosted in a Discord voice channel. Requires `channelId`.
|
|
3237
|
+
* - `stage`: hosted in a Discord stage channel. Requires `channelId`.
|
|
3156
3238
|
*
|
|
3157
3239
|
* Bot needs MANAGE_EVENTS in the guild. Existing installs (pre-events
|
|
3158
3240
|
* PR) need a re-invite OR a server admin manually granting the
|
|
3159
|
-
* permission
|
|
3241
|
+
* permission. See route header for details.
|
|
3160
3242
|
*
|
|
3161
3243
|
*/
|
|
3162
3244
|
export const createDiscordScheduledEvent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateDiscordScheduledEventData, ThrowOnError>) => {
|
|
@@ -3179,7 +3261,7 @@ export const getDiscordScheduledEvent = <ThrowOnError extends boolean = false>(o
|
|
|
3179
3261
|
/**
|
|
3180
3262
|
* Update a Discord scheduled event
|
|
3181
3263
|
* Patch any subset of fields. Passing `status: 'cancelled'` is how you
|
|
3182
|
-
* cancel an event
|
|
3264
|
+
* cancel an event. Discord doesn't have a dedicated cancel endpoint,
|
|
3183
3265
|
* it's a status transition.
|
|
3184
3266
|
*
|
|
3185
3267
|
* Most status transitions Discord enforces (you can't go SCHEDULED →
|
|
@@ -3442,11 +3524,16 @@ export const listLogs = <ThrowOnError extends boolean = false>(options?: Options
|
|
|
3442
3524
|
/**
|
|
3443
3525
|
* List conversations
|
|
3444
3526
|
* 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
3527
|
*
|
|
3447
|
-
*
|
|
3528
|
+
* Supported platforms: Facebook, Instagram, X, Bluesky, Reddit, Telegram.
|
|
3448
3529
|
*
|
|
3449
|
-
*
|
|
3530
|
+
* **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.
|
|
3531
|
+
*
|
|
3532
|
+
* **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.
|
|
3533
|
+
*
|
|
3534
|
+
* - 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.
|
|
3535
|
+
* - Replayed history emits no webhooks and is stored as already read, so it never affects unread counts.
|
|
3536
|
+
* - 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
3537
|
*
|
|
3451
3538
|
*/
|
|
3452
3539
|
export const listInboxConversations = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListInboxConversationsData, ThrowOnError>) => {
|
|
@@ -3458,19 +3545,28 @@ export const listInboxConversations = <ThrowOnError extends boolean = false>(opt
|
|
|
3458
3545
|
|
|
3459
3546
|
/**
|
|
3460
3547
|
* Create conversation
|
|
3461
|
-
*
|
|
3548
|
+
* Start a direct message conversation with a user. If a conversation with that recipient already exists, the message is added to the existing thread.
|
|
3549
|
+
*
|
|
3550
|
+
* Supported platforms: X, Bluesky, Reddit, WhatsApp, SMS, and Slack. Other platforms return PLATFORM_NOT_SUPPORTED.
|
|
3462
3551
|
*
|
|
3463
|
-
*
|
|
3552
|
+
* **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
3553
|
*
|
|
3465
|
-
*
|
|
3554
|
+
* **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
3555
|
*
|
|
3467
|
-
*
|
|
3556
|
+
* - 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.
|
|
3557
|
+
* - 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.
|
|
3558
|
+
* - 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.
|
|
3559
|
+
* - Template fields are accepted on the JSON body only, not on multipart requests.
|
|
3468
3560
|
*
|
|
3469
|
-
*
|
|
3561
|
+
* 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
3562
|
*
|
|
3471
|
-
*
|
|
3563
|
+
* 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
3564
|
*
|
|
3473
|
-
*
|
|
3565
|
+
* **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.
|
|
3566
|
+
*
|
|
3567
|
+
* **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.
|
|
3568
|
+
*
|
|
3569
|
+
* **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
3570
|
*
|
|
3475
3571
|
*/
|
|
3476
3572
|
export const createInboxConversation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateInboxConversationData, ThrowOnError>) => {
|
|
@@ -3489,7 +3585,7 @@ export const createInboxConversation = <ThrowOnError extends boolean = false>(op
|
|
|
3489
3585
|
*
|
|
3490
3586
|
* A conversation that matches both ways is returned once, carrying its message matches.
|
|
3491
3587
|
*
|
|
3492
|
-
* Only platforms whose messages are stored by Zernio are searchable: WhatsApp, SMS, Telegram, Facebook, Instagram,
|
|
3588
|
+
* 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
3589
|
*
|
|
3494
3590
|
*/
|
|
3495
3591
|
export const searchInboxConversations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SearchInboxConversationsData, ThrowOnError>) => {
|
|
@@ -3532,9 +3628,9 @@ export const updateInboxConversation = <ThrowOnError extends boolean = false>(op
|
|
|
3532
3628
|
*
|
|
3533
3629
|
* Sort order: defaults to `asc` (oldest first, chat style). For the
|
|
3534
3630
|
* "show me the latest messages" pattern, pass `?sortOrder=desc&limit=N`.
|
|
3535
|
-
*
|
|
3631
|
+
* X, Instagram, Telegram, WhatsApp and Reddit honor the requested
|
|
3536
3632
|
* order from the local message store. For Facebook and Bluesky, the
|
|
3537
|
-
* upstream APIs only return newest-first and have no order parameter
|
|
3633
|
+
* upstream APIs only return newest-first and have no order parameter, so
|
|
3538
3634
|
* sort order is best-effort and only reverses items within a single page
|
|
3539
3635
|
* (pages still walk newest→oldest). The response field `sortOrderApplied`
|
|
3540
3636
|
* tells you what was actually applied.
|
|
@@ -3551,7 +3647,7 @@ export const updateInboxConversation = <ThrowOnError extends boolean = false>(op
|
|
|
3551
3647
|
* the account was connected are unaffected. Replayed messages are stored
|
|
3552
3648
|
* as already read and emit no webhooks.
|
|
3553
3649
|
*
|
|
3554
|
-
*
|
|
3650
|
+
* 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
3651
|
*
|
|
3556
3652
|
* This endpoint is read-only and does NOT mark messages as read or send
|
|
3557
3653
|
* read receipts. To mark a conversation read (and send WhatsApp blue ticks
|
|
@@ -3663,7 +3759,7 @@ export const editInboxMessage = <ThrowOnError extends boolean = false>(options:
|
|
|
3663
3759
|
* Delete message
|
|
3664
3760
|
* Delete a message from a conversation. Platform support varies:
|
|
3665
3761
|
* - Telegram: Full delete (bot's own messages anytime, others if admin)
|
|
3666
|
-
* - X
|
|
3762
|
+
* - X: Full delete (own DM events only)
|
|
3667
3763
|
* - Bluesky: Delete for self only (recipient still sees it)
|
|
3668
3764
|
* - Reddit: Delete from sender's view only
|
|
3669
3765
|
* - Facebook, Instagram, WhatsApp: Not supported (returns 400)
|
|
@@ -3695,6 +3791,23 @@ export const sendTypingIndicator = <ThrowOnError extends boolean = false>(option
|
|
|
3695
3791
|
});
|
|
3696
3792
|
};
|
|
3697
3793
|
|
|
3794
|
+
/**
|
|
3795
|
+
* Hand a conversation to or from Meta Business Agent
|
|
3796
|
+
* WhatsApp only, on numbers with Meta Business Agent enabled. Wraps Meta's thread control:
|
|
3797
|
+
* - `release`: hand the conversation back to the agent so it resumes answering. You must currently hold control (sending any message takes it implicitly).
|
|
3798
|
+
* - `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.
|
|
3799
|
+
* - `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.
|
|
3800
|
+
*
|
|
3801
|
+
* The conversation's `threadControl` follows the result; a `conversation.control_changed` webhook fires when Meta later reports the change.
|
|
3802
|
+
*
|
|
3803
|
+
*/
|
|
3804
|
+
export const setConversationThreadControl = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetConversationThreadControlData, ThrowOnError>) => {
|
|
3805
|
+
return (options?.client ?? client).post<SetConversationThreadControlResponse, SetConversationThreadControlError, ThrowOnError>({
|
|
3806
|
+
...options,
|
|
3807
|
+
url: '/v1/inbox/conversations/{conversationId}/thread-control'
|
|
3808
|
+
});
|
|
3809
|
+
};
|
|
3810
|
+
|
|
3698
3811
|
/**
|
|
3699
3812
|
* Mark a conversation as read
|
|
3700
3813
|
* Marks all unread incoming messages in the conversation as read.
|
|
@@ -3758,7 +3871,7 @@ export const removeMessageReaction = <ThrowOnError extends boolean = false>(opti
|
|
|
3758
3871
|
* Maximum file size is 25MB.
|
|
3759
3872
|
*
|
|
3760
3873
|
* Unlike /v1/media/upload (which uses upload tokens for end-user flows),
|
|
3761
|
-
* this endpoint
|
|
3874
|
+
* this endpoint takes your API key in the Authorization header, for programmatic use.
|
|
3762
3875
|
*
|
|
3763
3876
|
*/
|
|
3764
3877
|
export const uploadMediaDirect = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UploadMediaDirectData, ThrowOnError>) => {
|
|
@@ -3887,7 +4000,7 @@ export const deleteTelegramCommands = <ThrowOnError extends boolean = false>(opt
|
|
|
3887
4000
|
* **Webhook payloads do not carry `refreshUrl`**, so a webhook-driven
|
|
3888
4001
|
* integration builds this URL itself. Every piece is in the event:
|
|
3889
4002
|
* `message.conversationId`, `message.platformMessageId`, the attachment's
|
|
3890
|
-
* zero-based position, and `account.accountId`.
|
|
4003
|
+
* zero-based position, and `account.accountId`. **`accountId` is a
|
|
3891
4004
|
* required query parameter**; omitting it returns `400`
|
|
3892
4005
|
* `missing_required_field`, which is the same requirement
|
|
3893
4006
|
* `GET /v1/whatsapp/media/{mediaId}` has.
|
|
@@ -3918,7 +4031,7 @@ export const getMessageAttachment = <ThrowOnError extends boolean = false>(optio
|
|
|
3918
4031
|
* `comment.received` webhook, which fires for every new comment across your posts and
|
|
3919
4032
|
* carries the post reference needed to keep this list current.
|
|
3920
4033
|
*
|
|
3921
|
-
* For users with the Ads add-on (
|
|
4034
|
+
* For users with the Ads add-on (accounts on usage-based billing always qualify), the user's Meta ads
|
|
3922
4035
|
* (boosted/dark posts) are included too. There's one row per (ad, placement-with-comments):
|
|
3923
4036
|
* an ad that runs on both Facebook feed and Instagram feed produces up to two rows (the
|
|
3924
4037
|
* Page dark post and the IG media have separate comment threads), each flagged
|
|
@@ -4040,7 +4153,7 @@ export const editInboxComment = <ThrowOnError extends boolean = false>(options:
|
|
|
4040
4153
|
* belongs to. You cannot moderate comments on videos you do not own.
|
|
4041
4154
|
*
|
|
4042
4155
|
* This is distinct from `POST /v1/inbox/comments/{postId}/{commentId}/hide`, which
|
|
4043
|
-
* covers Facebook, Instagram, Threads, and X
|
|
4156
|
+
* covers Facebook, Instagram, Threads, and X and does not apply to YouTube.
|
|
4044
4157
|
*
|
|
4045
4158
|
*/
|
|
4046
4159
|
export const setCommentModeration = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetCommentModerationData, ThrowOnError>) => {
|
|
@@ -4052,9 +4165,9 @@ export const setCommentModeration = <ThrowOnError extends boolean = false>(optio
|
|
|
4052
4165
|
|
|
4053
4166
|
/**
|
|
4054
4167
|
* Hide comment
|
|
4055
|
-
* Hide a comment on a post. Supported by Facebook, Instagram, Threads, and X
|
|
4168
|
+
* Hide a comment on a post. Supported by Facebook, Instagram, Threads, and X.
|
|
4056
4169
|
* Hidden comments are only visible to the commenter and page admin.
|
|
4057
|
-
* For X
|
|
4170
|
+
* For X, the reply must belong to a conversation started by the authenticated user.
|
|
4058
4171
|
*
|
|
4059
4172
|
*/
|
|
4060
4173
|
export const hideInboxComment = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<HideInboxCommentData, ThrowOnError>) => {
|
|
@@ -4066,7 +4179,7 @@ export const hideInboxComment = <ThrowOnError extends boolean = false>(options:
|
|
|
4066
4179
|
|
|
4067
4180
|
/**
|
|
4068
4181
|
* Unhide comment
|
|
4069
|
-
* Unhide a previously hidden comment. Supported by Facebook, Instagram, Threads, and X
|
|
4182
|
+
* Unhide a previously hidden comment. Supported by Facebook, Instagram, Threads, and X.
|
|
4070
4183
|
*
|
|
4071
4184
|
*/
|
|
4072
4185
|
export const unhideInboxComment = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UnhideInboxCommentData, ThrowOnError>) => {
|
|
@@ -4078,7 +4191,7 @@ export const unhideInboxComment = <ThrowOnError extends boolean = false>(options
|
|
|
4078
4191
|
|
|
4079
4192
|
/**
|
|
4080
4193
|
* Like comment
|
|
4081
|
-
* Like or upvote a comment on a post. Supported platforms: Facebook,
|
|
4194
|
+
* Like or upvote a comment on a post. Supported platforms: Facebook, X,
|
|
4082
4195
|
* Bluesky, Reddit, LinkedIn, and Instagram in limited release (see below). For
|
|
4083
4196
|
* Bluesky, the cid (content identifier) is
|
|
4084
4197
|
* required in the request body. For LinkedIn, pass the composite comment URN returned
|
|
@@ -4112,7 +4225,7 @@ export const likeInboxComment = <ThrowOnError extends boolean = false>(options:
|
|
|
4112
4225
|
|
|
4113
4226
|
/**
|
|
4114
4227
|
* Unlike comment
|
|
4115
|
-
* Remove a like from a comment. Supported platforms: Facebook,
|
|
4228
|
+
* Remove a like from a comment. Supported platforms: Facebook, X, Bluesky,
|
|
4116
4229
|
* Reddit, LinkedIn, and Instagram in limited release. For Bluesky, the likeUri query
|
|
4117
4230
|
* parameter is required. Instagram has the same limited release, Facebook Login,
|
|
4118
4231
|
* `instagram_manage_engagement` and burst-limit constraints as liking.
|
|
@@ -4128,7 +4241,7 @@ export const unlikeInboxComment = <ThrowOnError extends boolean = false>(options
|
|
|
4128
4241
|
/**
|
|
4129
4242
|
* Like post
|
|
4130
4243
|
* Like (or react to) a post as a connected account. Supported platforms: LinkedIn,
|
|
4131
|
-
*
|
|
4244
|
+
* X, Facebook, YouTube, Bluesky, and Instagram in limited release (see below).
|
|
4132
4245
|
* Threads, TikTok and Pinterest
|
|
4133
4246
|
* expose no like endpoint in their APIs and return 400. Reddit returns 400 too,
|
|
4134
4247
|
* pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote,
|
|
@@ -4172,7 +4285,7 @@ export const likePost = <ThrowOnError extends boolean = false>(options: OptionsL
|
|
|
4172
4285
|
|
|
4173
4286
|
/**
|
|
4174
4287
|
* Unlike post
|
|
4175
|
-
* Remove this account's like from a post. Supported platforms: LinkedIn,
|
|
4288
|
+
* Remove this account's like from a post. Supported platforms: LinkedIn, X,
|
|
4176
4289
|
* Facebook, YouTube, Bluesky, and Instagram in limited release. On YouTube this clears
|
|
4177
4290
|
* the rating. Instagram has the same limited release, Facebook Login,
|
|
4178
4291
|
* `instagram_manage_engagement` and burst-limit constraints as liking. For Bluesky,
|
|
@@ -4189,7 +4302,7 @@ export const unlikePost = <ThrowOnError extends boolean = false>(options: Option
|
|
|
4189
4302
|
|
|
4190
4303
|
/**
|
|
4191
4304
|
* Send private reply
|
|
4192
|
-
* Send a
|
|
4305
|
+
* Send a direct message to the author of a comment. Supported on Instagram and Facebook only.
|
|
4193
4306
|
* One reply per comment, must be sent within 7 days. Optionally attach interactive elements:
|
|
4194
4307
|
* `quickReplies` (chips above the keyboard, max 13) or `buttons` (1-3 inline postback/url
|
|
4195
4308
|
* buttons rendered in the same bubble via Meta's button_template). Chips do not render in
|
|
@@ -4262,7 +4375,7 @@ export const removeBookmark = <ThrowOnError extends boolean = false>(options: Op
|
|
|
4262
4375
|
|
|
4263
4376
|
/**
|
|
4264
4377
|
* Follow a user
|
|
4265
|
-
* Follow a user on X
|
|
4378
|
+
* Follow a user on X.
|
|
4266
4379
|
* Requires the follows.write OAuth scope.
|
|
4267
4380
|
* For protected accounts, a follow request is sent instead (pending_follow will be true).
|
|
4268
4381
|
*
|
|
@@ -4276,7 +4389,7 @@ export const followUser = <ThrowOnError extends boolean = false>(options: Option
|
|
|
4276
4389
|
|
|
4277
4390
|
/**
|
|
4278
4391
|
* Unfollow a user
|
|
4279
|
-
* Unfollow a user on X
|
|
4392
|
+
* Unfollow a user on X.
|
|
4280
4393
|
*
|
|
4281
4394
|
*/
|
|
4282
4395
|
export const unfollowUser = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UnfollowUserData, ThrowOnError>) => {
|
|
@@ -4291,7 +4404,7 @@ export const unfollowUser = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
4291
4404
|
* Search public tweets from the last 7 days matching an X search query, e.g. to discover tweets to reply to.
|
|
4292
4405
|
* The query string is passed through to X unchanged and supports X's search operators
|
|
4293
4406
|
* (`from:user`, `-is:retweet`, `is:reply`, `lang:en`, `"exact phrase"`, `conversation_id:123`, boolean `OR`, ...).
|
|
4294
|
-
*
|
|
4407
|
+
* Standalone operators like `is:` / `has:` / `lang:` must be combined with a keyword or `from:` clause.
|
|
4295
4408
|
*
|
|
4296
4409
|
* To reply to a found tweet, pass its `id` as the twitter platform entry's `platformSpecificData.replyToTweetId` when creating a post.
|
|
4297
4410
|
*
|
|
@@ -4352,7 +4465,7 @@ export const listInboxMentions = <ThrowOnError extends boolean = false>(options?
|
|
|
4352
4465
|
*
|
|
4353
4466
|
* Story mentions are not supported by Instagram's API.
|
|
4354
4467
|
*
|
|
4355
|
-
*
|
|
4468
|
+
* `GET /v1/inbox/mentions` currently returns LinkedIn mentions only and does
|
|
4356
4469
|
* not surface Instagram mentions. Source `mediaId` and `commentId` from Instagram's
|
|
4357
4470
|
* `comments` webhook, which is where mention notifications are delivered for accounts
|
|
4358
4471
|
* connected through Instagram Login.
|
|
@@ -4367,8 +4480,8 @@ export const replyToMention = <ThrowOnError extends boolean = false>(options: Op
|
|
|
4367
4480
|
|
|
4368
4481
|
/**
|
|
4369
4482
|
* 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.
|
|
4483
|
+
* Fetch reviews from all connected Facebook Pages and Google Business Profile accounts. Aggregates data with filtering and sorting options.
|
|
4484
|
+
* Supported platforms: Facebook, Google Business Profile.
|
|
4372
4485
|
*
|
|
4373
4486
|
*/
|
|
4374
4487
|
export const listInboxReviews = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListInboxReviewsData, ThrowOnError>) => {
|
|
@@ -4408,7 +4521,7 @@ export const replyToInboxReview = <ThrowOnError extends boolean = false>(options
|
|
|
4408
4521
|
|
|
4409
4522
|
/**
|
|
4410
4523
|
* Delete review reply
|
|
4411
|
-
* Delete a reply to a review (Google Business only). Requires accountId in request body.
|
|
4524
|
+
* Delete a reply to a review (Google Business Profile only). Requires accountId in request body.
|
|
4412
4525
|
*/
|
|
4413
4526
|
export const deleteInboxReviewReply = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteInboxReviewReplyData, ThrowOnError>) => {
|
|
4414
4527
|
return (options?.client ?? client).delete<DeleteInboxReviewReplyResponse, DeleteInboxReviewReplyError, ThrowOnError>({
|
|
@@ -4915,7 +5028,7 @@ export const getVoiceCallEstimate = <ThrowOnError extends boolean = false>(optio
|
|
|
4915
5028
|
* `POST /v1/voice/calls/web/dial` with the returned `credentialId` to
|
|
4916
5029
|
* place the call. The split avoids bridging to a browser that has not
|
|
4917
5030
|
* finished registering. The token lives ~1 hour (it must outlive the
|
|
4918
|
-
* whole call, not
|
|
5031
|
+
* whole call, not only the handshake).
|
|
4919
5032
|
*
|
|
4920
5033
|
*/
|
|
4921
5034
|
export const createVoiceWebSession = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<unknown, ThrowOnError>) => {
|
|
@@ -5006,7 +5119,7 @@ export const listSmsOptOuts = <ThrowOnError extends boolean = false>(options?: O
|
|
|
5006
5119
|
|
|
5007
5120
|
/**
|
|
5008
5121
|
* Create an alphanumeric sender ID
|
|
5009
|
-
* Registers an alphanumeric sender ID (e.g. `ZERNIO`)
|
|
5122
|
+
* Registers an alphanumeric sender ID (e.g. `ZERNIO`), a branded `from`
|
|
5010
5123
|
* for one-way international SMS. No phone number purchase or carrier
|
|
5011
5124
|
* registration is needed; once created, pass it as `from` on
|
|
5012
5125
|
* `POST /v1/sms/messages`.
|
|
@@ -5016,7 +5129,7 @@ export const listSmsOptOuts = <ThrowOnError extends boolean = false>(options?: O
|
|
|
5016
5129
|
* text-only, and recipients cannot reply. Sender IDs that impersonate
|
|
5017
5130
|
* well-known brands or institutions are rejected. Names are not
|
|
5018
5131
|
* exclusive: the same sender ID can be registered by any number of
|
|
5019
|
-
*
|
|
5132
|
+
* teams. Creating the same sender ID again is a no-op
|
|
5020
5133
|
* (re-activates it after a delete).
|
|
5021
5134
|
*
|
|
5022
5135
|
*/
|
|
@@ -5039,7 +5152,7 @@ export const listSmsSenderIds = <ThrowOnError extends boolean = false>(options?:
|
|
|
5039
5152
|
|
|
5040
5153
|
/**
|
|
5041
5154
|
* Request a higher sender ID daily limit
|
|
5042
|
-
* Asks support to raise the
|
|
5155
|
+
* Asks support to raise the team's daily sender-ID message cap.
|
|
5043
5156
|
* There is no self-serve raise: the request (desired cap + use case) is
|
|
5044
5157
|
* reviewed manually, usually within a business day.
|
|
5045
5158
|
*
|
|
@@ -5120,8 +5233,8 @@ export const preflightSmsRegistration = <ThrowOnError extends boolean = false>(o
|
|
|
5120
5233
|
* Deactivate a brand/campaign registration
|
|
5121
5234
|
* Terminates the campaign with the carrier registry so the recurring
|
|
5122
5235
|
* 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
|
|
5236
|
+
* campaign regardless). Numbers covered by it can no longer SEND texts
|
|
5237
|
+
* (receiving is unaffected) until they're registered under a new brand.
|
|
5125
5238
|
* Irreversible: a deactivated campaign cannot be restored; texting again
|
|
5126
5239
|
* later requires a new registration (new one-time and review fees).
|
|
5127
5240
|
* Idempotent.
|
|
@@ -5162,7 +5275,7 @@ export const verifySmsRegistrationOtp = <ThrowOnError extends boolean = false>(o
|
|
|
5162
5275
|
/**
|
|
5163
5276
|
* Re-send the sole-prop OTP
|
|
5164
5277
|
* Re-sends the sole-proprietor verification PIN to the brand's mobile
|
|
5165
|
-
* number
|
|
5278
|
+
* number. Use it when the original code expired or never arrived. Only
|
|
5166
5279
|
* valid while the registration is pending and awaiting its OTP; rate
|
|
5167
5280
|
* limited to one send per minute.
|
|
5168
5281
|
*
|
|
@@ -5201,7 +5314,7 @@ export const appealSmsRegistration = <ThrowOnError extends boolean = false>(opti
|
|
|
5201
5314
|
* Replies to a reviewer change request on a registration in
|
|
5202
5315
|
* `changes_requested` state: a note, hosted document URLs (from
|
|
5203
5316
|
* `POST /v1/sms/opt-in-proof`), or both, sent together. The registration
|
|
5204
|
-
* returns to `requested` (back in review)
|
|
5317
|
+
* returns to `requested` (back in review), and you do not need to resubmit the
|
|
5205
5318
|
* whole registration. To change the submitted brand/campaign fields
|
|
5206
5319
|
* themselves, resubmit via `POST /v1/sms/registrations` with
|
|
5207
5320
|
* `resubmitRequestId` instead.
|
|
@@ -5218,7 +5331,7 @@ export const respondToSmsRegistrationReview = <ThrowOnError extends boolean = fa
|
|
|
5218
5331
|
* Upload opt-in form proof
|
|
5219
5332
|
* Hosts a screenshot (or PDF) of your SMS opt-in form and returns its
|
|
5220
5333
|
* public URL. Include that URL in the campaign's `messageFlow` (the
|
|
5221
|
-
* opt-in workflow text)
|
|
5334
|
+
* opt-in workflow text). The carrier registry has no attachment field,
|
|
5222
5335
|
* so reviewers verify consent by opening links in that answer. Works
|
|
5223
5336
|
* before a registration exists (use it when registering) and for
|
|
5224
5337
|
* appeals. `/v1/sms/registrations/{id}/opt-in-proof` is an alias.
|
|
@@ -5240,7 +5353,7 @@ export const uploadSmsOptInProofFile = <ThrowOnError extends boolean = false>(op
|
|
|
5240
5353
|
* Upload opt-in form proof for an appeal
|
|
5241
5354
|
* Hosts a screenshot (or PDF) of your SMS opt-in form and returns its
|
|
5242
5355
|
* public URL. Carrier reviewers reject campaigns whose consent can't be
|
|
5243
|
-
* verified and ask for a "link/screenshot of the opt-in form"
|
|
5356
|
+
* verified and ask for a "link/screenshot of the opt-in form". The
|
|
5244
5357
|
* registry has no attachment field, so include the returned URL inside
|
|
5245
5358
|
* the `messageFlow` you submit with the appeal
|
|
5246
5359
|
* (`POST /v1/sms/registrations/{id}/appeal`).
|
|
@@ -5321,7 +5434,7 @@ export const updateWhatsAppBusinessProfile = <ThrowOnError extends boolean = fal
|
|
|
5321
5434
|
* uploads the image bytes, then updates the business profile with the resulting handle.
|
|
5322
5435
|
*
|
|
5323
5436
|
* Provide the image either as a binary upload (`multipart/form-data` with `file`)
|
|
5324
|
-
* or as a download URL (`application/json` with `url`)
|
|
5437
|
+
* or as a download URL (`application/json` with `url`). With a URL we fetch the
|
|
5325
5438
|
* image server-side and upload the bytes for you. Meta's profile-photo API is
|
|
5326
5439
|
* bytes-only, so there is no direct URL passthrough. JPEG/PNG, max 5MB either way.
|
|
5327
5440
|
*
|
|
@@ -5529,7 +5642,7 @@ export const listWhatsAppAccountEvents = <ThrowOnError extends boolean = false>(
|
|
|
5529
5642
|
* Get CTWA conversions dataset
|
|
5530
5643
|
* Returns the Meta Click-to-WhatsApp conversions dataset currently linked
|
|
5531
5644
|
* to the WhatsApp account, if one has been provisioned. Reads only from
|
|
5532
|
-
* the stored `metadata.metaCapiDatasetId
|
|
5645
|
+
* the stored `metadata.metaCapiDatasetId`, never hits Meta, never
|
|
5533
5646
|
* creates a dataset. Use this to detect whether `POST /v1/whatsapp/conversions`
|
|
5534
5647
|
* is configured for an account.
|
|
5535
5648
|
*
|
|
@@ -5547,7 +5660,7 @@ export const getWhatsAppDataset = <ThrowOnError extends boolean = false>(options
|
|
|
5547
5660
|
* Click-to-WhatsApp ad events are reported against via the Conversions
|
|
5548
5661
|
* API, and persists its ID on the account as `metadata.metaCapiDatasetId`.
|
|
5549
5662
|
*
|
|
5550
|
-
* The call is GET-first idempotent
|
|
5663
|
+
* The call is GET-first idempotent: a WABA can only own one CTWA
|
|
5551
5664
|
* dataset, so a second call after a successful provision is a safe no-op
|
|
5552
5665
|
* that returns the same ID with `created: false`.
|
|
5553
5666
|
*
|
|
@@ -5585,7 +5698,7 @@ export const listPhoneNumbers = <ThrowOnError extends boolean = false>(options?:
|
|
|
5585
5698
|
* track Meta pre-verification (US sync path) and, for regulated (Tier 3/4)
|
|
5586
5699
|
* numbers, the async lifecycle: pending_regulatory → active (or
|
|
5587
5700
|
* regulatory_declined). When a regulated number has an Onfido ID step,
|
|
5588
|
-
* `onfidoVerificationUrl` appears here once the order is placed
|
|
5701
|
+
* `onfidoVerificationUrl` appears here once the order is placed. Forward
|
|
5589
5702
|
* it to the end user. (Or subscribe to the whatsapp.number.* webhooks
|
|
5590
5703
|
* instead of polling.)
|
|
5591
5704
|
*
|
|
@@ -5600,7 +5713,7 @@ export const getPhoneNumber = <ThrowOnError extends boolean = false>(options: Op
|
|
|
5600
5713
|
/**
|
|
5601
5714
|
* Release phone number
|
|
5602
5715
|
* Release a purchased phone number. This will:
|
|
5603
|
-
* 1. Disconnect any linked WhatsApp
|
|
5716
|
+
* 1. Disconnect any linked WhatsApp account
|
|
5604
5717
|
* 2. Decrement the Stripe subscription quantity (or cancel if last number)
|
|
5605
5718
|
* 3. Release the number from Telnyx
|
|
5606
5719
|
* 4. Mark the number as released
|
|
@@ -5696,7 +5809,7 @@ export const checkPhoneNumberAvailability = <ThrowOnError extends boolean = fals
|
|
|
5696
5809
|
*
|
|
5697
5810
|
* List all WhatsApp phone numbers purchased by the authenticated user.
|
|
5698
5811
|
* By default, released numbers are excluded. Connected (bring-your-own)
|
|
5699
|
-
* numbers are returned in the separate `connected` array
|
|
5812
|
+
* numbers are returned in the separate `connected` array. They are not
|
|
5700
5813
|
* billed and have no provisioning lifecycle.
|
|
5701
5814
|
*
|
|
5702
5815
|
*/
|
|
@@ -5826,7 +5939,7 @@ export const getPhoneNumberKycForm = <ThrowOnError extends boolean = false>(opti
|
|
|
5826
5939
|
*
|
|
5827
5940
|
* Before submitting, call GET /v1/phone-numbers/availability to
|
|
5828
5941
|
* check the country has deliverable inventory and, for geographic-match
|
|
5829
|
-
* countries, which area the address must be in
|
|
5942
|
+
* countries, which area the address must be in. Otherwise the submission
|
|
5830
5943
|
* can pass review yet never be assignable a number.
|
|
5831
5944
|
*
|
|
5832
5945
|
*/
|
|
@@ -5844,7 +5957,7 @@ export const submitPhoneNumberKyc = <ThrowOnError extends boolean = false>(optio
|
|
|
5844
5957
|
* the account holder can see what's on file before reusing it. Returned
|
|
5845
5958
|
* inline as `application/pdf` (uploads are normalized to PDF). Auth-scoped:
|
|
5846
5959
|
* a document is viewable only when its id is referenced by one of the
|
|
5847
|
-
* caller's own numbers
|
|
5960
|
+
* caller's own numbers. Otherwise `404`.
|
|
5848
5961
|
*
|
|
5849
5962
|
*/
|
|
5850
5963
|
export const viewPhoneNumberKycDocument = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ViewPhoneNumberKycDocumentData, ThrowOnError>) => {
|
|
@@ -5894,7 +6007,7 @@ export const validatePhoneNumberKycAddress = <ThrowOnError extends boolean = fal
|
|
|
5894
6007
|
/**
|
|
5895
6008
|
* Create a hosted KYC link
|
|
5896
6009
|
* Create a single-use, 7-day hosted KYC link that your end customer
|
|
5897
|
-
* completes WITHOUT a Zernio login
|
|
6010
|
+
* completes WITHOUT a Zernio login. Useful when the person who holds the
|
|
5898
6011
|
* ID and address is not your team. They fill the regulated verification on
|
|
5899
6012
|
* a Zernio-hosted page; the number provisions under YOUR account once they
|
|
5900
6013
|
* submit. Only regulated (KYC) countries are valid: a country that does not
|
|
@@ -5902,7 +6015,7 @@ export const validatePhoneNumberKycAddress = <ThrowOnError extends boolean = fal
|
|
|
5902
6015
|
*
|
|
5903
6016
|
* White-label the page with `branding` (your company name, logo, brand
|
|
5904
6017
|
* color). Supply `redirect_url` to send the end customer back to your own
|
|
5905
|
-
* site after a successful submit (completion params are appended
|
|
6018
|
+
* site after a successful submit (completion params are appended; see
|
|
5906
6019
|
* below). Listen for the `whatsapp.number.kyc_submitted` webhook to react
|
|
5907
6020
|
* when the form is completed.
|
|
5908
6021
|
*
|
|
@@ -5925,7 +6038,7 @@ export const createPhoneNumberKycLink = <ThrowOnError extends boolean = false>(o
|
|
|
5925
6038
|
*
|
|
5926
6039
|
* Run the portability check (POST /v1/phone-numbers/port-in/check) and
|
|
5927
6040
|
* upload the two documents (POST /v1/phone-numbers/port-in/documents)
|
|
5928
|
-
* first
|
|
6041
|
+
* first. Uploaded documents must be attached to an order within 30
|
|
5929
6042
|
* minutes or the carrier deletes them, so upload right before this call.
|
|
5930
6043
|
* The carrier may split the numbers into several orders (by country,
|
|
5931
6044
|
* number type, losing carrier); `orders` carries per-order results, and a
|
|
@@ -6000,7 +6113,7 @@ export const uploadPhoneNumberPortInDocument = <ThrowOnError extends boolean = f
|
|
|
6000
6113
|
/**
|
|
6001
6114
|
* Country porting requirements
|
|
6002
6115
|
* The country-specific information a port-in needs BEYOND the LOA,
|
|
6003
|
-
* invoice, and account/address details
|
|
6116
|
+
* invoice, and account/address details, such as an ID copy, proof of
|
|
6004
6117
|
* address, a tax id, or a porting code. Call it after the portability
|
|
6005
6118
|
* check (which returns each number's `countryCode` and
|
|
6006
6119
|
* `phoneNumberType`), render the fields, and pass the collected values as
|
|
@@ -6068,7 +6181,7 @@ export const reviewPhoneNumberKycPacket = <ThrowOnError extends boolean = false>
|
|
|
6068
6181
|
* Get declined requirements
|
|
6069
6182
|
* For a number in `regulatory_declined`, returns ONLY the requirements the
|
|
6070
6183
|
* reviewer flagged declined, as a form spec (same shape as the KYC form GET).
|
|
6071
|
-
* The customer fixes
|
|
6184
|
+
* The customer fixes only those, because Telnyx supports correcting a declined
|
|
6072
6185
|
* requirement group and re-submitting it (no new number/group). Falls back
|
|
6073
6186
|
* to the full spec if the provider exposes no per-requirement flags.
|
|
6074
6187
|
*
|
|
@@ -6086,7 +6199,7 @@ export const getPhoneNumberRemediation = <ThrowOnError extends boolean = false>(
|
|
|
6086
6199
|
* PATCH them onto the SAME requirement group and re-submit it for approval;
|
|
6087
6200
|
* the number goes `regulatory_declined` → `pending_regulatory`. No new
|
|
6088
6201
|
* number and no new billing. Body shape matches the KYC submit (values /
|
|
6089
|
-
* documents / address)
|
|
6202
|
+
* documents / address). Send only the corrected fields.
|
|
6090
6203
|
*
|
|
6091
6204
|
*/
|
|
6092
6205
|
export const remediatePhoneNumber = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemediatePhoneNumberData, ThrowOnError>) => {
|
|
@@ -6099,7 +6212,7 @@ export const remediatePhoneNumber = <ThrowOnError extends boolean = false>(optio
|
|
|
6099
6212
|
/**
|
|
6100
6213
|
* Reply to the regulatory reviewer
|
|
6101
6214
|
* Post a free-text reply (with optional file attachments) to the reviewer
|
|
6102
|
-
* on a number awaiting remediation
|
|
6215
|
+
* on a number awaiting remediation, for asks the structured form can't
|
|
6103
6216
|
* express (e.g. "is this personal or business?"). Attachments are stored by
|
|
6104
6217
|
* us and their links are added to the reviewer's comment thread (the
|
|
6105
6218
|
* carrier's number order takes no loose files). A reply to a comment-style
|
|
@@ -6174,7 +6287,7 @@ export const getWhatsAppNumberKycForm = <ThrowOnError extends boolean = false>(o
|
|
|
6174
6287
|
*
|
|
6175
6288
|
* Before submitting, call GET /v1/whatsapp/phone-numbers/availability to
|
|
6176
6289
|
* check the country has deliverable inventory and, for geographic-match
|
|
6177
|
-
* countries, which area the address must be in
|
|
6290
|
+
* countries, which area the address must be in. Otherwise the submission
|
|
6178
6291
|
* can pass review yet never be assignable a number.
|
|
6179
6292
|
*
|
|
6180
6293
|
*/
|
|
@@ -6237,7 +6350,7 @@ export const validateWhatsAppNumberKycAddress = <ThrowOnError extends boolean =
|
|
|
6237
6350
|
* integrations should use that path.
|
|
6238
6351
|
*
|
|
6239
6352
|
* Create a single-use, 7-day hosted KYC link that your end customer
|
|
6240
|
-
* completes WITHOUT a Zernio login
|
|
6353
|
+
* completes WITHOUT a Zernio login. Useful when the person who holds the
|
|
6241
6354
|
* ID and address is not your team. They fill the regulated verification on
|
|
6242
6355
|
* a Zernio-hosted page; the number provisions under YOUR account once they
|
|
6243
6356
|
* submit. Only regulated (KYC) countries are valid: a country that does not
|
|
@@ -6245,7 +6358,7 @@ export const validateWhatsAppNumberKycAddress = <ThrowOnError extends boolean =
|
|
|
6245
6358
|
*
|
|
6246
6359
|
* White-label the page with `branding` (your company name, logo, brand
|
|
6247
6360
|
* color). Supply `redirect_url` to send the end customer back to your own
|
|
6248
|
-
* site after a successful submit (completion params are appended
|
|
6361
|
+
* site after a successful submit (completion params are appended; see
|
|
6249
6362
|
* below). Listen for the `whatsapp.number.kyc_submitted` webhook to react
|
|
6250
6363
|
* when the form is completed.
|
|
6251
6364
|
*
|
|
@@ -6267,7 +6380,7 @@ export const createWhatsAppNumberKycLink = <ThrowOnError extends boolean = false
|
|
|
6267
6380
|
* carry a profileId and this endpoint moves them together.
|
|
6268
6381
|
*
|
|
6269
6382
|
* Use this instead of `PATCH /v1/accounts/{accountId}`: that one moves the
|
|
6270
|
-
*
|
|
6383
|
+
* account only and leaves the number itself pinned to its original
|
|
6271
6384
|
* profile, which splits the number across two profiles. Connecting a
|
|
6272
6385
|
* Zernio-provisioned number from any profile but its own is rejected with a
|
|
6273
6386
|
* `409` (`WHATSAPP_NUMBER_PINNED_TO_PROFILE`). This endpoint is how you
|
|
@@ -6294,7 +6407,7 @@ export const moveWhatsAppNumberToProfile = <ThrowOnError extends boolean = false
|
|
|
6294
6407
|
*
|
|
6295
6408
|
* For a number in `regulatory_declined`, returns ONLY the requirements the
|
|
6296
6409
|
* reviewer flagged declined, as a form spec (same shape as the KYC form GET).
|
|
6297
|
-
* The customer fixes
|
|
6410
|
+
* The customer fixes only those, because Telnyx supports correcting a declined
|
|
6298
6411
|
* requirement group and re-submitting it (no new number/group). Falls back
|
|
6299
6412
|
* to the full spec if the provider exposes no per-requirement flags.
|
|
6300
6413
|
*
|
|
@@ -6316,7 +6429,7 @@ export const getWhatsAppNumberRemediation = <ThrowOnError extends boolean = fals
|
|
|
6316
6429
|
* PATCH them onto the SAME requirement group and re-submit it for approval;
|
|
6317
6430
|
* the number goes `regulatory_declined` → `pending_regulatory`. No new
|
|
6318
6431
|
* number and no new billing. Body shape matches the KYC submit (values /
|
|
6319
|
-
* documents / address)
|
|
6432
|
+
* documents / address). Send only the corrected fields.
|
|
6320
6433
|
*
|
|
6321
6434
|
*/
|
|
6322
6435
|
export const remediateWhatsAppNumber = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemediateWhatsAppNumberData, ThrowOnError>) => {
|
|
@@ -6412,8 +6525,8 @@ export const deletePhoneNumberStockWatch = <ThrowOnError extends boolean = false
|
|
|
6412
6525
|
*
|
|
6413
6526
|
* The `digestPassword` is returned only by this call (and by
|
|
6414
6527
|
* 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
|
|
6528
|
+
* to a trunk. Several trunks may point at the same host. Each carries its
|
|
6529
|
+
* own credentials and spend cap, so separate destinations (e.g.
|
|
6417
6530
|
* an agency's clients) stay isolated.
|
|
6418
6531
|
*
|
|
6419
6532
|
*/
|
|
@@ -6510,7 +6623,7 @@ export const detachNumberFromSipTrunk = <ThrowOnError extends boolean = false>(o
|
|
|
6510
6623
|
* US numbers additionally need a carrier registration before messages
|
|
6511
6624
|
* deliver; the response tells you which path applies:
|
|
6512
6625
|
* - `alreadyRegistered: true`: a prior registration still covers this
|
|
6513
|
-
* number; SMS was
|
|
6626
|
+
* number; SMS was reactivated.
|
|
6514
6627
|
* - `reusable` set: you have an approved registration this number can
|
|
6515
6628
|
* join in one click via
|
|
6516
6629
|
* `POST /v1/phone-numbers/{id}/sms/reuse-registration`
|
|
@@ -6531,7 +6644,7 @@ export const enableSmsOnNumber = <ThrowOnError extends boolean = false>(options:
|
|
|
6531
6644
|
/**
|
|
6532
6645
|
* Disable SMS on a number
|
|
6533
6646
|
* Turns off SMS for the number (deactivates its SMS account). The carrier
|
|
6534
|
-
* registration is untouched, so re-enabling later
|
|
6647
|
+
* registration is untouched, so re-enabling later reactivates it,
|
|
6535
6648
|
* with no re-registration.
|
|
6536
6649
|
*
|
|
6537
6650
|
*/
|
|
@@ -6565,7 +6678,7 @@ export const reuseSmsRegistrationForNumber = <ThrowOnError extends boolean = fal
|
|
|
6565
6678
|
* sub-resource). Encrypted secrets are never returned; only a boolean
|
|
6566
6679
|
* saying whether a SIP password is stored. The account-scoped read
|
|
6567
6680
|
* (`GET /v1/whatsapp/calling?accountId=`) remains for callers that only
|
|
6568
|
-
* know the
|
|
6681
|
+
* know the account id, and additionally carries account-level
|
|
6569
6682
|
* extras (billing eligibility, current-period spend).
|
|
6570
6683
|
*
|
|
6571
6684
|
*/
|
|
@@ -6662,7 +6775,7 @@ export const verifyWhatsAppCallerId = <ThrowOnError extends boolean = false>(opt
|
|
|
6662
6775
|
* track Meta pre-verification (US sync path) and, for regulated (Tier 3/4)
|
|
6663
6776
|
* numbers, the async lifecycle: pending_regulatory → active (or
|
|
6664
6777
|
* regulatory_declined). When a regulated number has an Onfido ID step,
|
|
6665
|
-
* `onfidoVerificationUrl` appears here once the order is placed
|
|
6778
|
+
* `onfidoVerificationUrl` appears here once the order is placed. Forward
|
|
6666
6779
|
* it to the end user. (Or subscribe to the whatsapp.number.* webhooks
|
|
6667
6780
|
* instead of polling.)
|
|
6668
6781
|
*
|
|
@@ -6681,7 +6794,7 @@ export const getWhatsAppPhoneNumber = <ThrowOnError extends boolean = false>(opt
|
|
|
6681
6794
|
* integrations should use that path.
|
|
6682
6795
|
*
|
|
6683
6796
|
* Release a purchased phone number. This will:
|
|
6684
|
-
* 1. Disconnect any linked WhatsApp
|
|
6797
|
+
* 1. Disconnect any linked WhatsApp account
|
|
6685
6798
|
* 2. Decrement the Stripe subscription quantity (or cancel if last number)
|
|
6686
6799
|
* 3. Release the number from Telnyx
|
|
6687
6800
|
* 4. Mark the number as released
|
|
@@ -6714,7 +6827,7 @@ export const listWhatsAppSandboxSessions = <ThrowOnError extends boolean = false
|
|
|
6714
6827
|
* Creates (or refreshes) a pending sandbox session for the given phone and
|
|
6715
6828
|
* immediately fires the verified sandbox template from the shared sandbox
|
|
6716
6829
|
* number to that phone. The session activates when the phone owner replies
|
|
6717
|
-
* to that WhatsApp message
|
|
6830
|
+
* to that WhatsApp message: the reply itself is proof of ownership.
|
|
6718
6831
|
*
|
|
6719
6832
|
* One phone per user: if the caller already has a non-expired session for
|
|
6720
6833
|
* a DIFFERENT phone, the request is rejected with `invalid_field_value`
|
|
@@ -6738,8 +6851,8 @@ export const createWhatsAppSandboxSession = <ThrowOnError extends boolean = fals
|
|
|
6738
6851
|
* Revoke a sandbox session
|
|
6739
6852
|
* Hard-deletes the session. The user loses the ability to send to that
|
|
6740
6853
|
* phone via the sandbox until they re-activate it. Existing conversations
|
|
6741
|
-
* and messages already exchanged with that phone are untouched
|
|
6742
|
-
*
|
|
6854
|
+
* and messages already exchanged with that phone are untouched.
|
|
6855
|
+
* Revocation only blocks FUTURE sends.
|
|
6743
6856
|
*
|
|
6744
6857
|
* Sessions belonging to other users cannot be revoked; the response is
|
|
6745
6858
|
* the same 400 as "session not found" so existence isn't leaked.
|
|
@@ -7015,7 +7128,7 @@ export const getWhatsAppFlowPreview = <ThrowOnError extends boolean = false>(opt
|
|
|
7015
7128
|
* List flow versions
|
|
7016
7129
|
* List the flow's version history (the clone lineage Zernio tracks, since Meta has no
|
|
7017
7130
|
* 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
|
|
7131
|
+
* live name and status from Meta. A flow with no lineage returns only itself as version 1.
|
|
7019
7132
|
*
|
|
7020
7133
|
*/
|
|
7021
7134
|
export const listWhatsAppFlowVersions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListWhatsAppFlowVersionsData, ThrowOnError>) => {
|
|
@@ -7104,7 +7217,7 @@ export const sendWhatsAppFlowMessage = <ThrowOnError extends boolean = false>(op
|
|
|
7104
7217
|
* List flow responses
|
|
7105
7218
|
* List the responses customers submitted when completing a flow (parsed from the
|
|
7106
7219
|
* nfm_reply messages received via webhook), newest first. Scope to a single flow
|
|
7107
|
-
* with `flowId
|
|
7220
|
+
* with `flowId`, which matches responses whose flow_token carries the `<flowId>:`
|
|
7108
7221
|
* prefix that Zernio stamps on auto-generated tokens at send time. Responses sent
|
|
7109
7222
|
* with a custom integrator-supplied flow_token are not attributed to a flow.
|
|
7110
7223
|
*
|
|
@@ -7461,7 +7574,7 @@ export const listWorkflowExecutions = <ThrowOnError extends boolean = false>(opt
|
|
|
7461
7574
|
|
|
7462
7575
|
/**
|
|
7463
7576
|
* 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
|
|
7577
|
+
* 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
7578
|
*
|
|
7466
7579
|
*/
|
|
7467
7580
|
export const triggerWorkflow = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<TriggerWorkflowData, ThrowOnError>) => {
|
|
@@ -7485,7 +7598,7 @@ export const listWorkflowExecutionEvents = <ThrowOnError extends boolean = false
|
|
|
7485
7598
|
|
|
7486
7599
|
/**
|
|
7487
7600
|
* 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
|
|
7601
|
+
* 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
7602
|
*
|
|
7490
7603
|
*/
|
|
7491
7604
|
export const duplicateWorkflow = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DuplicateWorkflowData, ThrowOnError>) => {
|
|
@@ -7497,7 +7610,7 @@ export const duplicateWorkflow = <ThrowOnError extends boolean = false>(options:
|
|
|
7497
7610
|
|
|
7498
7611
|
/**
|
|
7499
7612
|
* 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
|
|
7613
|
+
* 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
7614
|
*
|
|
7502
7615
|
*/
|
|
7503
7616
|
export const listWorkflowVersions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListWorkflowVersionsData, ThrowOnError>) => {
|
|
@@ -7751,7 +7864,7 @@ export const listCommentAutomationLogs = <ThrowOnError extends boolean = false>(
|
|
|
7751
7864
|
*
|
|
7752
7865
|
* To find the Zernio ad behind a comment you see in Meta Business Manager, filter by
|
|
7753
7866
|
* platformAdId (the Meta ad ID), effectiveObjectStoryId (Facebook), or
|
|
7754
|
-
* effectiveInstagramMediaId (Instagram)
|
|
7867
|
+
* effectiveInstagramMediaId (Instagram). Those are the post/media the ad's engagement
|
|
7755
7868
|
* lives on, and are also returned on each ad's `creative` object. Then call
|
|
7756
7869
|
* GET /v1/ads/{adId}/comments with the returned ad id.
|
|
7757
7870
|
*
|
|
@@ -7766,7 +7879,7 @@ export const listAds = <ThrowOnError extends boolean = false>(options?: OptionsL
|
|
|
7766
7879
|
/**
|
|
7767
7880
|
* Google Ads search terms report
|
|
7768
7881
|
* The actual search queries that triggered your ads, with matched-keyword
|
|
7769
|
-
* status and spend metrics
|
|
7882
|
+
* status and spend metrics, the raw material for wasted-spend analysis and
|
|
7770
7883
|
* negative-keyword lists. Reads Google's `search_term_view`, cached for
|
|
7771
7884
|
* the quota window; defaults to the last 30 days. Rows are ordered by
|
|
7772
7885
|
* cost, descending. Draws on the shared Google Ads operations budget.
|
|
@@ -7954,7 +8067,7 @@ export const createAdCampaign = <ThrowOnError extends boolean = false>(options:
|
|
|
7954
8067
|
* `updated` / `skipped` describe only the ads whose own stored status CHANGED alongside it, so
|
|
7955
8068
|
* `updated: 0` is a normal successful response, not a no-op. Ads are skipped when they are in a terminal
|
|
7956
8069
|
* status (rejected, completed, cancelled), already in the target state, or switched on but not yet
|
|
7957
|
-
* delivering
|
|
8070
|
+
* delivering. The last group keeps its `pending_review` / `error` status until the platform reports what
|
|
7958
8071
|
* it became. `skippedReasons` names which case applies.
|
|
7959
8072
|
*
|
|
7960
8073
|
* On Meta this flips the campaign only. An ad set paused in its own right stays paused, so pair this with
|
|
@@ -8001,7 +8114,7 @@ export const getCampaignBidding = <ThrowOnError extends boolean = false>(options
|
|
|
8001
8114
|
* | Body field | Meta | Google | Others |
|
|
8002
8115
|
* |---|---|---|---|
|
|
8003
8116
|
* | `bidStrategy` | Yes | Yes | 501 |
|
|
8004
|
-
* | `bidAmount`, `roasAverageFloor` | 400
|
|
8117
|
+
* | `bidAmount`, `roasAverageFloor` | 400 (ad-set level) | Yes | 400 |
|
|
8005
8118
|
* | `portfolioBidStrategyId` | 400 | Yes | 400 |
|
|
8006
8119
|
* | `budget` (CBO; ABO returns 409) | Yes | 501 | 501 |
|
|
8007
8120
|
* | `name` | Yes | 501 | 501 |
|
|
@@ -8125,9 +8238,9 @@ export const bulkUpdateAdCampaignStatus = <ThrowOnError extends boolean = false>
|
|
|
8125
8238
|
* any Group / Campaign / Creative whose source is `ACTIVE` gets its
|
|
8126
8239
|
* clone activated too. Duplicating an ACTIVE campaign with
|
|
8127
8240
|
* `INHERITED_FROM_SOURCE` starts a second front of spend the moment
|
|
8128
|
-
* the clone activates
|
|
8241
|
+
* the clone activates. The safe default is `PAUSED`.
|
|
8129
8242
|
*
|
|
8130
|
-
* The new hierarchy is asynchronous to materialize in our DB
|
|
8243
|
+
* The new hierarchy is asynchronous to materialize in our DB, and we
|
|
8131
8244
|
* trigger sync discovery automatically. Set `syncAfter: false` to
|
|
8132
8245
|
* skip and poll `/v1/ads/tree` on your own cadence.
|
|
8133
8246
|
*
|
|
@@ -8196,9 +8309,9 @@ export const updateCampaignTargeting = <ThrowOnError extends boolean = false>(op
|
|
|
8196
8309
|
* Ad sets (Google ad groups) synced for the connection, optionally
|
|
8197
8310
|
* filtered by platform and campaignId. Reads the `ad_sets` table
|
|
8198
8311
|
* directly, independent of the `ads` rollup GET /v1/ads/tree uses, so a
|
|
8199
|
-
*
|
|
8312
|
+
* newly created standalone ad group with no ad yet (POST /v1/ads/ad-sets,
|
|
8200
8313
|
* Google only) is visible here even though it is invisible in the tree
|
|
8201
|
-
* until an ad joins it via `
|
|
8314
|
+
* until an ad joins it via `adSetId` on POST /v1/ads/create. Returns at most 500
|
|
8202
8315
|
* rows, newest first.
|
|
8203
8316
|
*/
|
|
8204
8317
|
export const listAdSets = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListAdSetsData, ThrowOnError>) => {
|
|
@@ -8211,7 +8324,7 @@ export const listAdSets = <ThrowOnError extends boolean = false>(options?: Optio
|
|
|
8211
8324
|
/**
|
|
8212
8325
|
* Create a standalone ad group
|
|
8213
8326
|
* Google Ads compliance row C.190: creates an ad group WITHOUT an ad,
|
|
8214
|
-
* under an existing campaign. Ads join it later via `
|
|
8327
|
+
* under an existing campaign. Ads join it later via `adSetId`
|
|
8215
8328
|
* on POST /v1/ads/create. Google only; every other platform returns 501.
|
|
8216
8329
|
*
|
|
8217
8330
|
* Created `PAUSED` unless `status: ACTIVE`. The new ad group has no ad
|
|
@@ -8233,7 +8346,7 @@ export const createAdSet = <ThrowOnError extends boolean = false>(options: Optio
|
|
|
8233
8346
|
* Duplicates an ad set, including its ads and creatives by default (`deepCopy: true`),
|
|
8234
8347
|
* via Meta's native `POST /{adset-id}/copies`. The copy is created paused so callers can
|
|
8235
8348
|
* review before launching. `campaignId` retargets the copy into another campaign; omitted
|
|
8236
|
-
* = the source's own campaign. The new hierarchy materializes asynchronously
|
|
8349
|
+
* = the source's own campaign. The new hierarchy materializes asynchronously, and sync
|
|
8237
8350
|
* discovery is triggered automatically (`syncAfter: false` to skip).
|
|
8238
8351
|
*/
|
|
8239
8352
|
export const duplicateAdSet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DuplicateAdSetData, ThrowOnError>) => {
|
|
@@ -8260,7 +8373,7 @@ export const duplicateAd = <ThrowOnError extends boolean = false>(options: Optio
|
|
|
8260
8373
|
/**
|
|
8261
8374
|
* Live ad-set details incl. learning phase
|
|
8262
8375
|
* Reads the ad set live from Meta, returned verbatim. The default projection includes
|
|
8263
|
-
* `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING
|
|
8376
|
+
* `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING; Meta
|
|
8264
8377
|
* omits its `status` key on paused ad sets), delivery settings, budgets, schedule and
|
|
8265
8378
|
* targeting. `fields` is a raw-passthrough override; unknown fields return Meta's 400
|
|
8266
8379
|
* verbatim.
|
|
@@ -8309,7 +8422,7 @@ export const getAdSetDetails = <ThrowOnError extends boolean = false>(options: O
|
|
|
8309
8422
|
* doesn't allow) surface as 400s from Meta.
|
|
8310
8423
|
*
|
|
8311
8424
|
* When updating `budget` on an ABO campaign: if the parent campaign is
|
|
8312
|
-
* CBO, the response is 409 with code BUDGET_LEVEL_MISMATCH
|
|
8425
|
+
* CBO, the response is 409 with code BUDGET_LEVEL_MISMATCH. Route to
|
|
8313
8426
|
* PUT /v1/ads/campaigns/{campaignId} instead.
|
|
8314
8427
|
*
|
|
8315
8428
|
*/
|
|
@@ -8347,7 +8460,7 @@ export const deleteAdSet = <ThrowOnError extends boolean = false>(options: Optio
|
|
|
8347
8460
|
* /v1/ads/campaigns/{campaignId}/status.
|
|
8348
8461
|
*
|
|
8349
8462
|
* On Meta and LinkedIn this writes the ad set's own on/off switch
|
|
8350
|
-
* (Meta: `configured_status`), whatever delivery status its ads report
|
|
8463
|
+
* (Meta: `configured_status`), whatever delivery status its ads report:
|
|
8351
8464
|
* an ad still in review does not block resuming its ad set. The echoed
|
|
8352
8465
|
* `status` is the confirmation that it landed. Where the platform has no
|
|
8353
8466
|
* ad-set switch (TikTok and others) the toggle is emulated by flipping the
|
|
@@ -8402,13 +8515,13 @@ export const getAdTree = <ThrowOnError extends boolean = false>(options?: Option
|
|
|
8402
8515
|
/**
|
|
8403
8516
|
* Get daily account metrics
|
|
8404
8517
|
* Returns daily aggregate metrics across all ads in a SocialAccount as a single
|
|
8405
|
-
* time series
|
|
8518
|
+
* time series, one row per calendar day in the requested range. Use this for
|
|
8406
8519
|
* dashboards that draw a daily-spend or daily-conversions chart, instead of
|
|
8407
8520
|
* calling `/v1/ads/tree` once per day.
|
|
8408
8521
|
*
|
|
8409
8522
|
* `accountId` is required. The lookup is sibling-expanded so passing the `metaads`
|
|
8410
8523
|
* ID also includes ads under the linked `facebook` / `instagram` posting account
|
|
8411
|
-
* (and vice-versa)
|
|
8524
|
+
* (and vice-versa), the same convention as `/v1/ads/tree` and `/v1/ads`.
|
|
8412
8525
|
*
|
|
8413
8526
|
* Date range defaults to the last 90 days. Capped at 730 days. Ranges older
|
|
8414
8527
|
* than the ingested history return a `202` immediately with the covered part
|
|
@@ -8453,16 +8566,18 @@ export const getAd = <ThrowOnError extends boolean = false>(options: OptionsLega
|
|
|
8453
8566
|
* Per-platform support:
|
|
8454
8567
|
* - **Meta** (Facebook + Instagram): all fields supported.
|
|
8455
8568
|
* - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative
|
|
8456
|
-
* (via `/v2/ad/update/` patch-style
|
|
8569
|
+
* (via `/v2/ad/update/` patch-style: `headline` is ignored, `body` becomes `ad_text`).
|
|
8457
8570
|
* - **Google**: status, budget, KEYWORD edits via `targeting.keywords` /
|
|
8458
|
-
* `targeting.negativeKeywords`, and DEVICE bid adjustments via `targeting.devices
|
|
8459
|
-
*
|
|
8571
|
+
* `targeting.negativeKeywords`, and DEVICE bid adjustments via `targeting.devices`.
|
|
8572
|
+
* Each list you send becomes the FULL new set of its kind (criteria not in the
|
|
8460
8573
|
* list are removed); a kind left out is untouched. Any other `targeting` field
|
|
8461
8574
|
* returns 400: Google cannot mutate broad targeting post-create without recreating
|
|
8462
8575
|
* the campaign. `creative` returns 501.
|
|
8463
|
-
* - **LinkedIn**: status, budget, targeting (
|
|
8464
|
-
*
|
|
8465
|
-
*
|
|
8576
|
+
* - **LinkedIn**: status, budget, targeting (countries or regions, excludedLocations (countries),
|
|
8577
|
+
* the B2B facets, and audience segments; applied to the LinkedIn Campaign via
|
|
8578
|
+
* PARTIAL_UPDATE, and REPLACES the campaign's entire targetingCriteria, not a merge),
|
|
8579
|
+
* and creative (uploads new media, creates a replacement inline creative on the same
|
|
8580
|
+
* campaign, pauses the old one).
|
|
8466
8581
|
* - **Pinterest / X / OpenAI Ads**: status + budget only. Sending
|
|
8467
8582
|
* `targeting` or `creative` returns 501 with code `unsupported_platform_operation`.
|
|
8468
8583
|
* OpenAI Ads budget is lifetime-only (see `budget.type` below).
|
|
@@ -8514,7 +8629,7 @@ export const deleteAd = <ThrowOnError extends boolean = false>(options: OptionsL
|
|
|
8514
8629
|
|
|
8515
8630
|
/**
|
|
8516
8631
|
* Pause or resume a single ad
|
|
8517
|
-
* Ad-scoped pause/resume
|
|
8632
|
+
* Ad-scoped pause/resume: touches ONLY this ad, never its parent ad set or
|
|
8518
8633
|
* campaign (so sibling ads keep running). Thin wrapper over the `status`
|
|
8519
8634
|
* field of PUT /v1/ads/{adId}, for callers that want a URL symmetric to
|
|
8520
8635
|
* /v1/ads/campaigns/{campaignId}/status and /v1/ads/ad-sets/{adSetId}/status.
|
|
@@ -8536,7 +8651,7 @@ export const updateAdStatus = <ThrowOnError extends boolean = false>(options: Op
|
|
|
8536
8651
|
/**
|
|
8537
8652
|
* Attach extension assets to a Google Search campaign
|
|
8538
8653
|
* Attach sitelinks, callouts and/or structured snippets to an already-existing Google
|
|
8539
|
-
* Search campaign
|
|
8654
|
+
* Search campaign. These are the same builders POST /v1/ads/create uses, but without rebuilding
|
|
8540
8655
|
* the hierarchy. At least one of sitelinks, callouts or structuredSnippets is required.
|
|
8541
8656
|
*
|
|
8542
8657
|
* Google-only. Other platforms have no equivalent extension surface and return 501.
|
|
@@ -8607,7 +8722,7 @@ export const getAdPreviews = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
8607
8722
|
*
|
|
8608
8723
|
* Reads Meta live rather than the stored creative blob because Meta's signed fbcdn
|
|
8609
8724
|
* URLs carry an `oe=<hex>` expiration (image_url ~24 h, video source ~12 d). Treat
|
|
8610
|
-
* URLs as short-lived
|
|
8725
|
+
* URLs as short-lived: re-fetch this endpoint before serving or downloading assets
|
|
8611
8726
|
* instead of caching URLs beyond that window.
|
|
8612
8727
|
*/
|
|
8613
8728
|
export const getAdMedia = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdMediaData, ThrowOnError>) => {
|
|
@@ -8744,7 +8859,7 @@ export const getAdTrackingTags = <ThrowOnError extends boolean = false>(options:
|
|
|
8744
8859
|
* - Meta: `urlTags` (array of {key,value}). Meta creatives are immutable, so this rebuilds the
|
|
8745
8860
|
* creative and repoints the ad. By DEFAULT we PRESERVE the existing creative verbatim
|
|
8746
8861
|
* (re-post its object_story_spec + the new url_tags, reusing the image), so you send `urlTags`
|
|
8747
|
-
* ALONE
|
|
8862
|
+
* ALONE, with no need to read back headline/body/CTA. `creative` (headline, body, callToAction,
|
|
8748
8863
|
* linkUrl, imageUrl) is OPTIONAL and only needed to rebuild explicitly, or for SHARE / page-post
|
|
8749
8864
|
* / dark / asset_feed creatives whose object_story_spec Meta strips (those return 422 asking for
|
|
8750
8865
|
* `creative`).
|
|
@@ -8774,7 +8889,7 @@ export const updateAdTrackingTags = <ThrowOnError extends boolean = false>(optio
|
|
|
8774
8889
|
* fallback for ads that predate the field.
|
|
8775
8890
|
*
|
|
8776
8891
|
* For Instagram-placed comments, the Instagram account that runs the ad must be connected
|
|
8777
|
-
* to Zernio
|
|
8892
|
+
* to Zernio, because those comments are read through that account's token. If no connected
|
|
8778
8893
|
* Instagram account on the profile can read the ad's media, the call returns
|
|
8779
8894
|
* ads_connection_required (the Facebook side, if any, is still readable via ?placement=facebook).
|
|
8780
8895
|
*
|
|
@@ -8830,7 +8945,7 @@ export const getAdsActivityLog = <ThrowOnError extends boolean = false>(options:
|
|
|
8830
8945
|
|
|
8831
8946
|
/**
|
|
8832
8947
|
* Create a Reach & Frequency prediction
|
|
8833
|
-
* Creates an R&F prediction
|
|
8948
|
+
* Creates an R&F prediction. This is a QUOTE, nothing is bought and no ad entities are created.
|
|
8834
8949
|
* Provide a date range plus exactly one of `budgetAmount` (Meta predicts reach) or `reach`
|
|
8835
8950
|
* (Meta predicts the budget). The response carries the estimate and its allowed bounds
|
|
8836
8951
|
* (min/max budget and reach). Predictions expire on their own; to buy, reserve one via
|
|
@@ -8873,7 +8988,7 @@ export const cancelRfReservation = <ThrowOnError extends boolean = false>(option
|
|
|
8873
8988
|
/**
|
|
8874
8989
|
* Reserve a Reach & Frequency prediction
|
|
8875
8990
|
* Locks the quoted price + inventory until the returned `expiresAt` and mints a NEW
|
|
8876
|
-
* prediction id
|
|
8991
|
+
* prediction id. Pass that RESERVED id (not the original) as `rfPredictionId` on
|
|
8877
8992
|
* POST /v1/ads/create. Release an unused reservation via DELETE.
|
|
8878
8993
|
*/
|
|
8879
8994
|
export const reserveRfPrediction = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReserveRfPredictionData, ThrowOnError>) => {
|
|
@@ -8944,7 +9059,7 @@ export const listHighDemandPeriods = <ThrowOnError extends boolean = false>(opti
|
|
|
8944
9059
|
*
|
|
8945
9060
|
* Two Meta constraints worth knowing before you call it. `timeStart` / `timeEnd` must
|
|
8946
9061
|
* fall on a 15-minute boundary, and a campaign cannot mix `ABSOLUTE` and `MULTIPLIER`
|
|
8947
|
-
* across its schedules
|
|
9062
|
+
* across its schedules; the second type is rejected with "Can't mix your budget scaling
|
|
8948
9063
|
* selection". Window rules (must sit inside the campaign's run dates, minimum lead time,
|
|
8949
9064
|
* no overlap) are Meta's and its message is forwarded verbatim.
|
|
8950
9065
|
*/
|
|
@@ -8999,7 +9114,7 @@ export const getAdCreative = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
8999
9114
|
|
|
9000
9115
|
/**
|
|
9001
9116
|
* Rename a creative
|
|
9002
|
-
* Renames a creative. Creatives are immutable on Meta beyond `name
|
|
9117
|
+
* Renames a creative. Creatives are immutable on Meta beyond `name`. For content changes
|
|
9003
9118
|
* create a new creative (POST /v1/ads/creatives) and swap it onto the ad
|
|
9004
9119
|
* (PUT /v1/ads/{adId} with `creative`).
|
|
9005
9120
|
*/
|
|
@@ -9013,7 +9128,7 @@ export const updateAdCreative = <ThrowOnError extends boolean = false>(options:
|
|
|
9013
9128
|
/**
|
|
9014
9129
|
* Delete a creative
|
|
9015
9130
|
* Deletes a creative from the library. Meta only allows deleting creatives not referenced
|
|
9016
|
-
* by any ad
|
|
9131
|
+
* by any ad; otherwise its 400 surfaces verbatim.
|
|
9017
9132
|
*/
|
|
9018
9133
|
export const deleteAdCreative = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAdCreativeData, ThrowOnError>) => {
|
|
9019
9134
|
return (options?.client ?? client).delete<DeleteAdCreativeResponse, DeleteAdCreativeError, ThrowOnError>({
|
|
@@ -9204,7 +9319,7 @@ export const getAdAccountFinance = <ThrowOnError extends boolean = false>(option
|
|
|
9204
9319
|
|
|
9205
9320
|
/**
|
|
9206
9321
|
* List ad accounts
|
|
9207
|
-
* Returns the platform ad accounts available for the given
|
|
9322
|
+
* Returns the platform ad accounts available for the given account (e.g. Meta ad
|
|
9208
9323
|
* accounts, TikTok advertiser IDs, Google Ads customer IDs).
|
|
9209
9324
|
*
|
|
9210
9325
|
* For TikTok agencies: enumerates every advertiser under every Business Center the token
|
|
@@ -9319,9 +9434,20 @@ export const boostPost = <ThrowOnError extends boolean = false>(options: Options
|
|
|
9319
9434
|
|
|
9320
9435
|
/**
|
|
9321
9436
|
* Create standalone ad
|
|
9322
|
-
*
|
|
9437
|
+
* Create a paid ad with custom creative across Meta, Google Ads, Pinterest, TikTok, X, LinkedIn, and OpenAI Ads (ChatGPT Ads).
|
|
9438
|
+
*
|
|
9439
|
+
* Three mutually-exclusive request shapes are selected by the body:
|
|
9440
|
+
*
|
|
9441
|
+
* - Legacy single-creative shape (all platforms, the default).
|
|
9442
|
+
* - Meta-only multi-creative shape via the creatives array: one ad set with N ads sharing budget and targeting.
|
|
9443
|
+
* - 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.
|
|
9444
|
+
*
|
|
9445
|
+
* Per-platform required fields, budget minimums, and video-ad rules are documented on each property below.
|
|
9446
|
+
*
|
|
9447
|
+
* 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
9448
|
*
|
|
9324
9449
|
* **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.
|
|
9450
|
+
*
|
|
9325
9451
|
*/
|
|
9326
9452
|
export const createStandaloneAd = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateStandaloneAdData, ThrowOnError>) => {
|
|
9327
9453
|
return (options?.client ?? client).post<CreateStandaloneAdResponse, CreateStandaloneAdError, ThrowOnError>({
|
|
@@ -9344,7 +9470,7 @@ export const listLeads = <ThrowOnError extends boolean = false>(options?: Option
|
|
|
9344
9470
|
|
|
9345
9471
|
/**
|
|
9346
9472
|
* 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
|
|
9473
|
+
* 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
9474
|
*
|
|
9349
9475
|
*/
|
|
9350
9476
|
export const listLeadForms = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListLeadFormsData, ThrowOnError>) => {
|
|
@@ -9356,7 +9482,7 @@ export const listLeadForms = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
9356
9482
|
|
|
9357
9483
|
/**
|
|
9358
9484
|
* 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
|
|
9485
|
+
* 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
9486
|
*
|
|
9361
9487
|
*/
|
|
9362
9488
|
export const createLeadForm = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateLeadFormData, ThrowOnError>) => {
|
|
@@ -9413,7 +9539,7 @@ export const createTestLead = <ThrowOnError extends boolean = false>(options: Op
|
|
|
9413
9539
|
|
|
9414
9540
|
/**
|
|
9415
9541
|
* Upload an ad image from base64
|
|
9416
|
-
* Uploads raw image bytes to the Meta ad account's image library
|
|
9542
|
+
* Uploads raw image bytes to the Meta ad account's image library, for callers whose
|
|
9417
9543
|
* creatives aren't hosted at a public URL. Returns the image `hash` (Meta's identifier for
|
|
9418
9544
|
* the asset) and the Meta-hosted `url`, which can be used directly as `imageUrl` on the
|
|
9419
9545
|
* create endpoints. Max 30 MB decoded.
|
|
@@ -9447,7 +9573,7 @@ export const listAdImages = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
9447
9573
|
*
|
|
9448
9574
|
* Accepts either an https `videoUrl` we download server-side (SSRF-guarded) or raw
|
|
9449
9575
|
* `videoBase64` bytes; exactly one is required. `videoBase64` is capped by Vercel's body
|
|
9450
|
-
* limit
|
|
9576
|
+
* limit, around 4.5 MB payload in practice, so larger videos must come via `videoUrl`.
|
|
9451
9577
|
*
|
|
9452
9578
|
* Returns the Meta `video.id` (reusable wherever `video.id` is accepted) plus Meta's
|
|
9453
9579
|
* auto-generated poster URL when available. The endpoint waits until Meta reports the
|
|
@@ -9470,7 +9596,7 @@ export const uploadAdVideo = <ThrowOnError extends boolean = false>(options: Opt
|
|
|
9470
9596
|
*
|
|
9471
9597
|
* `source` lets you PLAY a video before picking it, which a poster frame alone can't settle
|
|
9472
9598
|
* 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
|
|
9599
|
+
* as good for preview at selection time only. Never persist it; re-list to get a fresh one.
|
|
9474
9600
|
*
|
|
9475
9601
|
* This is the only way to reach a video uploaded OUTSIDE Zernio (Ads Manager, another
|
|
9476
9602
|
* tool); videos we uploaded also come back as `creative.videoId` on GET /v1/ads.
|
|
@@ -9525,22 +9651,28 @@ export const searchAdInterests = <ThrowOnError extends boolean = false>(options:
|
|
|
9525
9651
|
* `interests`/`behaviors` entity ids) on `POST /v1/ads/create`,
|
|
9526
9652
|
* `POST /v1/ads/targeting/reach-estimate`, and `saved_targeting` audiences.
|
|
9527
9653
|
*
|
|
9528
|
-
* The `dimension` param selects what is searched
|
|
9529
|
-
*
|
|
9530
|
-
*
|
|
9531
|
-
*
|
|
9532
|
-
*
|
|
9654
|
+
* The `dimension` param selects what is searched:
|
|
9655
|
+
*
|
|
9656
|
+
* - `geo`: locations, further scoped by `geoType`
|
|
9657
|
+
* - `interest`
|
|
9658
|
+
* - `behavior`
|
|
9659
|
+
* - `income`
|
|
9660
|
+
* - `language`: Google-only
|
|
9661
|
+
* - `workPosition`, `workEmployer`, `workIndustry`: the Meta-only work demographics, whose
|
|
9662
|
+
* ids feed `TargetingSpec.workPositions`/`workEmployers`/`workIndustries`
|
|
9663
|
+
*
|
|
9664
|
+
* Availability of each dimension varies by platform (e.g. behaviours are Meta/TikTok only).
|
|
9533
9665
|
* Work industries are a fixed ~30-entry Meta catalog with no server-side query,
|
|
9534
9666
|
* so `workIndustry` matching, ranking and `limit` happen in Zernio. `language`
|
|
9535
9667
|
* is likewise a fixed, checked-in table of Google's targetable
|
|
9536
9668
|
* `language_constant` rows (id, ISO code, name) matched by name or code, capped
|
|
9537
9669
|
* 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.
|
|
9670
|
+
*
|
|
9671
|
+
* Results are normalized across platforms into a single shape, so the same client code
|
|
9672
|
+
* consumes Meta, TikTok, LinkedIn, X, Pinterest, and Google results.
|
|
9541
9673
|
*
|
|
9542
9674
|
* TikTok geo searches return every matching level in one list (`type` is
|
|
9543
|
-
* `country`, `region`, `city`, `district`, or `metro` for DMA areas)
|
|
9675
|
+
* `country`, `region`, `city`, `district`, or `metro` for DMA areas), and
|
|
9544
9676
|
* `geoType` is not applied. Results are scoped to the advertiser's targetable
|
|
9545
9677
|
* markets, and every id is usable in `regions`/`cities`/`metros` keys on
|
|
9546
9678
|
* `POST /v1/ads/create`.
|
|
@@ -9568,15 +9700,19 @@ export const searchAdInterests = <ThrowOnError extends boolean = false>(options:
|
|
|
9568
9700
|
* `limit` cutoff all happen in Zernio; the catalog is independent of any ad account
|
|
9569
9701
|
* and results never carry `audienceSize`. Names come back localized to the connected
|
|
9570
9702
|
* 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
|
-
* `
|
|
9703
|
+
* whatever language that account returns.
|
|
9704
|
+
*
|
|
9705
|
+
* `geoType` routes to a different Pinterest catalog:
|
|
9706
|
+
*
|
|
9707
|
+
* - `country` and `metro_area` read the locations catalog (`type` is `country` or `metro`)
|
|
9708
|
+
* - `region` reads the regions catalog (`type` is `region`, its id a `regions[].key` on
|
|
9709
|
+
* `POST /v1/ads/create`)
|
|
9710
|
+
* - `all` and the default `city` merge both catalogs with honest per-entry `type`s, since
|
|
9711
|
+
* Pinterest has no city-level catalog and `city` is an alias for `all`, not a literal
|
|
9712
|
+
* city search
|
|
9713
|
+
* - `zip`, `subcity`, `neighborhood`, `place` and `geo_market` return a 400: Pinterest
|
|
9714
|
+
* exposes no postal-code catalog, pass postal codes directly as
|
|
9715
|
+
* `targeting.zips: [{ key }]` on `POST /v1/ads/create`
|
|
9580
9716
|
*
|
|
9581
9717
|
* For geo queries, `q` should contain only the locality name (e.g. `"Amsterdam"`,
|
|
9582
9718
|
* not `"Amsterdam, NL"`). Use `countryCode` to disambiguate.
|
|
@@ -9682,7 +9818,7 @@ export const getLinkedInSupplyForecast = <ThrowOnError extends boolean = false>(
|
|
|
9682
9818
|
|
|
9683
9819
|
/**
|
|
9684
9820
|
* 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
|
|
9821
|
+
* 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
9822
|
*/
|
|
9687
9823
|
export const listAdCatalogs = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogsData, ThrowOnError>) => {
|
|
9688
9824
|
return (options?.client ?? client).get<ListAdCatalogsResponse, ListAdCatalogsError, ThrowOnError>({
|
|
@@ -9693,7 +9829,7 @@ export const listAdCatalogs = <ThrowOnError extends boolean = false>(options: Op
|
|
|
9693
9829
|
|
|
9694
9830
|
/**
|
|
9695
9831
|
* List a catalog's product sets
|
|
9696
|
-
* Lists a Meta product catalog's product sets
|
|
9832
|
+
* 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
9833
|
*/
|
|
9698
9834
|
export const listAdCatalogProductSets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogProductSetsData, ThrowOnError>) => {
|
|
9699
9835
|
return (options?.client ?? client).get<ListAdCatalogProductSetsResponse, ListAdCatalogProductSetsError, ThrowOnError>({
|
|
@@ -9704,7 +9840,7 @@ export const listAdCatalogProductSets = <ThrowOnError extends boolean = false>(o
|
|
|
9704
9840
|
|
|
9705
9841
|
/**
|
|
9706
9842
|
* List custom audiences
|
|
9707
|
-
* Returns custom audiences for the given ad account. Supports Meta, Google, TikTok, Pinterest, LinkedIn, and X
|
|
9843
|
+
* Returns custom audiences for the given ad account. Supports Meta, Google, TikTok, Pinterest, LinkedIn, and X.
|
|
9708
9844
|
*/
|
|
9709
9845
|
export const listAdAudiences = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdAudiencesData, ThrowOnError>) => {
|
|
9710
9846
|
return (options?.client ?? client).get<ListAdAudiencesResponse, ListAdAudiencesError, ThrowOnError>({
|
|
@@ -9802,18 +9938,23 @@ export const addUsersToAdAudience = <ThrowOnError extends boolean = false>(optio
|
|
|
9802
9938
|
* Upload the company rows of a LinkedIn `company_list` audience (account-based marketing).
|
|
9803
9939
|
* LinkedIn-only, every other platform returns 422.
|
|
9804
9940
|
*
|
|
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.
|
|
9941
|
+
* A LinkedIn audience segment holds exactly one uploaded list, so the list you send here
|
|
9942
|
+
* REPLACES the segment's list instead of being appended to it: always send the full set of
|
|
9943
|
+
* companies. LinkedIn returns only the identifier of the uploaded file, never its rows, so the
|
|
9944
|
+
* merge cannot be done for you, keep the source list on your side.
|
|
9945
|
+
*
|
|
9946
|
+
* How the matching behaves:
|
|
9814
9947
|
*
|
|
9815
|
-
*
|
|
9816
|
-
*
|
|
9948
|
+
* - Rows are plain text (not hashed), matched against LinkedIn's own company graph.
|
|
9949
|
+
* - Matching is asynchronous: LinkedIn takes up to 48h for a new audience and up to 24h for a
|
|
9950
|
+
* later update, and the audience stays `processing` meanwhile.
|
|
9951
|
+
* - LinkedIn does not document how quickly companies dropped from the list stop being targeted,
|
|
9952
|
+
* so treat removals as eventual rather than immediate.
|
|
9953
|
+
* - LinkedIn recommends at least 1,000 companies for a usable match rate, and caps a list at
|
|
9954
|
+
* 300,000.
|
|
9955
|
+
*
|
|
9956
|
+
* The initial list is sent with `companies` on `POST /v1/ads/audiences`; this endpoint is for
|
|
9957
|
+
* every change after that.
|
|
9817
9958
|
*
|
|
9818
9959
|
*/
|
|
9819
9960
|
export const replaceAdAudienceCompanies = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceAdAudienceCompaniesData, ThrowOnError>) => {
|
|
@@ -9847,7 +9988,7 @@ export const getConversionsQuality = <ThrowOnError extends boolean = false>(opti
|
|
|
9847
9988
|
* - Meta (`metaads`) via Graph API
|
|
9848
9989
|
* - Google Ads (`googleads`) via Data Manager API `ingestEvents`
|
|
9849
9990
|
* - LinkedIn (`linkedinads`) via `/rest/conversionEvents`
|
|
9850
|
-
* - TikTok (`tiktokads`) via the Offline Events API `/offline/batch/`
|
|
9991
|
+
* - TikTok (`tiktokads`) via the Offline Events API `/offline/batch/` (OFFLINE conversions only)
|
|
9851
9992
|
* - OpenAI Ads (`openaiads`) via its Conversions API (a separate host, `bzr.openai.com`)
|
|
9852
9993
|
*
|
|
9853
9994
|
* `destinationId` semantics differ per platform:
|
|
@@ -9862,7 +10003,7 @@ export const getConversionsQuality = <ThrowOnError extends boolean = false>(opti
|
|
|
9862
10003
|
* events. Each event must carry an email or phone (TikTok requires at least one). The connected
|
|
9863
10004
|
* TikTok ads account must have granted the Offline Events permission; older grants must reconnect.
|
|
9864
10005
|
*
|
|
9865
|
-
* OpenAI Ads notes: requires a tracking tag (pixel) to already exist on the account
|
|
10006
|
+
* OpenAI Ads notes: requires a tracking tag (pixel) to already exist on the account. Returns 422
|
|
9866
10007
|
* with code `TRACKING_TAG_REQUIRED` if `POST /v1/accounts/{accountId}/tracking-tags` hasn't been
|
|
9867
10008
|
* called yet.
|
|
9868
10009
|
*
|
|
@@ -9902,7 +10043,7 @@ export const sendConversions = <ThrowOnError extends boolean = false>(options: O
|
|
|
9902
10043
|
|
|
9903
10044
|
/**
|
|
9904
10045
|
* Adjust uploaded conversions
|
|
9905
|
-
* Adjust conversions that were previously uploaded via `POST /v1/ads/conversions
|
|
10046
|
+
* Adjust conversions that were previously uploaded via `POST /v1/ads/conversions`:
|
|
9906
10047
|
* retract them, restate their value, or enhance them with first-party data. Requires
|
|
9907
10048
|
* the Ads add-on.
|
|
9908
10049
|
*
|
|
@@ -9913,14 +10054,14 @@ export const sendConversions = <ThrowOnError extends boolean = false>(options: O
|
|
|
9913
10054
|
*
|
|
9914
10055
|
* Adjustment types:
|
|
9915
10056
|
*
|
|
9916
|
-
* - `RETRACTION
|
|
9917
|
-
* - `RESTATEMENT
|
|
9918
|
-
* - `ENHANCEMENT
|
|
10057
|
+
* - `RETRACTION`: remove the conversion entirely (refund, chargeback, cancelled order, churn).
|
|
10058
|
+
* - `RESTATEMENT`: change the conversion's value (upgrade / downgrade / partial refund). Send the corrected **total** value in `restatementValue` (not a delta).
|
|
10059
|
+
* - `ENHANCEMENT`: attach first-party identifiers (hashed email / phone) to an existing conversion (enhanced conversions applied after the fact).
|
|
9919
10060
|
*
|
|
9920
10061
|
* Identifying the original conversion (per adjustment):
|
|
9921
10062
|
*
|
|
9922
|
-
* - `orderId
|
|
9923
|
-
* - or `gclid` + `conversionTime
|
|
10063
|
+
* - `orderId`: the transaction ID you sent as `eventId` on the original conversion. Recommended, and **required** for `ENHANCEMENT`.
|
|
10064
|
+
* - or `gclid` + `conversionTime`: the click ID and the original conversion's time (unix seconds). Not available for `ENHANCEMENT`.
|
|
9924
10065
|
*
|
|
9925
10066
|
* `destinationId` is the conversion action resource name, e.g.
|
|
9926
10067
|
* `customers/1234567890/conversionActions/987654321` (same value you send to
|
|
@@ -9987,7 +10128,7 @@ export const createConversionAction = <ThrowOnError extends boolean = false>(opt
|
|
|
9987
10128
|
* posting to `POST /v1/ads/conversions`.
|
|
9988
10129
|
*
|
|
9989
10130
|
* For Google and LinkedIn, each destination's `type` reflects the
|
|
9990
|
-
* conversion type (PURCHASE, LEAD, SIGN_UP, etc.)
|
|
10131
|
+
* conversion type (PURCHASE, LEAD, SIGN_UP, etc.), and the event type is
|
|
9991
10132
|
* locked to the destination. For Meta and OpenAI Ads, `type` is absent:
|
|
9992
10133
|
* pixels accept any event name per request.
|
|
9993
10134
|
*
|
|
@@ -10069,7 +10210,7 @@ export const getConversionDestination = <ThrowOnError extends boolean = false>(o
|
|
|
10069
10210
|
* Partial-update a conversion rule. LinkedIn-only today. Whitelisted
|
|
10070
10211
|
* fields: `name`, `enabled`, attribution windows, `valueType`, `value`,
|
|
10071
10212
|
* `attributionType`. The rule's `type` and parent ad account are
|
|
10072
|
-
* intentionally not exposed for update
|
|
10213
|
+
* intentionally not exposed for update. Recreate the rule if those
|
|
10073
10214
|
* need to change.
|
|
10074
10215
|
*
|
|
10075
10216
|
*/
|
|
@@ -10083,7 +10224,7 @@ export const updateConversionDestination = <ThrowOnError extends boolean = false
|
|
|
10083
10224
|
/**
|
|
10084
10225
|
* Delete a conversion destination
|
|
10085
10226
|
* LinkedIn-only today. LinkedIn does not expose hard-delete on conversion
|
|
10086
|
-
* rules
|
|
10227
|
+
* rules; what their UI calls "delete" is the same `enabled: false` flip
|
|
10087
10228
|
* we apply here. The rule remains fetchable via GET with
|
|
10088
10229
|
* `status: 'inactive'`; the unified discovery endpoint hides it by
|
|
10089
10230
|
* default.
|
|
@@ -10102,7 +10243,7 @@ export const deleteConversionDestination = <ThrowOnError extends boolean = false
|
|
|
10102
10243
|
/**
|
|
10103
10244
|
* List associated campaigns
|
|
10104
10245
|
* LinkedIn-only today. Returns the campaigns currently associated with
|
|
10105
|
-
* this conversion rule.
|
|
10246
|
+
* this conversion rule. Auto-association on rule creation
|
|
10106
10247
|
* runs once at create time; campaigns created after the rule still need
|
|
10107
10248
|
* explicit association.
|
|
10108
10249
|
*
|
|
@@ -10275,7 +10416,7 @@ export const createCallAd = <ThrowOnError extends boolean = false>(options: Opti
|
|
|
10275
10416
|
*
|
|
10276
10417
|
* - **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
10418
|
*
|
|
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
|
|
10419
|
+
* **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
10420
|
*
|
|
10280
10421
|
* 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
10422
|
*/
|
|
@@ -10319,14 +10460,620 @@ export const createCustomConversion = <ThrowOnError extends boolean = false>(opt
|
|
|
10319
10460
|
});
|
|
10320
10461
|
};
|
|
10321
10462
|
|
|
10463
|
+
/**
|
|
10464
|
+
* Get agent setup status
|
|
10465
|
+
* One read that says where the merchant is: whether the number is eligible, whether the
|
|
10466
|
+
* Meta Business Agent terms are accepted, whether an agent exists, whether it is on, and its
|
|
10467
|
+
* settings. `manualSteps` lists what Zernio can verify is still pending (accepting the terms
|
|
10468
|
+
* in WhatsApp Manager); `unverifiedSteps` lists what Meta exposes no state for (the payment
|
|
10469
|
+
* method in Billing Hub). Never fails for those pre-setup states; it reports them as flags.
|
|
10470
|
+
*
|
|
10471
|
+
*/
|
|
10472
|
+
export const getBusinessAgentStatus = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentStatusData, ThrowOnError>) => {
|
|
10473
|
+
return (options?.client ?? client).get<GetBusinessAgentStatusResponse, GetBusinessAgentStatusError, ThrowOnError>({
|
|
10474
|
+
...options,
|
|
10475
|
+
url: '/v1/accounts/{accountId}/business-agent'
|
|
10476
|
+
});
|
|
10477
|
+
};
|
|
10478
|
+
|
|
10479
|
+
/**
|
|
10480
|
+
* Create the agent
|
|
10481
|
+
* Creates the Meta Business Agent on the number and schedules Meta's data preparation.
|
|
10482
|
+
* Requires the terms to be accepted; eligibility is checked first and an ineligible
|
|
10483
|
+
* number answers 403 `business_agent_not_eligible`. Not idempotent: call it once, then
|
|
10484
|
+
* configure knowledge and skills, then enable it through the settings. Configuration
|
|
10485
|
+
* calls made in the first minute can still answer `business_agent_not_found` while Meta
|
|
10486
|
+
* prepares the workspace.
|
|
10487
|
+
*
|
|
10488
|
+
*/
|
|
10489
|
+
export const onboardBusinessAgent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<OnboardBusinessAgentData, ThrowOnError>) => {
|
|
10490
|
+
return (options?.client ?? client).post<OnboardBusinessAgentResponse, OnboardBusinessAgentError, ThrowOnError>({
|
|
10491
|
+
...options,
|
|
10492
|
+
url: '/v1/accounts/{accountId}/business-agent/onboard'
|
|
10493
|
+
});
|
|
10494
|
+
};
|
|
10495
|
+
|
|
10496
|
+
/**
|
|
10497
|
+
* List agent settings
|
|
10498
|
+
* Settings of every agent configured on the number (normally one). Pass `agentId` to read one.
|
|
10499
|
+
*/
|
|
10500
|
+
export const listBusinessAgentSettings = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentSettingsData, ThrowOnError>) => {
|
|
10501
|
+
return (options?.client ?? client).get<ListBusinessAgentSettingsResponse, ListBusinessAgentSettingsError, ThrowOnError>({
|
|
10502
|
+
...options,
|
|
10503
|
+
url: '/v1/accounts/{accountId}/business-agent/settings'
|
|
10504
|
+
});
|
|
10505
|
+
};
|
|
10506
|
+
|
|
10507
|
+
/**
|
|
10508
|
+
* Update agent settings
|
|
10509
|
+
* Partial update: fields you omit keep their value. `rollout.enabled: true` turns the agent
|
|
10510
|
+
* on for new conversations; `false` stops it on every thread. Turning it on for `EVERYONE`
|
|
10511
|
+
* needs a payment method on the Business Agent billable account (Meta accepts the call but
|
|
10512
|
+
* delivers nothing without one); `ALLOWLISTED_ONLY` does not, which is how you test with a
|
|
10513
|
+
* few numbers before billing. `never_say_phrases` replaces the whole list.
|
|
10514
|
+
*
|
|
10515
|
+
*/
|
|
10516
|
+
export const updateBusinessAgentSettings = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentSettingsData, ThrowOnError>) => {
|
|
10517
|
+
return (options?.client ?? client).patch<UpdateBusinessAgentSettingsResponse, UpdateBusinessAgentSettingsError, ThrowOnError>({
|
|
10518
|
+
...options,
|
|
10519
|
+
url: '/v1/accounts/{accountId}/business-agent/settings'
|
|
10520
|
+
});
|
|
10521
|
+
};
|
|
10522
|
+
|
|
10523
|
+
/**
|
|
10524
|
+
* List allowlisted consumers
|
|
10525
|
+
* Consumers the agent answers while `ai_audience` is ALLOWLISTED_ONLY.
|
|
10526
|
+
*/
|
|
10527
|
+
export const listBusinessAgentAllowlist = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentAllowlistData, ThrowOnError>) => {
|
|
10528
|
+
return (options?.client ?? client).get<ListBusinessAgentAllowlistResponse, ListBusinessAgentAllowlistError, ThrowOnError>({
|
|
10529
|
+
...options,
|
|
10530
|
+
url: '/v1/accounts/{accountId}/business-agent/allowlist'
|
|
10531
|
+
});
|
|
10532
|
+
};
|
|
10533
|
+
|
|
10534
|
+
/**
|
|
10535
|
+
* Allowlist a consumer
|
|
10536
|
+
* One E.164 number per call. Not idempotent.
|
|
10537
|
+
*/
|
|
10538
|
+
export const addBusinessAgentAllowlistEntry = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AddBusinessAgentAllowlistEntryData, ThrowOnError>) => {
|
|
10539
|
+
return (options?.client ?? client).post<AddBusinessAgentAllowlistEntryResponse, AddBusinessAgentAllowlistEntryError, ThrowOnError>({
|
|
10540
|
+
...options,
|
|
10541
|
+
url: '/v1/accounts/{accountId}/business-agent/allowlist'
|
|
10542
|
+
});
|
|
10543
|
+
};
|
|
10544
|
+
|
|
10545
|
+
/**
|
|
10546
|
+
* Remove an allowlisted consumer
|
|
10547
|
+
*/
|
|
10548
|
+
export const removeBusinessAgentAllowlistEntry = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveBusinessAgentAllowlistEntryData, ThrowOnError>) => {
|
|
10549
|
+
return (options?.client ?? client).delete<RemoveBusinessAgentAllowlistEntryResponse, RemoveBusinessAgentAllowlistEntryError, ThrowOnError>({
|
|
10550
|
+
...options,
|
|
10551
|
+
url: '/v1/accounts/{accountId}/business-agent/allowlist/{entryId}'
|
|
10552
|
+
});
|
|
10553
|
+
};
|
|
10554
|
+
|
|
10555
|
+
/**
|
|
10556
|
+
* Get business information
|
|
10557
|
+
* Payment methods, return policy, how to buy, shipping, description and contact details the agent answers from. Empty values until configured.
|
|
10558
|
+
*/
|
|
10559
|
+
export const getBusinessAgentBusinessInformation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentBusinessInformationData, ThrowOnError>) => {
|
|
10560
|
+
return (options?.client ?? client).get<GetBusinessAgentBusinessInformationResponse, GetBusinessAgentBusinessInformationError, ThrowOnError>({
|
|
10561
|
+
...options,
|
|
10562
|
+
url: '/v1/accounts/{accountId}/business-agent/business-information'
|
|
10563
|
+
});
|
|
10564
|
+
};
|
|
10565
|
+
|
|
10566
|
+
/**
|
|
10567
|
+
* Replace business information
|
|
10568
|
+
* Full replacement: every field you send overwrites the stored value; fields you omit are cleared.
|
|
10569
|
+
*/
|
|
10570
|
+
export const replaceBusinessAgentBusinessInformation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceBusinessAgentBusinessInformationData, ThrowOnError>) => {
|
|
10571
|
+
return (options?.client ?? client).put<ReplaceBusinessAgentBusinessInformationResponse, ReplaceBusinessAgentBusinessInformationError, ThrowOnError>({
|
|
10572
|
+
...options,
|
|
10573
|
+
url: '/v1/accounts/{accountId}/business-agent/business-information'
|
|
10574
|
+
});
|
|
10575
|
+
};
|
|
10576
|
+
|
|
10577
|
+
/**
|
|
10578
|
+
* Reset business information
|
|
10579
|
+
*/
|
|
10580
|
+
export const resetBusinessAgentBusinessInformation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ResetBusinessAgentBusinessInformationData, ThrowOnError>) => {
|
|
10581
|
+
return (options?.client ?? client).delete<ResetBusinessAgentBusinessInformationResponse, ResetBusinessAgentBusinessInformationError, ThrowOnError>({
|
|
10582
|
+
...options,
|
|
10583
|
+
url: '/v1/accounts/{accountId}/business-agent/business-information'
|
|
10584
|
+
});
|
|
10585
|
+
};
|
|
10586
|
+
|
|
10587
|
+
/**
|
|
10588
|
+
* List FAQs
|
|
10589
|
+
*/
|
|
10590
|
+
export const listBusinessAgentFaqs = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentFaqsData, ThrowOnError>) => {
|
|
10591
|
+
return (options?.client ?? client).get<ListBusinessAgentFaqsResponse, ListBusinessAgentFaqsError, ThrowOnError>({
|
|
10592
|
+
...options,
|
|
10593
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs'
|
|
10594
|
+
});
|
|
10595
|
+
};
|
|
10596
|
+
|
|
10597
|
+
/**
|
|
10598
|
+
* Create a FAQ
|
|
10599
|
+
* One specific question per entry; beyond a few hundred entries retrieval quality drops. Not idempotent.
|
|
10600
|
+
*/
|
|
10601
|
+
export const createBusinessAgentFaq = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentFaqData, ThrowOnError>) => {
|
|
10602
|
+
return (options?.client ?? client).post<CreateBusinessAgentFaqResponse, CreateBusinessAgentFaqError, ThrowOnError>({
|
|
10603
|
+
...options,
|
|
10604
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs'
|
|
10605
|
+
});
|
|
10606
|
+
};
|
|
10607
|
+
|
|
10608
|
+
/**
|
|
10609
|
+
* Get a FAQ
|
|
10610
|
+
*/
|
|
10611
|
+
export const getBusinessAgentFaq = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentFaqData, ThrowOnError>) => {
|
|
10612
|
+
return (options?.client ?? client).get<GetBusinessAgentFaqResponse, GetBusinessAgentFaqError, ThrowOnError>({
|
|
10613
|
+
...options,
|
|
10614
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs/{faqId}'
|
|
10615
|
+
});
|
|
10616
|
+
};
|
|
10617
|
+
|
|
10618
|
+
/**
|
|
10619
|
+
* Update a FAQ
|
|
10620
|
+
*/
|
|
10621
|
+
export const updateBusinessAgentFaq = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentFaqData, ThrowOnError>) => {
|
|
10622
|
+
return (options?.client ?? client).put<UpdateBusinessAgentFaqResponse, UpdateBusinessAgentFaqError, ThrowOnError>({
|
|
10623
|
+
...options,
|
|
10624
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs/{faqId}'
|
|
10625
|
+
});
|
|
10626
|
+
};
|
|
10627
|
+
|
|
10628
|
+
/**
|
|
10629
|
+
* Delete a FAQ
|
|
10630
|
+
*/
|
|
10631
|
+
export const deleteBusinessAgentFaq = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentFaqData, ThrowOnError>) => {
|
|
10632
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentFaqResponse, DeleteBusinessAgentFaqError, ThrowOnError>({
|
|
10633
|
+
...options,
|
|
10634
|
+
url: '/v1/accounts/{accountId}/business-agent/faqs/{faqId}'
|
|
10635
|
+
});
|
|
10636
|
+
};
|
|
10637
|
+
|
|
10638
|
+
/**
|
|
10639
|
+
* List crawled websites
|
|
10640
|
+
*/
|
|
10641
|
+
export const listBusinessAgentWebsites = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentWebsitesData, ThrowOnError>) => {
|
|
10642
|
+
return (options?.client ?? client).get<ListBusinessAgentWebsitesResponse, ListBusinessAgentWebsitesError, ThrowOnError>({
|
|
10643
|
+
...options,
|
|
10644
|
+
url: '/v1/accounts/{accountId}/business-agent/websites'
|
|
10645
|
+
});
|
|
10646
|
+
};
|
|
10647
|
+
|
|
10648
|
+
/**
|
|
10649
|
+
* Add a website to crawl
|
|
10650
|
+
* Meta crawls the site into the agent knowledge and recrawls it periodically; check `crawl_status` and `crawl_error` on read. Not idempotent.
|
|
10651
|
+
*/
|
|
10652
|
+
export const addBusinessAgentWebsite = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AddBusinessAgentWebsiteData, ThrowOnError>) => {
|
|
10653
|
+
return (options?.client ?? client).post<AddBusinessAgentWebsiteResponse, AddBusinessAgentWebsiteError, ThrowOnError>({
|
|
10654
|
+
...options,
|
|
10655
|
+
url: '/v1/accounts/{accountId}/business-agent/websites'
|
|
10656
|
+
});
|
|
10657
|
+
};
|
|
10658
|
+
|
|
10659
|
+
/**
|
|
10660
|
+
* Get a crawled website
|
|
10661
|
+
*/
|
|
10662
|
+
export const getBusinessAgentWebsite = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentWebsiteData, ThrowOnError>) => {
|
|
10663
|
+
return (options?.client ?? client).get<GetBusinessAgentWebsiteResponse, GetBusinessAgentWebsiteError, ThrowOnError>({
|
|
10664
|
+
...options,
|
|
10665
|
+
url: '/v1/accounts/{accountId}/business-agent/websites/{websiteId}'
|
|
10666
|
+
});
|
|
10667
|
+
};
|
|
10668
|
+
|
|
10669
|
+
/**
|
|
10670
|
+
* Update a crawled website
|
|
10671
|
+
*/
|
|
10672
|
+
export const updateBusinessAgentWebsite = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentWebsiteData, ThrowOnError>) => {
|
|
10673
|
+
return (options?.client ?? client).put<UpdateBusinessAgentWebsiteResponse, UpdateBusinessAgentWebsiteError, ThrowOnError>({
|
|
10674
|
+
...options,
|
|
10675
|
+
url: '/v1/accounts/{accountId}/business-agent/websites/{websiteId}'
|
|
10676
|
+
});
|
|
10677
|
+
};
|
|
10678
|
+
|
|
10679
|
+
/**
|
|
10680
|
+
* Remove a crawled website
|
|
10681
|
+
*/
|
|
10682
|
+
export const deleteBusinessAgentWebsite = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentWebsiteData, ThrowOnError>) => {
|
|
10683
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentWebsiteResponse, DeleteBusinessAgentWebsiteError, ThrowOnError>({
|
|
10684
|
+
...options,
|
|
10685
|
+
url: '/v1/accounts/{accountId}/business-agent/websites/{websiteId}'
|
|
10686
|
+
});
|
|
10687
|
+
};
|
|
10688
|
+
|
|
10689
|
+
/**
|
|
10690
|
+
* List knowledge files
|
|
10691
|
+
*/
|
|
10692
|
+
export const listBusinessAgentFiles = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentFilesData, ThrowOnError>) => {
|
|
10693
|
+
return (options?.client ?? client).get<ListBusinessAgentFilesResponse, ListBusinessAgentFilesError, ThrowOnError>({
|
|
10694
|
+
...options,
|
|
10695
|
+
url: '/v1/accounts/{accountId}/business-agent/files'
|
|
10696
|
+
});
|
|
10697
|
+
};
|
|
10698
|
+
|
|
10699
|
+
/**
|
|
10700
|
+
* Upload a knowledge file
|
|
10701
|
+
* Accepted types: pdf, doc, docx, png, jpg, jpeg, plus csv and xlsx when Meta enabled
|
|
10702
|
+
* extraction on the asset. Meta's limit is 100 MB. Two ways to send the file:
|
|
10703
|
+
* - JSON `{ url, fileName }`: Zernio downloads the file (public https URL, no redirects,
|
|
10704
|
+
* capped at 100 MB) and forwards it. Use this for anything above a few megabytes.
|
|
10705
|
+
* - multipart form-data with a `file` part (and an optional `fileName`): bounded by the
|
|
10706
|
+
* request body limit of about 4.5 MB; larger uploads must use the `url` form.
|
|
10707
|
+
* Not idempotent.
|
|
10708
|
+
*
|
|
10709
|
+
*/
|
|
10710
|
+
export const uploadBusinessAgentFile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UploadBusinessAgentFileData, ThrowOnError>) => {
|
|
10711
|
+
return (options?.client ?? client).post<UploadBusinessAgentFileResponse, UploadBusinessAgentFileError, ThrowOnError>({
|
|
10712
|
+
...options,
|
|
10713
|
+
url: '/v1/accounts/{accountId}/business-agent/files'
|
|
10714
|
+
});
|
|
10715
|
+
};
|
|
10716
|
+
|
|
10717
|
+
/**
|
|
10718
|
+
* Get a knowledge file
|
|
10719
|
+
*/
|
|
10720
|
+
export const getBusinessAgentFile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentFileData, ThrowOnError>) => {
|
|
10721
|
+
return (options?.client ?? client).get<GetBusinessAgentFileResponse, GetBusinessAgentFileError, ThrowOnError>({
|
|
10722
|
+
...options,
|
|
10723
|
+
url: '/v1/accounts/{accountId}/business-agent/files/{fileId}'
|
|
10724
|
+
});
|
|
10725
|
+
};
|
|
10726
|
+
|
|
10727
|
+
/**
|
|
10728
|
+
* Delete a knowledge file
|
|
10729
|
+
*/
|
|
10730
|
+
export const deleteBusinessAgentFile = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentFileData, ThrowOnError>) => {
|
|
10731
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentFileResponse, DeleteBusinessAgentFileError, ThrowOnError>({
|
|
10732
|
+
...options,
|
|
10733
|
+
url: '/v1/accounts/{accountId}/business-agent/files/{fileId}'
|
|
10734
|
+
});
|
|
10735
|
+
};
|
|
10736
|
+
|
|
10737
|
+
/**
|
|
10738
|
+
* List skills
|
|
10739
|
+
*/
|
|
10740
|
+
export const listBusinessAgentSkills = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentSkillsData, ThrowOnError>) => {
|
|
10741
|
+
return (options?.client ?? client).get<ListBusinessAgentSkillsResponse, ListBusinessAgentSkillsError, ThrowOnError>({
|
|
10742
|
+
...options,
|
|
10743
|
+
url: '/v1/accounts/{accountId}/business-agent/skills'
|
|
10744
|
+
});
|
|
10745
|
+
};
|
|
10746
|
+
|
|
10747
|
+
/**
|
|
10748
|
+
* Create a skill
|
|
10749
|
+
* Behavioral instructions in the brand voice. Reads back `pending_review` until Meta content review passes it. Not idempotent.
|
|
10750
|
+
*/
|
|
10751
|
+
export const createBusinessAgentSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentSkillData, ThrowOnError>) => {
|
|
10752
|
+
return (options?.client ?? client).post<CreateBusinessAgentSkillResponse, CreateBusinessAgentSkillError, ThrowOnError>({
|
|
10753
|
+
...options,
|
|
10754
|
+
url: '/v1/accounts/{accountId}/business-agent/skills'
|
|
10755
|
+
});
|
|
10756
|
+
};
|
|
10757
|
+
|
|
10758
|
+
/**
|
|
10759
|
+
* Get a skill
|
|
10760
|
+
*/
|
|
10761
|
+
export const getBusinessAgentSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentSkillData, ThrowOnError>) => {
|
|
10762
|
+
return (options?.client ?? client).get<GetBusinessAgentSkillResponse, GetBusinessAgentSkillError, ThrowOnError>({
|
|
10763
|
+
...options,
|
|
10764
|
+
url: '/v1/accounts/{accountId}/business-agent/skills/{skillId}'
|
|
10765
|
+
});
|
|
10766
|
+
};
|
|
10767
|
+
|
|
10768
|
+
/**
|
|
10769
|
+
* Update a skill
|
|
10770
|
+
*/
|
|
10771
|
+
export const updateBusinessAgentSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentSkillData, ThrowOnError>) => {
|
|
10772
|
+
return (options?.client ?? client).put<UpdateBusinessAgentSkillResponse, UpdateBusinessAgentSkillError, ThrowOnError>({
|
|
10773
|
+
...options,
|
|
10774
|
+
url: '/v1/accounts/{accountId}/business-agent/skills/{skillId}'
|
|
10775
|
+
});
|
|
10776
|
+
};
|
|
10777
|
+
|
|
10778
|
+
/**
|
|
10779
|
+
* Delete a skill
|
|
10780
|
+
*/
|
|
10781
|
+
export const deleteBusinessAgentSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentSkillData, ThrowOnError>) => {
|
|
10782
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentSkillResponse, DeleteBusinessAgentSkillError, ThrowOnError>({
|
|
10783
|
+
...options,
|
|
10784
|
+
url: '/v1/accounts/{accountId}/business-agent/skills/{skillId}'
|
|
10785
|
+
});
|
|
10786
|
+
};
|
|
10787
|
+
|
|
10788
|
+
/**
|
|
10789
|
+
* List UI skills
|
|
10790
|
+
* Cursor paged; follow `paging.cursors.after` until `paging.next` is absent.
|
|
10791
|
+
*/
|
|
10792
|
+
export const listBusinessAgentUiSkills = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentUiSkillsData, ThrowOnError>) => {
|
|
10793
|
+
return (options?.client ?? client).get<ListBusinessAgentUiSkillsResponse, ListBusinessAgentUiSkillsError, ThrowOnError>({
|
|
10794
|
+
...options,
|
|
10795
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills'
|
|
10796
|
+
});
|
|
10797
|
+
};
|
|
10798
|
+
|
|
10799
|
+
/**
|
|
10800
|
+
* Create a UI skill
|
|
10801
|
+
* 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.
|
|
10802
|
+
*/
|
|
10803
|
+
export const createBusinessAgentUiSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentUiSkillData, ThrowOnError>) => {
|
|
10804
|
+
return (options?.client ?? client).post<CreateBusinessAgentUiSkillResponse, CreateBusinessAgentUiSkillError, ThrowOnError>({
|
|
10805
|
+
...options,
|
|
10806
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills'
|
|
10807
|
+
});
|
|
10808
|
+
};
|
|
10809
|
+
|
|
10810
|
+
/**
|
|
10811
|
+
* Get a UI skill
|
|
10812
|
+
*/
|
|
10813
|
+
export const getBusinessAgentUiSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentUiSkillData, ThrowOnError>) => {
|
|
10814
|
+
return (options?.client ?? client).get<GetBusinessAgentUiSkillResponse, GetBusinessAgentUiSkillError, ThrowOnError>({
|
|
10815
|
+
...options,
|
|
10816
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills/{uiSkillId}'
|
|
10817
|
+
});
|
|
10818
|
+
};
|
|
10819
|
+
|
|
10820
|
+
/**
|
|
10821
|
+
* Update a UI skill
|
|
10822
|
+
*/
|
|
10823
|
+
export const updateBusinessAgentUiSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentUiSkillData, ThrowOnError>) => {
|
|
10824
|
+
return (options?.client ?? client).put<UpdateBusinessAgentUiSkillResponse, UpdateBusinessAgentUiSkillError, ThrowOnError>({
|
|
10825
|
+
...options,
|
|
10826
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills/{uiSkillId}'
|
|
10827
|
+
});
|
|
10828
|
+
};
|
|
10829
|
+
|
|
10830
|
+
/**
|
|
10831
|
+
* Delete a UI skill
|
|
10832
|
+
*/
|
|
10833
|
+
export const deleteBusinessAgentUiSkill = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentUiSkillData, ThrowOnError>) => {
|
|
10834
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentUiSkillResponse, DeleteBusinessAgentUiSkillError, ThrowOnError>({
|
|
10835
|
+
...options,
|
|
10836
|
+
url: '/v1/accounts/{accountId}/business-agent/ui-skills/{uiSkillId}'
|
|
10837
|
+
});
|
|
10838
|
+
};
|
|
10839
|
+
|
|
10840
|
+
/**
|
|
10841
|
+
* List connectors
|
|
10842
|
+
* External APIs the agent may call. `connection_status` says whether Meta can currently reach each one.
|
|
10843
|
+
*/
|
|
10844
|
+
export const listBusinessAgentConnectors = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentConnectorsData, ThrowOnError>) => {
|
|
10845
|
+
return (options?.client ?? client).get<ListBusinessAgentConnectorsResponse, ListBusinessAgentConnectorsError, ThrowOnError>({
|
|
10846
|
+
...options,
|
|
10847
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors'
|
|
10848
|
+
});
|
|
10849
|
+
};
|
|
10850
|
+
|
|
10851
|
+
/**
|
|
10852
|
+
* Create a connector
|
|
10853
|
+
* Base URL plus how to authenticate (OAuth client credentials, API key or none). Names are unique per number. Not idempotent.
|
|
10854
|
+
*/
|
|
10855
|
+
export const createBusinessAgentConnector = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentConnectorData, ThrowOnError>) => {
|
|
10856
|
+
return (options?.client ?? client).post<CreateBusinessAgentConnectorResponse, CreateBusinessAgentConnectorError, ThrowOnError>({
|
|
10857
|
+
...options,
|
|
10858
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors'
|
|
10859
|
+
});
|
|
10860
|
+
};
|
|
10861
|
+
|
|
10862
|
+
/**
|
|
10863
|
+
* Get a connector
|
|
10864
|
+
*/
|
|
10865
|
+
export const getBusinessAgentConnector = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentConnectorData, ThrowOnError>) => {
|
|
10866
|
+
return (options?.client ?? client).get<GetBusinessAgentConnectorResponse, GetBusinessAgentConnectorError, ThrowOnError>({
|
|
10867
|
+
...options,
|
|
10868
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}'
|
|
10869
|
+
});
|
|
10870
|
+
};
|
|
10871
|
+
|
|
10872
|
+
/**
|
|
10873
|
+
* Update a connector
|
|
10874
|
+
*/
|
|
10875
|
+
export const updateBusinessAgentConnector = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentConnectorData, ThrowOnError>) => {
|
|
10876
|
+
return (options?.client ?? client).put<UpdateBusinessAgentConnectorResponse, UpdateBusinessAgentConnectorError, ThrowOnError>({
|
|
10877
|
+
...options,
|
|
10878
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}'
|
|
10879
|
+
});
|
|
10880
|
+
};
|
|
10881
|
+
|
|
10882
|
+
/**
|
|
10883
|
+
* Delete a connector
|
|
10884
|
+
*/
|
|
10885
|
+
export const deleteBusinessAgentConnector = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentConnectorData, ThrowOnError>) => {
|
|
10886
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentConnectorResponse, DeleteBusinessAgentConnectorError, ThrowOnError>({
|
|
10887
|
+
...options,
|
|
10888
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}'
|
|
10889
|
+
});
|
|
10890
|
+
};
|
|
10891
|
+
|
|
10892
|
+
/**
|
|
10893
|
+
* Set connector credentials
|
|
10894
|
+
* Set or rotate the connector's credentials in place: `kind: api_key`, `kind: oauth`
|
|
10895
|
+
* (client credentials) or `kind: certificate` (mTLS client certificate). Meta has no call
|
|
10896
|
+
* that removes a credential layer; change the connector's `auth_type` or delete it instead.
|
|
10897
|
+
*
|
|
10898
|
+
*/
|
|
10899
|
+
export const setBusinessAgentConnectorCredentials = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetBusinessAgentConnectorCredentialsData, ThrowOnError>) => {
|
|
10900
|
+
return (options?.client ?? client).post<SetBusinessAgentConnectorCredentialsResponse, SetBusinessAgentConnectorCredentialsError, ThrowOnError>({
|
|
10901
|
+
...options,
|
|
10902
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/credentials'
|
|
10903
|
+
});
|
|
10904
|
+
};
|
|
10905
|
+
|
|
10906
|
+
/**
|
|
10907
|
+
* Refresh MCP connector tools
|
|
10908
|
+
* 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.
|
|
10909
|
+
*/
|
|
10910
|
+
export const refreshBusinessAgentConnectorTools = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RefreshBusinessAgentConnectorToolsData, ThrowOnError>) => {
|
|
10911
|
+
return (options?.client ?? client).post<RefreshBusinessAgentConnectorToolsResponse, RefreshBusinessAgentConnectorToolsError, ThrowOnError>({
|
|
10912
|
+
...options,
|
|
10913
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/refresh-tools'
|
|
10914
|
+
});
|
|
10915
|
+
};
|
|
10916
|
+
|
|
10917
|
+
/**
|
|
10918
|
+
* Get connector failure logs
|
|
10919
|
+
* 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`.
|
|
10920
|
+
*/
|
|
10921
|
+
export const getBusinessAgentConnectorLogs = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentConnectorLogsData, ThrowOnError>) => {
|
|
10922
|
+
return (options?.client ?? client).get<GetBusinessAgentConnectorLogsResponse, GetBusinessAgentConnectorLogsError, ThrowOnError>({
|
|
10923
|
+
...options,
|
|
10924
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/logs'
|
|
10925
|
+
});
|
|
10926
|
+
};
|
|
10927
|
+
|
|
10928
|
+
/**
|
|
10929
|
+
* List connector tools
|
|
10930
|
+
*/
|
|
10931
|
+
export const listBusinessAgentConnectorTools = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBusinessAgentConnectorToolsData, ThrowOnError>) => {
|
|
10932
|
+
return (options?.client ?? client).get<ListBusinessAgentConnectorToolsResponse, ListBusinessAgentConnectorToolsError, ThrowOnError>({
|
|
10933
|
+
...options,
|
|
10934
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools'
|
|
10935
|
+
});
|
|
10936
|
+
};
|
|
10937
|
+
|
|
10938
|
+
/**
|
|
10939
|
+
* Create a connector tool
|
|
10940
|
+
* 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.
|
|
10941
|
+
*/
|
|
10942
|
+
export const createBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10943
|
+
return (options?.client ?? client).post<CreateBusinessAgentConnectorToolResponse, CreateBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10944
|
+
...options,
|
|
10945
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools'
|
|
10946
|
+
});
|
|
10947
|
+
};
|
|
10948
|
+
|
|
10949
|
+
/**
|
|
10950
|
+
* Get a connector tool
|
|
10951
|
+
*/
|
|
10952
|
+
export const getBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10953
|
+
return (options?.client ?? client).get<GetBusinessAgentConnectorToolResponse, GetBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10954
|
+
...options,
|
|
10955
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools/{toolId}'
|
|
10956
|
+
});
|
|
10957
|
+
};
|
|
10958
|
+
|
|
10959
|
+
/**
|
|
10960
|
+
* Update a connector tool
|
|
10961
|
+
*/
|
|
10962
|
+
export const updateBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10963
|
+
return (options?.client ?? client).put<UpdateBusinessAgentConnectorToolResponse, UpdateBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10964
|
+
...options,
|
|
10965
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools/{toolId}'
|
|
10966
|
+
});
|
|
10967
|
+
};
|
|
10968
|
+
|
|
10969
|
+
/**
|
|
10970
|
+
* Delete a connector tool
|
|
10971
|
+
*/
|
|
10972
|
+
export const deleteBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10973
|
+
return (options?.client ?? client).delete<DeleteBusinessAgentConnectorToolResponse, DeleteBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10974
|
+
...options,
|
|
10975
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools/{toolId}'
|
|
10976
|
+
});
|
|
10977
|
+
};
|
|
10978
|
+
|
|
10979
|
+
/**
|
|
10980
|
+
* Run a connector tool once
|
|
10981
|
+
* Executes the tool against the merchant API and returns the raw upstream result, to check a connector before the agent relies on it.
|
|
10982
|
+
*/
|
|
10983
|
+
export const runBusinessAgentConnectorTool = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RunBusinessAgentConnectorToolData, ThrowOnError>) => {
|
|
10984
|
+
return (options?.client ?? client).post<RunBusinessAgentConnectorToolResponse, RunBusinessAgentConnectorToolError, ThrowOnError>({
|
|
10985
|
+
...options,
|
|
10986
|
+
url: '/v1/accounts/{accountId}/business-agent/connectors/{connectorId}/tools/{toolId}/run'
|
|
10987
|
+
});
|
|
10988
|
+
};
|
|
10989
|
+
|
|
10990
|
+
/**
|
|
10991
|
+
* Get usage budgets
|
|
10992
|
+
* Caps over rolling windows for the Business Manager that owns the number. An empty list means unlimited.
|
|
10993
|
+
*/
|
|
10994
|
+
export const getBusinessAgentBudget = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentBudgetData, ThrowOnError>) => {
|
|
10995
|
+
return (options?.client ?? client).get<GetBusinessAgentBudgetResponse, GetBusinessAgentBudgetError, ThrowOnError>({
|
|
10996
|
+
...options,
|
|
10997
|
+
url: '/v1/accounts/{accountId}/business-agent/budget'
|
|
10998
|
+
});
|
|
10999
|
+
};
|
|
11000
|
+
|
|
11001
|
+
/**
|
|
11002
|
+
* Replace usage budgets
|
|
11003
|
+
* 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.
|
|
11004
|
+
*/
|
|
11005
|
+
export const replaceBusinessAgentBudget = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceBusinessAgentBudgetData, ThrowOnError>) => {
|
|
11006
|
+
return (options?.client ?? client).put<ReplaceBusinessAgentBudgetResponse, ReplaceBusinessAgentBudgetError, ThrowOnError>({
|
|
11007
|
+
...options,
|
|
11008
|
+
url: '/v1/accounts/{accountId}/business-agent/budget'
|
|
11009
|
+
});
|
|
11010
|
+
};
|
|
11011
|
+
|
|
11012
|
+
/**
|
|
11013
|
+
* Send a test message
|
|
11014
|
+
* 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.
|
|
11015
|
+
*/
|
|
11016
|
+
export const sendBusinessAgentTestMessage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SendBusinessAgentTestMessageData, ThrowOnError>) => {
|
|
11017
|
+
return (options?.client ?? client).post<SendBusinessAgentTestMessageResponse, SendBusinessAgentTestMessageError, ThrowOnError>({
|
|
11018
|
+
...options,
|
|
11019
|
+
url: '/v1/accounts/{accountId}/business-agent/test-messages'
|
|
11020
|
+
});
|
|
11021
|
+
};
|
|
11022
|
+
|
|
11023
|
+
/**
|
|
11024
|
+
* Send a business event
|
|
11025
|
+
* 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.
|
|
11026
|
+
*/
|
|
11027
|
+
export const sendBusinessAgentEvent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SendBusinessAgentEventData, ThrowOnError>) => {
|
|
11028
|
+
return (options?.client ?? client).post<SendBusinessAgentEventResponse, SendBusinessAgentEventError, ThrowOnError>({
|
|
11029
|
+
...options,
|
|
11030
|
+
url: '/v1/accounts/{accountId}/business-agent/events'
|
|
11031
|
+
});
|
|
11032
|
+
};
|
|
11033
|
+
|
|
11034
|
+
/**
|
|
11035
|
+
* Get a business event status
|
|
11036
|
+
*/
|
|
11037
|
+
export const getBusinessAgentEvent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetBusinessAgentEventData, ThrowOnError>) => {
|
|
11038
|
+
return (options?.client ?? client).get<GetBusinessAgentEventResponse, GetBusinessAgentEventError, ThrowOnError>({
|
|
11039
|
+
...options,
|
|
11040
|
+
url: '/v1/accounts/{accountId}/business-agent/events/{eventId}'
|
|
11041
|
+
});
|
|
11042
|
+
};
|
|
11043
|
+
|
|
11044
|
+
/**
|
|
11045
|
+
* Read evaluation data
|
|
11046
|
+
* Without query parameters, lists the evaluation scenarios (`eval_cases`). With `jobId`,
|
|
11047
|
+
* polls a run started with POST. With `summaryIds`, returns the aggregated insight reports.
|
|
11048
|
+
* With `evalIds`, returns per-conversation evaluation details. One of the three at a time.
|
|
11049
|
+
*
|
|
11050
|
+
*/
|
|
11051
|
+
export const readBusinessAgentEvals = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReadBusinessAgentEvalsData, ThrowOnError>) => {
|
|
11052
|
+
return (options?.client ?? client).get<ReadBusinessAgentEvalsResponse, ReadBusinessAgentEvalsError, ThrowOnError>({
|
|
11053
|
+
...options,
|
|
11054
|
+
url: '/v1/accounts/{accountId}/business-agent/evals'
|
|
11055
|
+
});
|
|
11056
|
+
};
|
|
11057
|
+
|
|
11058
|
+
/**
|
|
11059
|
+
* Start an evaluation run
|
|
11060
|
+
* Simulates the given scenarios against the agent and scores them. Answers 202 with a `job_id` to poll with GET.
|
|
11061
|
+
*/
|
|
11062
|
+
export const startBusinessAgentEvalRun = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<StartBusinessAgentEvalRunData, ThrowOnError>) => {
|
|
11063
|
+
return (options?.client ?? client).post<StartBusinessAgentEvalRunResponse, StartBusinessAgentEvalRunError, ThrowOnError>({
|
|
11064
|
+
...options,
|
|
11065
|
+
url: '/v1/accounts/{accountId}/business-agent/evals'
|
|
11066
|
+
});
|
|
11067
|
+
};
|
|
11068
|
+
|
|
10322
11069
|
/**
|
|
10323
11070
|
* List tracking tags
|
|
10324
11071
|
* Returns the tracking tags (Meta Pixels, or OpenAI Ads pixels) the
|
|
10325
11072
|
* connected ads account can see. Pass `?adAccountId=act_...` (Meta only)
|
|
10326
11073
|
* to scope the list to a single ad account; omit it to list every pixel
|
|
10327
11074
|
* 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
|
-
*
|
|
11075
|
+
* it was discovered on, for disambiguation). The list view omits `code`.
|
|
11076
|
+
* Call `getTrackingTag` for the install snippet and full detail (Meta
|
|
10330
11077
|
* only; OpenAI Ads has no get-by-id endpoint).
|
|
10331
11078
|
*
|
|
10332
11079
|
* Meta (platform `metaads`) and OpenAI Ads (platform `openaiads`); other
|
|
@@ -10346,20 +11093,20 @@ export const listTrackingTags = <ThrowOnError extends boolean = false>(options:
|
|
|
10346
11093
|
|
|
10347
11094
|
/**
|
|
10348
11095
|
* Create a tracking tag
|
|
10349
|
-
* Meta: creates a Meta Pixel on the given ad account (`POST /act_{id}/adspixels
|
|
10350
|
-
*
|
|
11096
|
+
* Meta: creates a Meta Pixel on the given ad account (`POST /act_{id}/adspixels`,
|
|
11097
|
+
* where `name` is the only input). Returns the created tag including its
|
|
10351
11098
|
* install `code`. The pixel is owned by the Business Manager that owns the
|
|
10352
11099
|
* ad account; a pixel created on a personal (non-BM) ad account ends up
|
|
10353
11100
|
* with `ownerBusinessId: null` and can't be shared with other ad accounts.
|
|
10354
11101
|
*
|
|
10355
|
-
* Creating a Meta pixel does NOT install it
|
|
11102
|
+
* Creating a Meta pixel does NOT install it. Install the returned `code`
|
|
10356
11103
|
* snippet on the site, or send events server-side via
|
|
10357
11104
|
* `POST /v1/ads/conversions`. The check `installed` is derived from
|
|
10358
11105
|
* `lastFiredTime`.
|
|
10359
11106
|
*
|
|
10360
11107
|
* OpenAI Ads: creates an OpenAI pixel AND provisions a Conversions API
|
|
10361
11108
|
* key for it in the same call (`adAccountId` is required by this
|
|
10362
|
-
* endpoint but ignored
|
|
11109
|
+
* endpoint but ignored: one API key maps to exactly one ad account, so
|
|
10363
11110
|
* there's nothing to select). Returns 422 (`FEATURE_NOT_AVAILABLE`) if
|
|
10364
11111
|
* the ad account isn't enabled for pixel management; contact your OpenAI
|
|
10365
11112
|
* partner representative to enable it. There is no delete API for
|
|
@@ -10388,7 +11135,7 @@ export const createTrackingTag = <ThrowOnError extends boolean = false>(options:
|
|
|
10388
11135
|
* Returns the full tag record including the base-code `code` snippet,
|
|
10389
11136
|
* `lastFiredTime`, `ownerBusinessId`, `isUnavailable`, etc. Meta only
|
|
10390
11137
|
* (platform `metaads`); other platforms return 405. OpenAI Ads has no
|
|
10391
|
-
* get-by-id endpoint, so it 405s here too
|
|
11138
|
+
* get-by-id endpoint, so it 405s here too. Use
|
|
10392
11139
|
* `GET /v1/accounts/{accountId}/tracking-tags` (list) instead.
|
|
10393
11140
|
*
|
|
10394
11141
|
*/
|
|
@@ -10407,7 +11154,7 @@ export const getTrackingTag = <ThrowOnError extends boolean = false>(options: Op
|
|
|
10407
11154
|
* Returns the re-fetched canonical tag. Meta only (platform `metaads`);
|
|
10408
11155
|
* other platforms return 405.
|
|
10409
11156
|
*
|
|
10410
|
-
* There is no DELETE
|
|
11157
|
+
* There is no DELETE: Meta has no API to delete a pixel. To stop using
|
|
10411
11158
|
* one, unshare it from your ad accounts (`DELETE
|
|
10412
11159
|
* .../tracking-tags/{tagId}/shared-accounts`) or disable it in Events
|
|
10413
11160
|
* Manager.
|
|
@@ -10464,7 +11211,7 @@ export const removeTrackingTagSharedAccount = <ThrowOnError extends boolean = fa
|
|
|
10464
11211
|
/**
|
|
10465
11212
|
* Get aggregated event stats
|
|
10466
11213
|
* Returns aggregated event counts for the pixel (`GET /{pixel_id}/stats`).
|
|
10467
|
-
* Rows are passed through from Meta as-is
|
|
11214
|
+
* Rows are passed through from Meta as-is; their shape depends on the
|
|
10468
11215
|
* `aggregation` requested. Meta only (platform `metaads`); other platforms
|
|
10469
11216
|
* return 405.
|
|
10470
11217
|
*
|
|
@@ -10702,7 +11449,7 @@ export const getVerification = <ThrowOnError extends boolean = false>(options: O
|
|
|
10702
11449
|
/**
|
|
10703
11450
|
* Check a verification code
|
|
10704
11451
|
* Verify the code the user typed. Wrong, expired, and exhausted codes
|
|
10705
|
-
* answer 200 with `valid: false` and the settled `status
|
|
11452
|
+
* answer 200 with `valid: false` and the settled `status`. Only an
|
|
10706
11453
|
* unknown id is a 404. A correct code consumes the verification
|
|
10707
11454
|
* (single-use, `status: approved`) and fires the `verification.approved`
|
|
10708
11455
|
* webhook; the 5th wrong attempt settles it as `max_attempts_reached`
|