import { hubspotRequest } from './client.ts' import { mapAccount } from './models.ts' import type { HubSpotAccountInfo, HubSpotAuthInput } from './types.ts' import { optionalString, requireRecord } from './types.ts' import { requireAuthMode } from './auth.ts' export type AccountInput = HubSpotAuthInput /** * Return the connected HubSpot portal identity without email or company name. * @example * import getAccount from 'kody:@kody/hubspot/account' * const account = await getAccount() */ export async function getAccount(input: AccountInput = {}): Promise { const result = await hubspotRequest({ ...input, operation: 'account.read', path: '/account-info/v3/details', }) return mapAccount(result.data) } /** * Return the connected HubSpot portal identity without email or company name. * @example * import getAccount from 'kody:@kody/hubspot/account' * const account = await getAccount({ integrationName: 'hubspot-work' }) */ export default async function accountEntrypoint( params: AccountInput & Record = {}, ) { const input = requireRecord(params, 'account') return getAccount({ integrationName: optionalString(input.integrationName, 'integrationName'), integration: optionalString(input.integration, 'integration'), account: optionalString(input.account, 'account'), secretName: optionalString(input.secretName, 'secretName'), auth: requireAuthMode(input.auth), }) }