import {z} from 'zod' export type GetApiAccountInfo202603ActivitySecurityArgs = {after?: string | undefined, fromTimestamp?: number | undefined, limit?: number | undefined, toTimestamp?: number | undefined, userId?: number | undefined}; export type GetApiAccountInfo202603ActivitySecurityOptions = {baseUrl?: string | undefined, privateApps?: string | undefined, fetch?: typeof fetch | undefined}; export const nextPage = z.object({after: z.string(), link: z.string().optional()}); export const forwardPaging = z.object({next: nextPage.optional()}); export const accountActivityHydratedCriticalAction = z.object({actingUser: z.string().optional(), countryCode: z.string().optional(), createdAt: z.string(), id: z.string(), infoUrl: z.string().optional(), ipAddress: z.string().optional(), location: z.string().optional(), objectId: z.string().optional(), regionCode: z.string().optional(), type: z.enum(["ACCEPTANCE_TEST", "ACCOUNT_ADDED_TO_MULTI_ACCOUNT_ORGANIZATION", "ACCOUNT_REMOVED_FROM_MULTI_ACCOUNT_ORGANIZATION", "ADD_ADMIN_PERMISSIONS", "ADD_ADMIN_USER", "ADD_SINGLE_SIGN_ON", "ADD_TWO_FACTOR_AUTHENTICATION", "ADD_USER", "ADD_WEBHOOK_IN_WORKFLOW", "ALLOWED_GEOLOCATIONS_DISABLED", "ALLOWED_GEOLOCATIONS_ENABLED", "ALLOWED_LOGIN_METHODS_DELETE", "ALLOWED_LOGIN_METHODS_UPDATE", "ATTACHMENT_LOGGING_DISABLED", "ATTACHMENT_LOGGING_ENABLED", "AUTOMATED_INACTIVE_USER_DEACTIVATION_DISABLED", "AUTOMATED_INACTIVE_USER_DEACTIVATION_ENABLED", "BOTS_WEBHOOK_POST", "BOTS_WEBHOOK_UPDATE", "BOTS_WEBHOOK_VIEWED", "BULK_EMAIL_DOMAIN_CHANGE", "CHANGE_AD_EVENT_CONSENT_SETTING", "CHANGE_AD_EVENT_DATA_SHARING_SETTING", "CHANGE_PASSWORD", "CONTACT_DATA_EXPORT", "DATA_ACCESS_REQUEST_SUBMITTED", "DATA_BACKUP_CREATED", "DATA_BACKUP_DOWNLOADED", "DATA_BACKUP_SCHEDULE_CREATED", "DATA_BACKUP_SCHEDULE_DELETED", "DATA_BACKUP_SCHEDULE_UPDATED", "DATA_RESTORE_COMPLETED", "DATA_SHARING_CONNECTION_ADDED", "DATA_SHARING_CONNECTION_REMOVED", "DATASET_SYNC", "DEACTIVATE_USER", "DOMAIN_BASED_INVITE_CREATED", "DOMAIN_BASED_INVITE_REMOVED", "DOMAIN_BASED_INVITES_DISABLED", "DOMAIN_BASED_INVITES_ENABLED", "EMAIL_TRACKING_DISABLED", "EMAIL_TRACKING_ENABLED", "EXPORT", "EXPORT_APPROVAL", "EXPORT_DOWNLOAD", "EXPORT_USERS", "FORM_SUBMISSIONS_EXPORT", "GDPR_DELETE", "GDPR_TOGGLE_DISABLED", "GDPR_TOGGLE_ENABLED", "HAPIKEY_CREATE", "HAPIKEY_DEACTIVATE", "HAPIKEY_VIEW", "HUBSPOT_EMPLOYEE_ACCESS_DISABLED", "HUBSPOT_EMPLOYEE_ACCESS_ENABLED", "IMPERSONATE_USER", "IMPORT", "INSTALL_INTEGRATION", "IP_RESTRICTIONS_DISABLED", "IP_RESTRICTIONS_ENABLED", "JOINED_PORTAL_VIA_DOMAIN_BASED_INVITE", "LEGAL_BASIS_REQUIREMENT_DISABLED", "LEGAL_BASIS_REQUIREMENT_ENABLED", "MANUAL_PASSWORD_RESET_EMAIL_SEND", "MANUAL_REGISTRATION_EMAIL_SEND", "MARKETING_CONTACTS_APP_SETTINGS_DISABLED", "MARKETING_CONTACTS_APP_SETTINGS_ENABLED", "MERGE_REVERT", "MODIFY_WEBHOOK_IN_WORKFLOW", "MULTI_ACCOUNT_REPORTING_CONNECTION_ADDED", "MULTI_ACCOUNT_REPORTING_CONNECTION_REMOVED", "MULTI_ACCOUNT_WORKFLOWS_CONNECTION_ADDED", "MULTI_ACCOUNT_WORKFLOWS_CONNECTION_REMOVED", "NEVER_LOG_FOR_PORTAL_ADDITION", "NEVER_LOG_FOR_PORTAL_DELETION", "NEVER_LOG_FOR_USER_ADDITION", "NEVER_LOG_FOR_USER_DELETION", "PASSKEY_ADDED", "PASSKEY_DELETED", "PAYMENT_ACCOUNT_CREATION", "PAYMENT_ACCOUNT_INFO_UPDATE", "PAYMENT_BANK_ACCOUNT_CHANGE", "PAYMENT_ONBOARDING_LINK_SEND", "PERSONAL_ACCESS_KEY_CREATE", "PERSONAL_ACCESS_KEY_DEACTIVATE", "PERSONAL_ACCESS_KEY_ROTATE", "PERSONAL_ACCESS_KEY_VIEW", "PRIVATE_APP_ACCESS_TOKEN_CREATE", "PRIVATE_APP_ACCESS_TOKEN_DEACTIVATE", "PRIVATE_APP_ACCESS_TOKEN_ROTATE", "PRIVATE_APP_ACCESS_TOKEN_VIEW", "PRIVATE_APP_CLIENT_SECRET_VIEW", "PRIVATE_APP_CLIENT_SECRET_WRITE", "PRIVATE_APP_SCOPE_GROUPS_UPDATE", "PRODUCTION_DEPLOYMENT", "PROPERTY_HISTORY_REVISION", "PUBLIC_APP_CLIENT_SECRET_VIEW", "PUBLIC_APP_CLIENT_SECRET_WRITE", "REACTIVATE_USER", "REMOVE_ADMIN_PERMISSIONS", "REMOVE_ADMIN_USER", "REMOVE_SINGLE_SIGN_ON", "REMOVE_TWO_FACTOR_AUTHENTICATION", "REMOVE_USER", "REQUIRE_SINGLE_SIGN_ON", "RESTRICTED_LIST_ADDED_TO_CONTENT", "SANDBOX_CREATION", "SANDBOX_DELETION", "SANDBOX_SYNC", "SANDBOX_SYNC_TO_PRODUCTION", "SECRET_ADDED_TO_SERVERLESS_FUNCTION", "SENSITIVE_DATA_DISABLED", "SENSITIVE_DATA_ENABLED", "SEQUENCE_CLONED", "SEQUENCE_CREATED", "SEQUENCE_ENROLLMENT_INITIATED", "SEQUENCE_ENROLLMENT_STATE_CHANGED", "SEQUENCE_MODIFIED", "SERVICE_KEY_CREATE", "SERVICE_KEY_DEACTIVATE", "SERVICE_KEY_PERMISSIONS_UPDATE", "SERVICE_KEY_REVEAL", "SERVICE_KEY_ROTATE", "SMTP_TOKEN_CREATED", "SMTP_TOKEN_DELETED", "SMTP_TOKEN_PASSWORD_RESET", "SMTP_TOKEN_RETRIEVED", "TEAM_ADDED", "TEAM_DELETED", "TEAM_USER_ADDED", "TEAM_USER_DELETED", "TEMPLATE_MODIFIED", "TOUCHLESS_PURCHASE", "UNIFIED_RESTORE_UNDO_EXECUTION", "UNINSTALL_INTEGRATION", "UNREQUIRE_SINGLE_SIGN_ON", "WEBHOOK_SETTINGS_UPDATE", "WEBHOOK_SUBSCRIPTION_CREATE", "WEBHOOK_SUBSCRIPTION_UPDATE"]), userId: z.number().int()}); export const accountActivityCollectionResponseHydratedCriticalActionForwardPaging = z.object({paging: forwardPaging.optional(), results: z.array(accountActivityHydratedCriticalAction)}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Retrieve security history * * GET /account-info/2026-03/activity/security * * Also accepts auth: developer_hapikey */ export const getApiAccountInfo202603ActivitySecurity = async (args: GetApiAccountInfo202603ActivitySecurityArgs, options?: GetApiAccountInfo202603ActivitySecurityOptions) => { const {baseUrl = "https://api.hubapi.com", fetch: fetchFn = fetch, privateApps} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.after != null) query.append("after", String(args.after)) if (args.fromTimestamp != null) query.append("fromTimestamp", String(args.fromTimestamp)) if (args.limit != null) query.append("limit", String(args.limit)) if (args.toTimestamp != null) query.append("toTimestamp", String(args.toTimestamp)) if (args.userId != null) query.append("userId", String(args.userId)) if (privateApps !== undefined) headers.set('authorization', `Bearer ${privateApps}`) const url = `${baseUrl.replace(/\/+$/, '')}/account-info/2026-03/activity/security${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(accountActivityCollectionResponseHydratedCriticalActionForwardPaging, await res.json()) };