# OutlookCalendarEvent

**Kind:** Class

**Source:** `Outlook_plugin/src/calendar/calendar.model.ts` (line 37)

**Part of:** [Calendar](subsystem-outlook-plugin-src-calendar)

Main Calendar Event class for creating/updating appointments

`OutlookCalendarEvent` is the calendar model used by the Outlook plugin when an appointment is created or updated. It carries event data between calendar-facing code and the Outlook calendar integration.

## Properties

| Property | Type |
|---|---|
| `'@odata.etag'` | `string` |
| `subject` | `string` |
| `body` | `EventBody` |
| `start` | `DateTimeTimeZone` |
| `end` | `DateTimeTimeZone` |
| `transactionId` | `string` |
| `isAllDay` | `boolean` |
| `id` | `string` |
| `location` | `Location` |
| `locations` | `Location[]` |
| `attendees` | `Attendee[]` |
| `organizer` | `Recipient` |
| `recurrence` | `PatternedRecurrence` |
| `importance` | `Importance` |
| `sensitivity` | `Sensitivity` |
| `showAs` | `FreeBusyStatus` |
| `isCancelled` | `boolean` |
| `isOrganizer` | `boolean` |
| `responseRequested` | `boolean` |
| `seriesMasterId` | `string` |
| `categories` | `string[]` |
| `webLink` | `string` |
| `onlineMeetingUrl` | `string` |
| `isOnlineMeeting` | `boolean` |
| `onlineMeetingProvider` | `OnlineMeetingProviderType` |
| `allowNewTimeProposals` | `boolean` |
| `hideAttendees` | `boolean` |
| `responseStatus` | `ResponseStatus` |
| `reminderMinutesBeforeStart` | `number` |
| `isReminderOn` | `boolean` |
| `hasAttachments` | `boolean` |
| `createdDateTime` | `string` |
| `lastModifiedDateTime` | `string` |

## Diagram

```mermaid
graph LR
  CalendarCode[Calendar-facing code] --> Event[OutlookCalendarEvent]
  Event --> Integration[Outlook calendar integration]
  Integration --> Appointment[Outlook appointment]
```

## Usage

```ts
import { OutlookCalendarEvent } from './calendar.model';

const event = new OutlookCalendarEvent();

Object.assign(event, {
  subject: 'Project review',
  start: new Date().toISOString(),
  end: new Date().toISOString(),
});

// Pass the model to the calendar integration responsible for saving appointments.
await calendarIntegration.save(event);
```

## AI Coding Instructions

- Keep appointment data in `OutlookCalendarEvent` before passing it to calendar integration code.
- Match event field names and value shapes expected by the Outlook calendar endpoint.
- Handle create and update flows through the same model, while preserving identifiers needed for updates.
- Validate date, time, attendee, and recurrence data before sending the event to Outlook.

## Used by

6 references from 6 files. Each is a place in this repository where the symbol is actually used — go read one rather than trusting an example.

### Imported by (6)

- `Calendar` — `Outlook_plugin/src/calendar/calendar.service.ts`:1
- `getAccessTokenStandard` — `Outlook_plugin/src/calendar/calendar.service.backup.ts`:73
- `getAccessTokenStandard` — `Outlook_plugin/src/calendar/calendar.service.optimized.ts`:70
- `getAccessTokenStandard` — `Outlook_plugin/src/calendar/calendar.service.pre-optimization.backup.ts`:70
- `compareImplementations` — `Outlook_plugin/src/calendar/test-calendar-sync.ts`:8
- `handleErrorResponse` — `Outlook_plugin/src/taskpane/taskpane.ts`:69
