Microsoft Exchange · Arazzo Workflow

Microsoft Exchange Schedule an Event with an Attachment

Version 1.0.0

Create a calendar event, confirm it, then attach a file to it.

1 workflow 1 source API 1 provider
View Spec View on GitHub CalendarCollaborationContactsEmailEnterpriseArazzoWorkflows

Provider

microsoft-exchange

Workflows

schedule-event-with-attachment
Create a calendar event and attach a file to it.
Creates an event with start/end times and an attendee, fetches it to confirm, and adds a file attachment to the event.
3 steps inputs: attachmentContentBytes, attachmentContentType, attachmentName, attendeeAddress, bodyContent, endDateTime, startDateTime, subject, timeZone outputs: attachmentId, eventId
1
createEvent
createEvent
Create an event on the default calendar with subject, body, start/end times, and a required attendee.
2
getEvent
getEvent
Read the created event back to confirm subject and scheduling before attaching content.
3
addAttachment
addEventAttachment
Attach a base64-encoded file to the event using the fileAttachment OData type.

Source API Descriptions

Arazzo Workflow Specification

microsoft-exchange-schedule-event-with-attachment-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Microsoft Exchange Schedule an Event with an Attachment
  summary: Create a calendar event, confirm it, then attach a file to it.
  description: >-
    A meeting setup pattern on Microsoft Graph calendar. The workflow creates an
    event on the user's default calendar with a subject, body, start and end
    times, and an attendee, reads the event back to confirm scheduling, and
    attaches a base64-encoded file to it. Each step inlines its request so the
    flow can be executed without consulting the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: graphCalendarApi
  url: ../openapi/microsoft-exchange-graph-calendar-openapi.yml
  type: openapi
workflows:
- workflowId: schedule-event-with-attachment
  summary: Create a calendar event and attach a file to it.
  description: >-
    Creates an event with start/end times and an attendee, fetches it to
    confirm, and adds a file attachment to the event.
  inputs:
    type: object
    required:
    - subject
    - bodyContent
    - startDateTime
    - endDateTime
    - timeZone
    - attendeeAddress
    - attachmentName
    - attachmentContentType
    - attachmentContentBytes
    properties:
      subject:
        type: string
        description: The event subject line.
      bodyContent:
        type: string
        description: The HTML body content describing the event.
      startDateTime:
        type: string
        description: The event start in ISO 8601 format (e.g. 2026-07-01T15:00:00).
      endDateTime:
        type: string
        description: The event end in ISO 8601 format (e.g. 2026-07-01T16:00:00).
      timeZone:
        type: string
        description: The time zone name for start and end (e.g. Pacific Standard Time).
      attendeeAddress:
        type: string
        description: The email address of the required attendee.
      attachmentName:
        type: string
        description: The display name of the file attachment.
      attachmentContentType:
        type: string
        description: The MIME type of the attachment.
      attachmentContentBytes:
        type: string
        description: The base64-encoded contents of the attachment file.
  steps:
  - stepId: createEvent
    description: >-
      Create an event on the default calendar with subject, body, start/end
      times, and a required attendee.
    operationId: createEvent
    requestBody:
      contentType: application/json
      payload:
        subject: $inputs.subject
        body:
          contentType: html
          content: $inputs.bodyContent
        start:
          dateTime: $inputs.startDateTime
          timeZone: $inputs.timeZone
        end:
          dateTime: $inputs.endDateTime
          timeZone: $inputs.timeZone
        attendees:
        - type: required
          emailAddress:
            address: $inputs.attendeeAddress
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      eventId: $response.body#/id
      webLink: $response.body#/webLink
  - stepId: getEvent
    description: >-
      Read the created event back to confirm subject and scheduling before
      attaching content.
    operationId: getEvent
    parameters:
    - name: event-id
      in: path
      value: $steps.createEvent.outputs.eventId
    - name: $select
      in: query
      value: subject,start,end,isOnlineMeeting
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      subject: $response.body#/subject
  - stepId: addAttachment
    description: >-
      Attach a base64-encoded file to the event using the fileAttachment OData
      type.
    operationId: addEventAttachment
    parameters:
    - name: event-id
      in: path
      value: $steps.createEvent.outputs.eventId
    requestBody:
      contentType: application/json
      payload:
        '@odata.type': '#microsoft.graph.fileAttachment'
        name: $inputs.attachmentName
        contentType: $inputs.attachmentContentType
        contentBytes: $inputs.attachmentContentBytes
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      attachmentId: $response.body#/id
  outputs:
    eventId: $steps.createEvent.outputs.eventId
    attachmentId: $steps.addAttachment.outputs.attachmentId