Sample code for 30+ languages & platforms
Dart Requires Chilkat v11.0.0+

MS Graph Calendar Create Event

See more Microsoft Calendar Examples

Creates a new event in a specified calendar.

For more details, see https://docs.microsoft.com/en-us/graph/api/calendar-post-events?view=graph-rest-1.0

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

  // Use your previously obtained access token as shown here:
  //    Get Microsoft Graph OAuth2 Access Token with Calendars.ReadWrite scope.

  final jsonToken = CkJsonObject();
  try {
    jsonToken.loadFile('qa_data/tokens/msGraphCalendar.json');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  http.authToken = jsonToken.stringOf('access_token');

  // Create a JSON body for the HTTP POST
  // Use this online tool to generate the code from sample JSON: 
  // Generate Code to Create JSON

  // {
  //   "subject": "Let's go for lunch",
  //   "body": {
  //     "contentType": "HTML",
  //     "content": "Does mid month work for you?"
  //   },
  //   "start": {
  //       "dateTime": "2019-11-15T12:00:00",
  //       "timeZone": "Pacific Standard Time"
  //   },
  //   "end": {
  //       "dateTime": "2019-11-15T14:00:00",
  //       "timeZone": "Pacific Standard Time"
  //   },
  //   "location":{
  //       "displayName":"Harry's Bar"
  //   },
  //   "attendees": [
  //     {
  //       "emailAddress": {
  //         "address":"adelev@contoso.onmicrosoft.com",
  //         "name": "Adele Vance"
  //       },
  //       "type": "required"
  //     }
  //   ]
  // }

  final json = CkJsonObject();
  json.updateString('subject', 'Let\'s go for lunch');
  json.updateString('body.contentType', 'HTML');
  json.updateString('body.content', 'Does mid month work for you?');
  json.updateString('start.dateTime', '2019-11-15T12:00:00');
  json.updateString('start.timeZone', 'Pacific Standard Time');
  json.updateString('end.dateTime', '2019-11-15T14:00:00');
  json.updateString('end.timeZone', 'Pacific Standard Time');
  json.updateString('location.displayName', 'Harry\'s Bar');
  json.updateString('attendees[0].emailAddress.address', 'adelev@contoso.onmicrosoft.com');
  json.updateString('attendees[0].emailAddress.name', 'Adele Vance');
  json.updateString('attendees[0].type', 'required');

  // POST the JSON to https://graph.microsoft.com/v1.0/me/calendars/{id}/events
  // This is posting to a calendar in the default calendarGroup.

  // Specify the calendar id
  http.setUrlVar('id', 'AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEGAAAA5_vF7TKKdE6bGCRqXyl2PQAClEpRTgAAAA==');
  final resp = CkHttpResponse();
  try {
    http.httpJson('POST', 'https://graph.microsoft.com/v1.0/me/calendars/{\$id}/events', json, 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  json.load(resp.bodyStr);
  json.emitCompact = false;

  if (resp.statusCode != 201) {
    print(json.emit());
    print('Failed, response status code = ${resp.statusCode}');
    return;
  }

  print(json.emit());

  // A sample response:
  // (See code for parsing this response below..)

  // {
  //   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('admin%40chilkat.io')/calendars('AQMkADAwATM0MDAAMS ... AClEpRTgAAAA%3D%3D')/events/$entity",
  //   "@odata.etag": "W/\"5+vF7TKKdE6bGCRqXyl2PQAClIgmmw==\"",
  //   "id": "AQMkADAwAT ... ApRZ7JkAAAA=",
  //   "createdDateTime": "2019-04-26T14:31:39.8791929Z",
  //   "lastModifiedDateTime": "2019-04-26T14:31:41.2753537Z",
  //   "changeKey": "5+vF7TKKdE6bGCRqXyl2PQAClIgmmw==",
  //   "categories": [
  //   ],
  //   "originalStartTimeZone": "Pacific Standard Time",
  //   "originalEndTimeZone": "Pacific Standard Time",
  //   "iCalUId": "040000008200E00074C5B7101A82E00800000000F05DF1C23CFCD40100000000000000001000000009911D155F71EF42A230FEBFE5F7486A",
  //   "reminderMinutesBeforeStart": 15,
  //   "isReminderOn": true,
  //   "hasAttachments": false,
  //   "subject": "Let's go for lunch",
  //   "bodyPreview": "Does mid month work for you?",
  //   "importance": "normal",
  //   "sensitivity": "normal",
  //   "isAllDay": false,
  //   "isCancelled": false,
  //   "isOrganizer": true,
  //   "responseRequested": true,
  //   "seriesMasterId": null,
  //   "showAs": "busy",
  //   "type": "singleInstance",
  //   "webLink": "https://outlook.live.com/owa/?itemid=AQMkADAwATM0MDAAMS1iNTcwL...pRZ7JkAAAA%3D&exvsurl=1&path=/calendar/item",
  //   "onlineMeetingUrl": null,
  //   "recurrence": null,
  //   "responseStatus": {
  //     "response": "organizer",
  //     "time": "0001-01-01T00:00:00Z"
  //   },
  //   "body": {
  //     "contentType": "html",
  //     "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=us-ascii\">\r\n</head>\r\n<body>\r\nDoes mid month work for you?\r\n</body>\r\n</html>\r\n"
  //   },
  //   "start": {
  //     "dateTime": "2019-11-15T12:00:00.0000000",
  //     "timeZone": "Pacific Standard Time"
  //   },
  //   "end": {
  //     "dateTime": "2019-11-15T14:00:00.0000000",
  //     "timeZone": "Pacific Standard Time"
  //   },
  //   "location": {
  //     "displayName": "Harry's Bar",
  //     "locationType": "default",
  //     "uniqueId": "Harry's Bar",
  //     "uniqueIdType": "private"
  //   },
  //   "locations": [
  //     {
  //       "displayName": "Harry's Bar",
  //       "locationType": "default",
  //       "uniqueId": "Harry's Bar",
  //       "uniqueIdType": "private"
  //     }
  //   ],
  //   "attendees": [
  //     {
  //       "type": "required",
  //       "status": {
  //         "response": "none",
  //         "time": "0001-01-01T00:00:00Z"
  //       },
  //       "emailAddress": {
  //         "name": "Adele Vance",
  //         "address": "adelev@contoso.onmicrosoft.com"
  //       }
  //     }
  //   ],
  //   "organizer": {
  //     "emailAddress": {
  //       "name": "Matt",
  //       "address": "outlook_3A33FCEB9B74CC15@outlook.com"
  //     }
  //   }
  // }
  // 
  // 

  // Use this online tool to generate parsing code from sample JSON: 
  // Generate Parsing Code from JSON

  var displayName = '';
  var locationType = '';
  var uniqueId = '';
  var uniqueIdType = '';
  var statusResponse = '';
  var statusTime = '';
  var emailAddressName = '';
  var emailAddressAddress = '';

  final odataContext = json.stringOf('"@odata.context"');
  final odataEtag = json.stringOf('"@odata.etag"');
  final id = json.stringOf('id');
  final createdDateTime = json.stringOf('createdDateTime');
  final lastModifiedDateTime = json.stringOf('lastModifiedDateTime');
  final changeKey = json.stringOf('changeKey');
  final originalStartTimeZone = json.stringOf('originalStartTimeZone');
  final originalEndTimeZone = json.stringOf('originalEndTimeZone');
  final iCalUId = json.stringOf('iCalUId');
  final reminderMinutesBeforeStart = json.intOf('reminderMinutesBeforeStart');
  final isReminderOn = json.boolOf('isReminderOn');
  final hasAttachments = json.boolOf('hasAttachments');
  final subject = json.stringOf('subject');
  final bodyPreview = json.stringOf('bodyPreview');
  final importance = json.stringOf('importance');
  final sensitivity = json.stringOf('sensitivity');
  final isAllDay = json.boolOf('isAllDay');
  final isCancelled = json.boolOf('isCancelled');
  final isOrganizer = json.boolOf('isOrganizer');
  final responseRequested = json.boolOf('responseRequested');
  final seriesMasterId = json.stringOf('seriesMasterId');
  final showAs = json.stringOf('showAs');
  var type = json.stringOf('type');
  final webLink = json.stringOf('webLink');
  final onlineMeetingUrl = json.stringOf('onlineMeetingUrl');
  final recurrence = json.stringOf('recurrence');
  final responseStatusResponse = json.stringOf('responseStatus.response');
  final responseStatusTime = json.stringOf('responseStatus.time');
  final bodyContentType = json.stringOf('body.contentType');
  final bodyContent = json.stringOf('body.content');
  final startDateTime = json.stringOf('start.dateTime');
  final startTimeZone = json.stringOf('start.timeZone');
  final endDateTime = json.stringOf('end.dateTime');
  final endTimeZone = json.stringOf('end.timeZone');
  final locationDisplayName = json.stringOf('location.displayName');
  final locationLocationType = json.stringOf('location.locationType');
  final locationUniqueId = json.stringOf('location.uniqueId');
  final locationUniqueIdType = json.stringOf('location.uniqueIdType');
  final organizerEmailAddressName = json.stringOf('organizer.emailAddress.name');
  final organizerEmailAddressAddress = json.stringOf('organizer.emailAddress.address');
  var i = 0;
  var countI = json.sizeOfArray('categories');
  while (i < countI) {
    json.i = i;
    // ...
    i++;
  }

  i = 0;
  countI = json.sizeOfArray('locations');
  while (i < countI) {
    json.i = i;
    displayName = json.stringOf('locations[i].displayName');
    locationType = json.stringOf('locations[i].locationType');
    uniqueId = json.stringOf('locations[i].uniqueId');
    uniqueIdType = json.stringOf('locations[i].uniqueIdType');
    i++;
  }

  i = 0;
  countI = json.sizeOfArray('attendees');
  while (i < countI) {
    json.i = i;
    type = json.stringOf('attendees[i].type');
    statusResponse = json.stringOf('attendees[i].status.response');
    statusTime = json.stringOf('attendees[i].status.time');
    emailAddressName = json.stringOf('attendees[i].emailAddress.name');
    emailAddressAddress = json.stringOf('attendees[i].emailAddress.address');
    i++;
  }

  print('Success.');
}