Sample code for 30+ languages & platforms
VB.NET

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 VB.NET Downloads

VB.NET
Dim success As Boolean = False

' This example requires the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.

Dim http As New Chilkat.Http

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

Dim jsonToken As New Chilkat.JsonObject
success = jsonToken.LoadFile("qa_data/tokens/msGraphCalendar.json")
If (success = False) Then
    Debug.WriteLine(jsonToken.LastErrorText)
    Exit Sub
End If


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"
'     }
'   ]
' }

Dim json As New Chilkat.JsonObject
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==")
Dim resp As New Chilkat.HttpResponse
success = http.HttpJson("POST","https://graph.microsoft.com/v1.0/me/calendars/{$id}/events",json,"application/json",resp)
If (success = False) Then
    Debug.WriteLine(http.LastErrorText)
    Exit Sub
End If


json.Load(resp.BodyStr)
json.EmitCompact = False

If (resp.StatusCode <> 201) Then
    Debug.WriteLine(json.Emit())
    Debug.WriteLine("Failed, response status code = " & resp.StatusCode)
    Exit Sub
End If


Debug.WriteLine(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

Dim displayName As String
Dim locationType As String
Dim uniqueId As String
Dim uniqueIdType As String
Dim statusResponse As String
Dim statusTime As String
Dim emailAddressName As String
Dim emailAddressAddress As String

Dim odataContext As String = json.StringOf("""@odata.context""")
Dim odataEtag As String = json.StringOf("""@odata.etag""")
Dim id As String = json.StringOf("id")
Dim createdDateTime As String = json.StringOf("createdDateTime")
Dim lastModifiedDateTime As String = json.StringOf("lastModifiedDateTime")
Dim changeKey As String = json.StringOf("changeKey")
Dim originalStartTimeZone As String = json.StringOf("originalStartTimeZone")
Dim originalEndTimeZone As String = json.StringOf("originalEndTimeZone")
Dim iCalUId As String = json.StringOf("iCalUId")
Dim reminderMinutesBeforeStart As String = json.IntOf("reminderMinutesBeforeStart")
Dim isReminderOn As String = json.BoolOf("isReminderOn")
Dim hasAttachments As String = json.BoolOf("hasAttachments")
Dim subject As String = json.StringOf("subject")
Dim bodyPreview As String = json.StringOf("bodyPreview")
Dim importance As String = json.StringOf("importance")
Dim sensitivity As String = json.StringOf("sensitivity")
Dim isAllDay As String = json.BoolOf("isAllDay")
Dim isCancelled As String = json.BoolOf("isCancelled")
Dim isOrganizer As String = json.BoolOf("isOrganizer")
Dim responseRequested As String = json.BoolOf("responseRequested")
Dim seriesMasterId As String = json.StringOf("seriesMasterId")
Dim showAs As String = json.StringOf("showAs")
Dim type As String = json.StringOf("type")
Dim webLink As String = json.StringOf("webLink")
Dim onlineMeetingUrl As String = json.StringOf("onlineMeetingUrl")
Dim recurrence As String = json.StringOf("recurrence")
Dim responseStatusResponse As String = json.StringOf("responseStatus.response")
Dim responseStatusTime As String = json.StringOf("responseStatus.time")
Dim bodyContentType As String = json.StringOf("body.contentType")
Dim bodyContent As String = json.StringOf("body.content")
Dim startDateTime As String = json.StringOf("start.dateTime")
Dim startTimeZone As String = json.StringOf("start.timeZone")
Dim endDateTime As String = json.StringOf("end.dateTime")
Dim endTimeZone As String = json.StringOf("end.timeZone")
Dim locationDisplayName As String = json.StringOf("location.displayName")
Dim locationLocationType As String = json.StringOf("location.locationType")
Dim locationUniqueId As String = json.StringOf("location.uniqueId")
Dim locationUniqueIdType As String = json.StringOf("location.uniqueIdType")
Dim organizerEmailAddressName As String = json.StringOf("organizer.emailAddress.name")
Dim organizerEmailAddressAddress As String = json.StringOf("organizer.emailAddress.address")
Dim i As Integer = 0
Dim count_i As Integer = json.SizeOfArray("categories")
While i < count_i
    json.I = i
    ' ...
    i = i + 1
End While
i = 0
count_i = json.SizeOfArray("locations")
While i < count_i
    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 + 1
End While
i = 0
count_i = json.SizeOfArray("attendees")
While i < count_i
    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 = i + 1
End While

Debug.WriteLine("Success.")