import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; import type { AdAccountFields } from "./ad-account.ts"; import type { BrandedContentShadowIGMediaIDFields } from "./branded-content-shadow-ig-media-id.ts"; import type { BrandedContentShadowIGUserIDFields } from "./branded-content-shadow-ig-user-id.ts"; import type { BusinessFields } from "./business.ts"; import type { CommentFields } from "./comment.ts"; import type { ContentPublishingLimitResponseFields } from "./content-publishing-limit-response.ts"; import type { DatasetFields } from "./dataset.ts"; import type { IGBCAdsPermissionFields } from "./igbc-ads-permission.ts"; import type { IGCommentFields } from "./ig-comment.ts"; import type { IGMediaFields } from "./ig-media.ts"; import type { IGShoppingProductAppealFields } from "./ig-shopping-product-appeal.ts"; import type { IGUpcomingEventFields } from "./ig-upcoming-event.ts"; import type { IGUserExportForCAMFields } from "./ig-user-export-for-cam.ts"; import type { InstagramInsightsResultFields } from "./instagram-insights-result.ts"; import type { ShadowIGHashtagFields } from "./shadow-ig-hashtag.ts"; import type { ShadowIGScheduledMediaFields } from "./shadow-ig-scheduled-media.ts"; import type { ShadowIGUserCTXPartnerAppWelcomeMessageFlowFields } from "./shadow-ig-user-ctx-partner-app-welcome-message-flow.ts"; import type { ShadowIGUserCatalogProductSearchFields } from "./shadow-ig-user-catalog-product-search.ts"; import type { ShadowIGUserCollaborationInvitesFields } from "./shadow-ig-user-collaboration-invites.ts"; import type { ShadowIGUserCollaborativeMediaFields } from "./shadow-ig-user-collaborative-media.ts"; import type { ThreadsUserFields } from "./threads-user.ts"; import type { UserFields } from "./user.ts"; import type { UserAvailableCatalogsFields } from "./user-available-catalogs.ts"; import type { UserPageOneTimeOptInTokenSettingsFields } from "./user-page-one-time-opt-in-token-settings.ts"; export interface IGUserFields { biography: string; business_discovery: IGUserFields; followers_count: number; follows_count: number; has_profile_pic: boolean; id: string; ig_id: number; is_published: boolean; legacy_instagram_user_id: string; media_count: number; mentioned_comment: IGCommentFields; mentioned_media: IGMediaFields; name: string; owner_business: BusinessFields; profile_picture_url: string; shopping_product_tag_eligibility: boolean; shopping_review_status: string; username: string; website: string; } export interface IGUserListAuthorizedAdaccountsParams { business: string; [key: string]: unknown; } export interface IGUserCreateAuthorizedAdaccountsParams { account_id: string; business: string; [key: string]: unknown; } export interface IGUserListBrandedContentAdPermissionsParams { creator_username?: string; [key: string]: unknown; } export interface IGUserCreateBrandedContentAdPermissionsParams { creator_instagram_account?: string; creator_instagram_username?: string; revoke?: boolean; [key: string]: unknown; } export interface IGUserListBrandedContentAdvertisableMediasParams { ad_code?: string; creator_username?: string; media_relationship?: string[]; only_fetch_allowlisted?: boolean; only_fetch_recommended_content?: boolean; permalinks?: string[]; [key: string]: unknown; } export interface IGUserDeleteBrandedContentTagApprovalParams { user_ids: number[]; [key: string]: unknown; } export interface IGUserListBrandedContentTagApprovalParams { user_ids: number[]; [key: string]: unknown; } export interface IGUserCreateBrandedContentTagApprovalParams { user_ids: number[]; [key: string]: unknown; } export interface IGUserCreateBusinessMessagingFeatureStatusParams { features: Record[]; [key: string]: unknown; } export interface IGUserListCatalogProductSearchParams { catalog_id: string; q?: string; [key: string]: unknown; } export interface IGUserCreateCollaborationInvitesParams { accept: boolean; media_id: string; [key: string]: unknown; } export interface IGUserListContentPublishingLimitParams { since?: string; [key: string]: unknown; } export interface IGUserListCreatorMarketplaceCreatorsParams { creator_age_bucket?: Record[]; creator_countries?: string[]; creator_follower_growth?: Record; creator_gender?: string[]; creator_interests?: Record[]; creator_latest_post_activity?: Record; creator_max_engaged_accounts?: number; creator_max_followers?: number; creator_min_engaged_accounts?: number; creator_min_followers?: number; has_public_contact_email?: boolean; major_audience_age_bucket?: Record[]; major_audience_countries?: string[]; major_audience_device_type?: Record[]; major_audience_gender?: string[]; query?: string; reels_interaction_rate?: Record; show_onboarded_creators_only?: boolean; similar_to_creators?: string[]; username?: string; usernames?: string[]; [key: string]: unknown; } export interface IGUserCreateDatasetParams { dataset_name?: string; [key: string]: unknown; } export interface IGUserListInsightsParams { breakdown?: string[]; metric: string[]; metric_type?: string; period: string[]; since?: string; timeframe?: string; until?: string; [key: string]: unknown; } export interface IGUserListLiveMediaParams { since?: string; until?: string; [key: string]: unknown; } export interface IGUserListMediaParams { since?: string; until?: string; [key: string]: unknown; } export interface IGUserCreateMediaParams { alt_text?: string; audio_name?: string; caption?: string; children?: string[]; collaborators?: string[]; cover_url?: string; image_url?: string; is_carousel_item?: boolean; location_id?: string; media_type?: string; product_tags?: Record[]; share_to_feed?: boolean; thumb_offset?: string; trial_params?: Record; upload_type?: string; user_tags?: Record[]; video_url?: string; [key: string]: unknown; } export interface IGUserCreateMediaPublishParams { creation_id: number; [key: string]: unknown; } export interface IGUserCreateMentionsParams { comment_id?: string; media_id: string; message: string; [key: string]: unknown; } export interface IGUserCreateModerateConversationsParams { actions: string[]; user_ids: Record[]; [key: string]: unknown; } export interface IGUserListProductAppealParams { product_id: string; [key: string]: unknown; } export interface IGUserCreateProductAppealParams { appeal_reason: string; product_id: string; [key: string]: unknown; } export interface IGUserCreateUpcomingEventsParams { end_time?: string; notification_subtypes?: string[]; start_time: string; title: string; [key: string]: unknown; } export interface IGUserListWelcomeMessageFlowsParams { app_id?: string; flow_id?: string; [key: string]: unknown; } export function iGUserNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as IGUserFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), agencies: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/agencies`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), authorizedAdaccounts: { __path: `${id}/authorized_adaccounts`, __brand: undefined as unknown as AdAccountFields, list: (opts: { fields: F; params?: IGUserListAuthorizedAdaccountsParams }) => new Cursor>(client, `${id}/authorized_adaccounts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: IGUserCreateAuthorizedAdaccountsParams) => client.post(`${id}/authorized_adaccounts`, params as Record), }, availableCatalogs: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/available_catalogs`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), brandedContentAdPermissions: { __path: `${id}/branded_content_ad_permissions`, __brand: undefined as unknown as IGBCAdsPermissionFields, list: (opts: { fields: F; params?: IGUserListBrandedContentAdPermissionsParams }) => new Cursor>(client, `${id}/branded_content_ad_permissions`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: IGUserCreateBrandedContentAdPermissionsParams) => client.post(`${id}/branded_content_ad_permissions`, params as Record), }, brandedContentAdvertisableMedias: (opts: { fields: F; params?: IGUserListBrandedContentAdvertisableMediasParams }) => new Cursor>(client, `${id}/branded_content_advertisable_medias`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), brandedContentTagApproval: { __path: `${id}/branded_content_tag_approval`, __brand: undefined as unknown as BrandedContentShadowIGUserIDFields, list: (opts: { fields: F; params?: IGUserListBrandedContentTagApprovalParams }) => new Cursor>(client, `${id}/branded_content_tag_approval`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: IGUserCreateBrandedContentTagApprovalParams) => client.post(`${id}/branded_content_tag_approval`, params as Record), delete: (params: IGUserDeleteBrandedContentTagApprovalParams) => client.delete(`${id}/branded_content_tag_approval`, params as Record ?? {}), }, createBusinessMessagingFeatureStatu: (params: IGUserCreateBusinessMessagingFeatureStatusParams) => client.post(`${id}/business_messaging_feature_status`, params as Record), catalogProductSearch: (opts: { fields: F; params?: IGUserListCatalogProductSearchParams }) => new Cursor>(client, `${id}/catalog_product_search`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), collaborationInvites: { __path: `${id}/collaboration_invites`, __brand: undefined as unknown as ShadowIGUserCollaborationInvitesFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/collaboration_invites`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: IGUserCreateCollaborationInvitesParams) => client.post(`${id}/collaboration_invites`, params as Record), }, collaborativeMedia: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/collaborative_media`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), connectedThreadsUser: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/connected_threads_user`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), contentPublishingLimit: (opts: { fields: F; params?: IGUserListContentPublishingLimitParams }) => new Cursor>(client, `${id}/content_publishing_limit`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), creatorMarketplaceCreators: (opts: { fields: F; params?: IGUserListCreatorMarketplaceCreatorsParams }) => new Cursor>(client, `${id}/creator_marketplace_creators`, 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: IGUserCreateDatasetParams) => client.post(`${id}/dataset`, params as Record), }, insights: (opts: { fields: F; params?: IGUserListInsightsParams }) => new Cursor>(client, `${id}/insights`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), instagramBackedThreadsUser: { __path: `${id}/instagram_backed_threads_user`, __brand: undefined as unknown as ThreadsUserFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/instagram_backed_threads_user`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: Record) => client.post(`${id}/instagram_backed_threads_user`, params as Record), }, liveMedia: (opts: { fields: F; params?: IGUserListLiveMediaParams }) => new Cursor>(client, `${id}/live_media`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), media: { __path: `${id}/media`, __brand: undefined as unknown as IGMediaFields, list: (opts: { fields: F; params?: IGUserListMediaParams }) => new Cursor>(client, `${id}/media`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: IGUserCreateMediaParams) => client.post(`${id}/media`, params as Record), }, createMediaPublish: (params: IGUserCreateMediaPublishParams) => client.post(`${id}/media_publish`, params as Record), createMention: (params: IGUserCreateMentionsParams) => client.post>(`${id}/mentions`, params as Record), createModerateConversation: (params: IGUserCreateModerateConversationsParams) => client.post>(`${id}/moderate_conversations`, params as Record), notificationMessageTokens: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/notification_message_tokens`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), productAppeal: { __path: `${id}/product_appeal`, __brand: undefined as unknown as IGShoppingProductAppealFields, list: (opts: { fields: F; params?: IGUserListProductAppealParams }) => new Cursor>(client, `${id}/product_appeal`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: IGUserCreateProductAppealParams) => client.post(`${id}/product_appeal`, params as Record), }, recentlySearchedHashtags: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/recently_searched_hashtags`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), scheduledMedia: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/scheduled_media`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), stories: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/stories`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), tags: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/tags`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), upcomingEvents: { __path: `${id}/upcoming_events`, __brand: undefined as unknown as IGUpcomingEventFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/upcoming_events`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: IGUserCreateUpcomingEventsParams) => client.post>(`${id}/upcoming_events`, params as Record), }, welcomeMessageFlows: (opts: { fields: F; params?: IGUserListWelcomeMessageFlowsParams }) => new Cursor>(client, `${id}/welcome_message_flows`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), }; }