Setu Recipes: reusable workflows across every app.Browse templates

Integrations / Outlook Calendar

Outlook Calendar

Read and manage events on your Outlook and Microsoft 365 calendar through Microsoft Graph.

8 actions OAuth 2 3 read4 write1 destructive Calls graph.microsoft.com

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "outlookcalendar" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
Calendars.ReadRead your calendars and events
Calendars.ReadWriteCreate, change, delete and respond to events on your calendars
User.ReadIdentify which Microsoft account you connected
offline_accessStay connected without asking you to sign in again

Actions

Accept event invitationwriteoutlookcalendar.accept_eventAccept a meeting invitation, with an optional comment, and optionally tell the organizer.

Needs scope: Calendars.ReadWrite

InputTypeDescription
event_idstringRequiredEvent ID from list_events
commentstringOptionalOptional note to the organizer
send_responsebooleanOptionalWhether to notify the organizer (default true)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "outlookcalendar.accept_event",
  input: {
    "event_id": "<event_id>"
  },
});
Create eventwriteoutlookcalendar.create_eventCreate an event on the user's default calendar. Attendees, if given, are sent an invitation by email.

Needs scope: Calendars.ReadWrite

InputTypeDescription
subjectstringRequiredEvent title
startobjectRequiredStart date and time with time zone
endobjectRequiredEnd date and time with time zone
bodyobjectOptionalOptional event description
locationobjectOptionalOptional location
attendeesarray of objectOptionalOptional attendees; invitations are emailed to them
TypeScript
await setu.execute({
  userId: "user_1",
  action: "outlookcalendar.create_event",
  input: {
    "subject": "<subject>",
    "start": {},
    "end": {}
  },
});
Decline event invitationwriteoutlookcalendar.decline_eventDecline a meeting invitation, with an optional comment, and optionally tell the organizer.

Needs scope: Calendars.ReadWrite

InputTypeDescription
event_idstringRequiredEvent ID from list_events
commentstringOptionalOptional note to the organizer
send_responsebooleanOptionalWhether to notify the organizer (default true)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "outlookcalendar.decline_event",
  input: {
    "event_id": "<event_id>"
  },
});
Delete eventdestructiveoutlookcalendar.delete_eventDelete an event from the calendar. If you are the organizer of a meeting, a cancellation is sent to the attendees.

Needs scope: Calendars.ReadWrite

InputTypeDescription
event_idstringRequiredEvent ID from list_events
TypeScript
await setu.execute({
  userId: "user_1",
  action: "outlookcalendar.delete_event",
  input: {
    "event_id": "<event_id>"
  },
  confirm: true,
});
Get eventreadoutlookcalendar.get_eventRead one calendar event in full: subject, description as text, times, location, organizer and attendees with their responses.

Needs scope: Calendars.Read

InputTypeDescription
event_idstringRequiredEvent ID from list_events
TypeScript
await setu.execute({
  userId: "user_1",
  action: "outlookcalendar.get_event",
  input: {
    "event_id": "<event_id>"
  },
});
List calendarsreadoutlookcalendar.list_calendarsList the user's calendars with their IDs, names and owners.

Needs scope: Calendars.Read

No input.

TypeScript
await setu.execute({
  userId: "user_1",
  action: "outlookcalendar.list_calendars",
  input: {},
});
List events in a date rangereadoutlookcalendar.list_eventsList events on the user's default calendar between two moments, with recurring events expanded into single occurrences. Times are returned in UTC.

Needs scope: Calendars.Read

InputTypeDescription
start_timestringRequiredStart of the range, ISO 8601, for example 2017-01-01T19:00:00-08:00
end_timestringRequiredEnd of the range, ISO 8601, for example 2017-01-07T19:00:00-08:00
topintegerOptionalMaximum number of events to return
TypeScript
await setu.execute({
  userId: "user_1",
  action: "outlookcalendar.list_events",
  input: {
    "start_time": "<start_time>",
    "end_time": "<end_time>"
  },
});
Update eventwriteoutlookcalendar.update_eventChange fields of an existing event, such as the title, time, location, description or attendees. Only the fields you pass are changed; attendee changes send updates.

Needs scope: Calendars.ReadWrite

InputTypeDescription
event_idstringRequiredEvent ID from list_events
subjectstringOptionalNew title
startobjectOptionalNew start
endobjectOptionalNew end
bodyobjectOptionalOptional event description
locationobjectOptionalOptional location
attendeesarray of objectOptionalOptional attendees; invitations are emailed to them
TypeScript
await setu.execute({
  userId: "user_1",
  action: "outlookcalendar.update_event",
  input: {
    "event_id": "<event_id>"
  },
});