import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; import type { AssignedUserFields } from "./assigned-user.ts"; import type { BusinessFields } from "./business.ts"; import type { CTXPartnerAppWelcomeMessageFlowFields } from "./ctx-partner-app-welcome-message-flow.ts"; import type { CommerceMerchantSettingsFields } from "./commerce-merchant-settings.ts"; import type { DatasetFields } from "./dataset.ts"; import type { ProductCatalogFields } from "./product-catalog.ts"; import type { WhatsAppBusinessHealthStatusForMessageSendFields } from "./whats-app-business-health-status-for-message-send.ts"; import type { BusinessVerificationStatus, WhatsAppBusinessAccountBusinessVerificationStatus, WhatsAppBusinessAccountWhatsappBusinessManagerMessagingLimit } from "../enums.ts"; export interface WhatsAppBusinessAccountFields { account_review_status: string; analytics: Record; auth_international_rate_eligibility: Record; business_verification_status: WhatsAppBusinessAccountBusinessVerificationStatus; country: string; creation_time: number; currency: string; disable_marketing_messages_on_cloud_api: boolean; health_status: WhatsAppBusinessHealthStatusForMessageSendFields; id: string; is_enabled_for_insights: boolean; is_shared_with_partners: boolean; linked_commerce_account: CommerceMerchantSettingsFields; marketing_messages_lite_api_status: string; marketing_messages_onboarding_status: string; message_template_namespace: string; name: string; on_behalf_of_business_info: Record; owner_business: BusinessFields; owner_business_info: Record; ownership_type: string; primary_business_location: string; primary_funding_id: string; purchase_order_number: string; status: string; template_auto_archival_enabled: boolean; timezone_id: string; whatsapp_business_manager_messaging_limit: WhatsAppBusinessAccountWhatsappBusinessManagerMessagingLimit; } export interface WhatsAppBusinessAccountDeleteAssignedUsersParams { user: number; [key: string]: unknown; } export interface WhatsAppBusinessAccountListAssignedUsersParams { business: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateAssignedUsersParams { tasks: string[]; user: number; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateBusinessMessagingFeatureStatusParams { features: Record[]; [key: string]: unknown; } export interface WhatsAppBusinessAccountListCallAnalyticsParams { country_codes?: string[]; dimensions?: string[]; directions?: string[]; end: number; granularity: string; metric_types?: string[]; phone_numbers?: string[]; start: number; tiers?: string[]; [key: string]: unknown; } export interface WhatsAppBusinessAccountListConversationAnalyticsParams { conversation_categories?: string[]; conversation_directions?: string[]; conversation_types?: string[]; country_codes?: string[]; dimensions?: string[]; end: number; granularity: string; metric_types?: string[]; phone_numbers?: string[]; start: number; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateDatasetParams { dataset_name?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateFlowsParams { categories: string[]; clone_flow_id?: string; endpoint_uri?: string; flow_json?: string; name: string; publish?: boolean; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateGeneratePaymentConfigurationOauthLinkParams { configuration_name: string; redirect_url?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountListGroupAnalyticsParams { end: string; granularity?: string; group_ids: string[]; metric_types?: string[]; start: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateMessageSamplesParams { interactive?: Record; text?: Record; type: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountListMessageTemplatePreviewsParams { add_security_recommendation?: boolean; business_name?: string; button_types?: string[]; category: string; code_expiration_minutes?: number; languages?: string[]; [key: string]: unknown; } export interface WhatsAppBusinessAccountDeleteMessageTemplatesParams { hsm_id?: string; hsm_ids?: string[]; name?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountListMessageTemplatesParams { category?: string[]; content?: string; language?: string[]; name?: string; name_or_content?: string; quality_score?: string[]; since?: string; source?: string; status?: string[]; until?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateMessageTemplatesParams { allow_category_change?: boolean; bid_spec?: Record; category: string; components?: Record[]; creative_sourcing_spec?: Record; cta_url_link_tracking_opted_out?: boolean; degrees_of_freedom_spec?: Record; display_format?: string; language: string; library_template_body_inputs?: Record; library_template_button_inputs?: Record[]; library_template_name?: string; message_send_ttl_seconds?: number; name: string; parameter_format?: string; send_type?: string; sub_category?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateMigrateFlowsParams { source_flow_names?: string[]; source_waba_id: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateMigrateMessageTemplatesParams { count?: number; page_number?: number; source_waba_id: string; template_ids?: string[]; [key: string]: unknown; } export interface WhatsAppBusinessAccountDeletePaymentConfigurationParams { configuration_name: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountListPaymentConfigurationParams { configuration_name: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreatePaymentConfigurationParams { configuration_name: string; data_endpoint_url?: string; merchant_category_code?: string; merchant_vpa?: string; provider_name?: string; purpose_code?: string; redirect_url?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreatePhoneNumbersParams { cc?: string; migrate_phone_number?: boolean; phone_number?: string; preverified_id?: string; verified_name?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountListPricingAnalyticsParams { country_codes?: string[]; dimensions?: string[]; end: number; granularity: string; metric_types?: string[]; phone_numbers?: string[]; pricing_categories?: string[]; pricing_types?: string[]; start: number; tiers?: string[]; [key: string]: unknown; } export interface WhatsAppBusinessAccountDeleteProductCatalogsParams { catalog_id: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateProductCatalogsParams { catalog_id: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateSetOboMobilityIntentParams { solution_id?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateSetSolutionMigrationIntentParams { app_id?: string; solution_id?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateSubscribedAppsParams { override_callback_uri?: string; verify_token?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountListTemplateAnalyticsParams { end: string; granularity: string; metric_types?: string[]; product_type?: string; start: string; template_ids: string[]; use_waba_timezone?: boolean; [key: string]: unknown; } export interface WhatsAppBusinessAccountListTemplateGroupAnalyticsParams { end: string; granularity: string; metric_types?: string[]; start: string; template_group_ids: string[]; use_waba_timezone?: boolean; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateTemplateGroupsParams { description: string; name: string; whatsapp_business_templates: string[]; [key: string]: unknown; } export interface WhatsAppBusinessAccountListTemplatePerformanceMetricsParams { name?: string; template_id?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateUpsertMessageTemplatesParams { category: string; components: Record[]; languages: string[]; message_send_ttl_seconds?: number; name: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountDeleteWelcomeMessageSequencesParams { sequence_id: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountListWelcomeMessageSequencesParams { app_id?: string; sequence_id?: string; [key: string]: unknown; } export interface WhatsAppBusinessAccountCreateWelcomeMessageSequencesParams { name?: string; sequence_id?: string; welcome_message_sequence?: Record; [key: string]: unknown; } export interface WhatsAppBusinessAccountUpdateParams { degrees_of_freedom_spec?: Record; disable_marketing_messages_on_cloud_api?: boolean; is_enabled_for_insights?: boolean; template_auto_archival_enabled?: boolean; [key: string]: unknown; } export function whatsAppBusinessAccountNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as WhatsAppBusinessAccountFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), update: (params: WhatsAppBusinessAccountUpdateParams) => client.post(`${id}`, params as Record), activities: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/activities`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), assignedUsers: { __path: `${id}/assigned_users`, __brand: undefined as unknown as AssignedUserFields, list: (opts: { fields: F; params?: WhatsAppBusinessAccountListAssignedUsersParams }) => new Cursor>(client, `${id}/assigned_users`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreateAssignedUsersParams) => client.post(`${id}/assigned_users`, params as Record), delete: (params: WhatsAppBusinessAccountDeleteAssignedUsersParams) => client.delete(`${id}/assigned_users`, params as Record ?? {}), }, audiences: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/audiences`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), createBusinessMessagingFeatureStatu: (params: WhatsAppBusinessAccountCreateBusinessMessagingFeatureStatusParams) => client.post(`${id}/business_messaging_feature_status`, params as Record), callAnalytics: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListCallAnalyticsParams }) => new Cursor, F[number]>>(client, `${id}/call_analytics`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), conversationAnalytics: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListConversationAnalyticsParams }) => new Cursor, F[number]>>(client, `${id}/conversation_analytics`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), dataset: { __path: `${id}/dataset`, __brand: undefined as unknown as DatasetFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/dataset`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreateDatasetParams) => client.post(`${id}/dataset`, params as Record), }, degreesOfFreedomSpec: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/degrees_of_freedom_spec`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), flows: { __path: `${id}/flows`, __brand: undefined as unknown as Record, list: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/flows`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreateFlowsParams) => client.post>(`${id}/flows`, params as Record), }, createGeneratePaymentConfigurationOauthLink: (params: WhatsAppBusinessAccountCreateGeneratePaymentConfigurationOauthLinkParams) => client.post(`${id}/generate_payment_configuration_oauth_link`, params as Record), groupAnalytics: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListGroupAnalyticsParams }) => new Cursor, F[number]>>(client, `${id}/group_analytics`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), messageCampaigns: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/message_campaigns`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), createMessageSample: (params: WhatsAppBusinessAccountCreateMessageSamplesParams) => client.post(`${id}/message_samples`, params as Record), messageTemplatePreviews: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListMessageTemplatePreviewsParams }) => new Cursor, F[number]>>(client, `${id}/message_template_previews`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), messageTemplates: { __path: `${id}/message_templates`, __brand: undefined as unknown as Record, list: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListMessageTemplatesParams }) => new Cursor, F[number]>>(client, `${id}/message_templates`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreateMessageTemplatesParams) => client.post(`${id}/message_templates`, params as Record), delete: (params: WhatsAppBusinessAccountDeleteMessageTemplatesParams) => client.delete(`${id}/message_templates`, params as Record ?? {}), }, createMigrateFlow: (params: WhatsAppBusinessAccountCreateMigrateFlowsParams) => client.post(`${id}/migrate_flows`, params as Record), createMigrateMessageTemplate: (params: WhatsAppBusinessAccountCreateMigrateMessageTemplatesParams) => client.post(`${id}/migrate_message_templates`, params as Record), paymentConfiguration: { __path: `${id}/payment_configuration`, __brand: undefined as unknown as Record, list: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListPaymentConfigurationParams }) => new Cursor, F[number]>>(client, `${id}/payment_configuration`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreatePaymentConfigurationParams) => client.post(`${id}/payment_configuration`, params as Record), delete: (params: WhatsAppBusinessAccountDeletePaymentConfigurationParams) => client.delete(`${id}/payment_configuration`, params as Record ?? {}), }, paymentConfigurations: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/payment_configurations`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), phoneNumbers: { __path: `${id}/phone_numbers`, __brand: undefined as unknown as Record, list: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/phone_numbers`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreatePhoneNumbersParams) => client.post>(`${id}/phone_numbers`, params as Record), }, pricingAnalytics: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListPricingAnalyticsParams }) => new Cursor, F[number]>>(client, `${id}/pricing_analytics`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), productCatalogs: { __path: `${id}/product_catalogs`, __brand: undefined as unknown as ProductCatalogFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/product_catalogs`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreateProductCatalogsParams) => client.post(`${id}/product_catalogs`, params as Record), delete: (params: WhatsAppBusinessAccountDeleteProductCatalogsParams) => client.delete(`${id}/product_catalogs`, params as Record ?? {}), }, schedules: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/schedules`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), createSetOboMobilityIntent: (params: WhatsAppBusinessAccountCreateSetOboMobilityIntentParams) => client.post>(`${id}/set_obo_mobility_intent`, params as Record), createSetSolutionMigrationIntent: (params: WhatsAppBusinessAccountCreateSetSolutionMigrationIntentParams) => client.post>(`${id}/set_solution_migration_intent`, params as Record), solutions: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/solutions`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), subscribedApps: { __path: `${id}/subscribed_apps`, __brand: undefined as unknown as Record, list: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/subscribed_apps`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreateSubscribedAppsParams) => client.post(`${id}/subscribed_apps`, params as Record), delete: (params?: Record) => client.delete(`${id}/subscribed_apps`, params as Record ?? {}), }, templateAnalytics: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListTemplateAnalyticsParams }) => new Cursor, F[number]>>(client, `${id}/template_analytics`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), templateGroupAnalytics: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListTemplateGroupAnalyticsParams }) => new Cursor, F[number]>>(client, `${id}/template_group_analytics`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), templateGroups: { __path: `${id}/template_groups`, __brand: undefined as unknown as Record, list: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/template_groups`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreateTemplateGroupsParams) => client.post>(`${id}/template_groups`, params as Record), }, templatePerformanceMetrics: )[]>(opts: { fields: F; params?: WhatsAppBusinessAccountListTemplatePerformanceMetricsParams }) => new Cursor, F[number]>>(client, `${id}/template_performance_metrics`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), createUpsertMessageTemplate: (params: WhatsAppBusinessAccountCreateUpsertMessageTemplatesParams) => client.post(`${id}/upsert_message_templates`, params as Record), welcomeMessageSequences: { __path: `${id}/welcome_message_sequences`, __brand: undefined as unknown as CTXPartnerAppWelcomeMessageFlowFields, list: (opts: { fields: F; params?: WhatsAppBusinessAccountListWelcomeMessageSequencesParams }) => new Cursor>(client, `${id}/welcome_message_sequences`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: WhatsAppBusinessAccountCreateWelcomeMessageSequencesParams) => client.post>(`${id}/welcome_message_sequences`, params as Record), delete: (params: WhatsAppBusinessAccountDeleteWelcomeMessageSequencesParams) => client.delete(`${id}/welcome_message_sequences`, params as Record ?? {}), }, }; }