fathom-typescript
Version:
Fathom's official TypeScript SDK.
130 lines (123 loc) • 4.43 kB
text/typescript
/*
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
*/
import * as z from "zod/v3";
import { remap as remap$ } from "../../../lib/primitives.js";
import { safeParse } from "../../../lib/schemas.js";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { ActionItem, ActionItem$inboundSchema } from "./actionitem.js";
import { CRMMatches, CRMMatches$inboundSchema } from "./crmmatches.js";
import { FathomUser, FathomUser$inboundSchema } from "./fathomuser.js";
import { Invitee, Invitee$inboundSchema } from "./invitee.js";
import {
MeetingSummary,
MeetingSummary$inboundSchema,
} from "./meetingsummary.js";
import {
TranscriptItem,
TranscriptItem$inboundSchema,
} from "./transcriptitem.js";
export const CalendarInviteesDomainsType = {
OnlyInternal: "only_internal",
OneOrMoreExternal: "one_or_more_external",
} as const;
export type CalendarInviteesDomainsType = ClosedEnum<
typeof CalendarInviteesDomainsType
>;
export type Meeting = {
title: string;
/**
* Calendar event title.
*/
meetingTitle: string | null;
/**
* The ID of the meeting recording.
*/
recordingId: number;
url: string;
shareUrl: string;
createdAt: Date;
scheduledStartTime: Date;
scheduledEndTime: Date;
recordingStartTime: Date;
recordingEndTime: Date;
calendarInviteesDomainsType: CalendarInviteesDomainsType;
transcriptLanguage: string;
transcript?: Array<TranscriptItem> | null | undefined;
defaultSummary?: MeetingSummary | null | undefined;
actionItems?: Array<ActionItem> | null | undefined;
calendarInvitees: Array<Invitee>;
recordedBy: FathomUser;
/**
* CRM data linked to the meeting. Only returns data from your or your team's linked CRM.
*
* @remarks
* If no CRM is connected for the workspace, the `error` field will be populated.
*/
crmMatches?: CRMMatches | null | undefined;
};
/** @internal */
export const CalendarInviteesDomainsType$inboundSchema: z.ZodNativeEnum<
typeof CalendarInviteesDomainsType
> = z.nativeEnum(CalendarInviteesDomainsType);
/** @internal */
export const Meeting$inboundSchema: z.ZodType<Meeting, z.ZodTypeDef, unknown> =
z.object({
title: z.string(),
meeting_title: z.nullable(z.string()),
recording_id: z.number().int(),
url: z.string(),
share_url: z.string(),
created_at: z.string().datetime({ offset: true }).transform(v =>
new Date(v)
),
scheduled_start_time: z.string().datetime({ offset: true }).transform(v =>
new Date(v)
),
scheduled_end_time: z.string().datetime({ offset: true }).transform(v =>
new Date(v)
),
recording_start_time: z.string().datetime({ offset: true }).transform(v =>
new Date(v)
),
recording_end_time: z.string().datetime({ offset: true }).transform(v =>
new Date(v)
),
calendar_invitees_domains_type: CalendarInviteesDomainsType$inboundSchema,
transcript_language: z.string(),
transcript: z.nullable(z.array(TranscriptItem$inboundSchema)).optional(),
default_summary: z.nullable(MeetingSummary$inboundSchema).optional(),
action_items: z.nullable(z.array(ActionItem$inboundSchema)).optional(),
calendar_invitees: z.array(Invitee$inboundSchema),
recorded_by: FathomUser$inboundSchema,
crm_matches: z.nullable(CRMMatches$inboundSchema).optional(),
}).transform((v) => {
return remap$(v, {
"meeting_title": "meetingTitle",
"recording_id": "recordingId",
"share_url": "shareUrl",
"created_at": "createdAt",
"scheduled_start_time": "scheduledStartTime",
"scheduled_end_time": "scheduledEndTime",
"recording_start_time": "recordingStartTime",
"recording_end_time": "recordingEndTime",
"calendar_invitees_domains_type": "calendarInviteesDomainsType",
"transcript_language": "transcriptLanguage",
"default_summary": "defaultSummary",
"action_items": "actionItems",
"calendar_invitees": "calendarInvitees",
"recorded_by": "recordedBy",
"crm_matches": "crmMatches",
});
});
export function meetingFromJSON(
jsonString: string,
): SafeParseResult<Meeting, SDKValidationError> {
return safeParse(
jsonString,
(x) => Meeting$inboundSchema.parse(JSON.parse(x)),
`Failed to parse 'Meeting' from JSON`,
);
}