Skip to content

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

Package listing

@kentcdodds/google

src/people.ts

17 lines · 1.9 KB · TypeScript
import { requestGoogle } from './core.ts'
import type { JsonObject } from './types.ts'
export type PeopleMeParams = { account: string; personFields?: string }
export type PeopleSearchParams = { account: string; query: string; pageSize?: number; readMask?: string }
export type PeopleConnectionsParams = { account: string; resourceName?: string; pageSize?: number; pageToken?: string; personFields?: string }
export async function getMe(params: PeopleMeParams): Promise<JsonObject> { const { personFields = 'names,emailAddresses,phoneNumbers,photos,organizations,urls' } = params; return await requestGoogle({ ...params, api: 'people', path: '/v1/people/me', query: { personFields } }) as JsonObject }
export async function searchContacts(params: PeopleSearchParams): Promise<JsonObject> { const { query, pageSize = 10, readMask = 'names,emailAddresses,phoneNumbers,organizations' } = params; if (!query) throw new Error('searchContacts requires query.'); return await requestGoogle({ ...params, api: 'people', method: 'POST', path: '/v1/people:searchContacts', query: { readMask }, body: { query, pageSize } }) as JsonObject }
export async function listConnections(params: PeopleConnectionsParams): Promise<JsonObject> { const { resourceName = 'people/me', pageSize = 10, pageToken, personFields = 'names,emailAddresses,phoneNumbers,organizations' } = params; return await requestGoogle({ ...params, api: 'people', path: '/v1/' + resourceName + '/connections', query: { pageSize, pageToken, personFields } }) as JsonObject }

/**
 * Return the Google People helper namespace for profile, contact search, and connections.
 * @example
 * import people from 'kody:@kentcdodds/google/people'
 * const me = await people().getMe({ account: 'personal' })
 * // => { resourceName: 'people/...', names: [...], ... }
 */
export default function people() { return { getMe, searchContacts, listConnections } }