nylas
Version:
A NodeJS wrapper for the Nylas REST API for email, contacts, and calendar.
181 lines (180 loc) • 5.46 kB
TypeScript
import { ListQueryParams } from './listQueryParams.js';
import { NotetakerMeetingSettings } from './notetakers.js';
/**
* Interface for Calendar Notetaker participant filter
*/
export interface CalendarNotetakerParticipantFilter {
/**
* Only have meeting bot join meetings with greater than or equal to this number of participants
*/
participantsGte?: number;
/**
* Only have meeting bot join meetings with less than or equal to this number of participants
*/
participantsLte?: number;
}
/**
* Interface for Calendar Notetaker rules
*/
export interface CalendarNotetakerRules {
/**
* Types of events to include for notetaking. This is a union of events that should have a Notetaker sent to them.
* "internal": Events where the host domain matches all participants' domain names
* "external": Events where the host domain differs from any participant's domain name
* "own_events": Events where the host is the same as the user's grant
* "participant_only": Events where the user's grant is a participant but not the host
* "all": When all options are included, all events with meeting links will have Notetakers
*/
eventSelection?: Array<'internal' | 'external' | 'all' | 'ownEvents' | 'participantOnly'>;
/**
* Filters to apply based on the number of participants. This is an intersection with the event_selection.
* When null, there are no restrictions on the number of participants for notetaker events.
*/
participantFilter?: CalendarNotetakerParticipantFilter;
}
/**
* Interface for Calendar Notetaker settings
*/
export interface CalendarNotetaker {
/**
* The display name for the Notetaker bot.
* @default "Nylas Notetaker"
*/
name?: string;
/**
* Notetaker Meeting Settings
*/
meetingSettings?: NotetakerMeetingSettings;
/**
* Rules for when the Notetaker should join a meeting.
*/
rules?: CalendarNotetakerRules;
}
/**
* Interface of the query parameters for listing calendars.
*/
export interface ListCalendersQueryParams extends ListQueryParams {
/**
* The maximum number of objects to return.
* This field defaults to 50. The maximum allowed value is 200.
*/
limit?: number;
/**
* An identifier that specifies which page of data to return.
* This value should be taken from the [ListResponse.nextCursor] response field.
*/
pageToken?: string;
/**
* Pass in your metadata key and value pair to search for metadata.
*/
metadataPair?: Record<string, string>;
}
/**
* Interface of a Nylas create calendar request
*/
export interface CreateCalenderRequest {
/**
* Name of the Calendar.
*/
name: string;
/**
* Description of the calendar.
*/
description?: string;
/**
* Geographic location of the calendar as free-form text.
*/
location?: string;
/**
* IANA time zone database formatted string (e.g. America/New_York).
* @see <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">List of tz database time zones</a>
*/
timezone?: string;
/**
* A list of key-value pairs storing additional data.
*/
metadata?: Record<string, string>;
/**
* Notetaker meeting bot settings
*/
notetaker?: CalendarNotetaker;
}
/**
* Interface of a Nylas update calendar request
*/
export interface UpdateCalenderRequest extends Partial<CreateCalenderRequest> {
/**
* The background color of the calendar in the hexadecimal format (e.g. #0099EE).
* Empty indicates default color.
*/
hexColor?: string;
/**
* The background color of the calendar in the hexadecimal format (e.g. #0099EE).
* Empty indicates default color. (Google only)
*/
hexForegroundColor?: string;
}
/**
* Interface of a Nylas calendar object
*/
export interface Calendar {
/**
* Globally unique object identifier.
*/
id: string;
/**
* Grant ID of the Nylas account.
*/
grantId: string;
/**
* Name of the Calendar.
*/
name: string;
/**
* The type of object.
*/
object: string;
/**
* IANA time zone database formatted string (e.g. America/New_York).
* @see <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">List of tz database time zones</a>
*/
timezone: string;
/**
* If the event participants are able to edit the event.
*/
readOnly: boolean;
/**
* If the calendar is owned by the user account.
*/
isOwnedByUser: boolean;
/**
* Description of the calendar.
*/
description?: string;
/**
* Geographic location of the calendar as free-form text.
*/
location?: string;
/**
* The background color of the calendar in the hexadecimal format (e.g. #0099EE).
* Empty indicates default color.
*/
hexColor?: string;
/**
* The background color of the calendar in the hexadecimal format (e.g. #0099EE).
* Empty indicates default color. (Google only)
*/
hexForegroundColor?: string;
/**
* If the calendar is the primary calendar.
*/
isPrimary?: boolean;
/**
* A list of key-value pairs storing additional data.
*/
metadata?: Record<string, unknown>;
/**
* Notetaker meeting bot settings
*/
notetaker?: CalendarNotetaker;
}