Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/hubspot

src/account.ts

41 lines · 1.4 KB · TypeScript
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<HubSpotAccountInfo> {
	const result = await hubspotRequest<unknown>({
		...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<string, unknown> = {},
) {
	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),
	})
}