{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/api-evangelist/microsoft-exchange/json-schema/microsoft-exchange-event-schema.json", "title": "Microsoft Exchange Calendar Event", "description": "Represents a calendar event in a user calendar or the default calendar of a Microsoft 365 group as exposed through the Microsoft Graph Calendar API. Supports single-instance events, recurring events, meetings with attendees, and online meetings.", "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the event", "readOnly": true }, "subject": { "type": "string", "description": "The text of the event's subject line" }, "body": { "$ref": "#/$defs/itemBody", "description": "The body of the message associated with the event" }, "bodyPreview": { "type": "string", "description": "The preview of the event body in text format", "readOnly": true }, "start": { "$ref": "#/$defs/dateTimeTimeZone", "description": "The start date, time, and time zone of the event" }, "end": { "$ref": "#/$defs/dateTimeTimeZone", "description": "The end date, time, and time zone of the event" }, "location": { "$ref": "#/$defs/location", "description": "The location of the event" }, "locations": { "type": "array", "items": { "$ref": "#/$defs/location" }, "description": "The locations where the event is held or attended from" }, "attendees": { "type": "array", "items": { "$ref": "#/$defs/attendee" }, "description": "The collection of attendees for the event" }, "organizer": { "$ref": "#/$defs/recipient", "description": "The organizer of the event" }, "isAllDay": { "type": "boolean", "description": "Whether the event lasts all day" }, "isCancelled": { "type": "boolean", "description": "Whether the event has been canceled", "readOnly": true }, "isDraft": { "type": "boolean", "description": "Whether updates have been sent to attendees", "readOnly": true }, "isOnlineMeeting": { "type": "boolean", "description": "Whether this event has online meeting information" }, "isOrganizer": { "type": "boolean", "description": "Whether the calendar owner is the organizer", "readOnly": true }, "isReminderOn": { "type": "boolean", "description": "Whether a reminder alert is set" }, "onlineMeeting": { "$ref": "#/$defs/onlineMeetingInfo", "description": "Details for joining the meeting online" }, "onlineMeetingProvider": { "type": "string", "enum": ["unknown", "teamsForBusiness", "skypeForBusiness", "skypeForConsumer"], "description": "The online meeting service provider" }, "onlineMeetingUrl": { "type": "string", "format": "uri", "description": "URL for an online meeting", "readOnly": true }, "recurrence": { "$ref": "#/$defs/patternedRecurrence", "description": "The recurrence pattern for the event" }, "reminderMinutesBeforeStart": { "type": "integer", "minimum": 0, "description": "Minutes before start that the reminder alert occurs" }, "responseRequested": { "type": "boolean", "description": "Whether the organizer requests a response from invitees" }, "responseStatus": { "$ref": "#/$defs/responseStatus", "description": "The response status of the event" }, "sensitivity": { "type": "string", "enum": ["normal", "personal", "private", "confidential"], "description": "The event sensitivity level" }, "seriesMasterId": { "type": "string", "description": "ID for the recurring series master", "readOnly": true }, "showAs": { "type": "string", "enum": ["free", "tentative", "busy", "oof", "workingElsewhere", "unknown"], "description": "The status to show during the event" }, "type": { "type": "string", "enum": ["singleInstance", "occurrence", "exception", "seriesMaster"], "description": "The event type", "readOnly": true }, "importance": { "type": "string", "enum": ["low", "normal", "high"], "description": "The importance of the event" }, "hasAttachments": { "type": "boolean", "description": "Whether the event has attachments", "readOnly": true }, "categories": { "type": "array", "items": { "type": "string" }, "description": "The categories associated with the event" }, "allowNewTimeProposals": { "type": "boolean", "description": "Whether the organizer allows invitees to propose new times" }, "iCalUId": { "type": "string", "description": "A unique identifier for the event across calendars", "readOnly": true }, "changeKey": { "type": "string", "description": "Identifies the version of the event", "readOnly": true }, "createdDateTime": { "type": "string", "format": "date-time", "description": "When the event was created", "readOnly": true }, "lastModifiedDateTime": { "type": "string", "format": "date-time", "description": "When the event was last changed", "readOnly": true }, "webLink": { "type": "string", "format": "uri", "description": "URL to open the event in Outlook on the web", "readOnly": true }, "transactionId": { "type": "string", "description": "Custom identifier to avoid duplicate event creation on retries" }, "hideAttendees": { "type": "boolean", "description": "When true, each attendee only sees themselves in the meeting request" }, "originalStartTimeZone": { "type": "string", "description": "The start time zone set when the event was created" }, "originalEndTimeZone": { "type": "string", "description": "The end time zone set when the event was created" } }, "required": ["subject", "start", "end"], "$defs": { "attendee": { "type": "object", "description": "An event attendee with response status", "properties": { "emailAddress": { "$ref": "#/$defs/emailAddress" }, "type": { "type": "string", "enum": ["required", "optional", "resource"], "description": "The type of attendee" }, "status": { "$ref": "#/$defs/responseStatus" } } }, "recipient": { "type": "object", "properties": { "emailAddress": { "$ref": "#/$defs/emailAddress" } } }, "emailAddress": { "type": "object", "properties": { "name": { "type": "string", "description": "The display name" }, "address": { "type": "string", "format": "email", "description": "The email address" } } }, "itemBody": { "type": "object", "properties": { "contentType": { "type": "string", "enum": ["text", "html"] }, "content": { "type": "string" } } }, "dateTimeTimeZone": { "type": "object", "description": "Describes a date, time, and time zone", "properties": { "dateTime": { "type": "string", "description": "A date and time in ISO 8601 format" }, "timeZone": { "type": "string", "description": "A time zone name" } }, "required": ["dateTime", "timeZone"] }, "location": { "type": "object", "description": "Represents location information", "properties": { "displayName": { "type": "string", "description": "The name of the location" }, "locationType": { "type": "string", "enum": ["default", "conferenceRoom", "homeAddress", "businessAddress", "geoCoordinates", "streetAddress", "hotel", "restaurant", "localBusiness", "postalAddress"] }, "locationUri": { "type": "string" }, "locationEmailAddress": { "type": "string", "format": "email" }, "address": { "$ref": "#/$defs/physicalAddress" }, "coordinates": { "$ref": "#/$defs/geoCoordinates" } } }, "physicalAddress": { "type": "object", "properties": { "street": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "countryOrRegion": { "type": "string" }, "postalCode": { "type": "string" } } }, "geoCoordinates": { "type": "object", "properties": { "latitude": { "type": "number" }, "longitude": { "type": "number" }, "accuracy": { "type": "number" }, "altitude": { "type": "number" }, "altitudeAccuracy": { "type": "number" } } }, "onlineMeetingInfo": { "type": "object", "description": "Details for joining an online meeting", "properties": { "joinUrl": { "type": "string", "format": "uri", "description": "URL to join the online meeting" }, "conferenceId": { "type": "string" }, "tollNumber": { "type": "string" }, "tollFreeNumbers": { "type": "array", "items": { "type": "string" } }, "quickDial": { "type": "string" } } }, "responseStatus": { "type": "object", "properties": { "response": { "type": "string", "enum": ["none", "organizer", "tentativelyAccepted", "accepted", "declined", "notResponded"] }, "time": { "type": "string", "format": "date-time" } } }, "patternedRecurrence": { "type": "object", "description": "The recurrence pattern and range", "properties": { "pattern": { "$ref": "#/$defs/recurrencePattern" }, "range": { "$ref": "#/$defs/recurrenceRange" } } }, "recurrencePattern": { "type": "object", "properties": { "type": { "type": "string", "enum": ["daily", "weekly", "absoluteMonthly", "relativeMonthly", "absoluteYearly", "relativeYearly"] }, "interval": { "type": "integer", "minimum": 1 }, "month": { "type": "integer", "minimum": 1, "maximum": 12 }, "dayOfMonth": { "type": "integer", "minimum": 1, "maximum": 31 }, "daysOfWeek": { "type": "array", "items": { "type": "string", "enum": ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"] } }, "firstDayOfWeek": { "type": "string", "enum": ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"] }, "index": { "type": "string", "enum": ["first", "second", "third", "fourth", "last"] } } }, "recurrenceRange": { "type": "object", "properties": { "type": { "type": "string", "enum": ["endDate", "noEnd", "numbered"] }, "startDate": { "type": "string", "format": "date" }, "endDate": { "type": "string", "format": "date" }, "recurrenceTimeZone": { "type": "string" }, "numberOfOccurrences": { "type": "integer", "minimum": 1 } } } } }