Sample code for 30+ languages & platforms
Xbase++

MS Graph Calendars List

See more Microsoft Calendar Examples

Get all the user's calendars (/calendars navigation property), get the calendars from the default calendar group or from a specific calendar group.

For more details, see https://docs.microsoft.com/en-us/graph/api/user-list-calendars?view=graph-rest-1.0

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL oJsonToken
LOCAL cStrResponse
LOCAL oJson
LOCAL cOdataContext
LOCAL i
LOCAL nCount_i
LOCAL cId
LOCAL cName
LOCAL cColor
LOCAL cChangeKey
LOCAL nCanShare
LOCAL nCanViewPrivateItems
LOCAL nCanEdit
LOCAL cOwnerName
LOCAL cOwnerAddress

nSuccess := 0

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

oHttp := CreateObject("Chilkat.Http")

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

oJsonToken := CreateObject("Chilkat.JsonObject")
nSuccess := oJsonToken:LoadFile("qa_data/tokens/msGraphCalendar.json")
IF (nSuccess == 0)
    ? oJsonToken:LastErrorText
    oHttp:destroy()
    oJsonToken:destroy()
    RETURN
ENDIF

oHttp:AuthToken := oJsonToken:StringOf("access_token")

//  Send a GET request to https://graph.microsoft.com/v1.0/me/calendars
cStrResponse := oHttp:QuickGetStr("https://graph.microsoft.com/v1.0/me/calendars")
IF (oHttp:LastMethodSuccess == 0)
    ? oHttp:LastErrorText
    oHttp:destroy()
    oJsonToken:destroy()
    RETURN
ENDIF

oJson := CreateObject("Chilkat.JsonObject")
oJson:Load(cStrResponse)
oJson:EmitCompact := 0

IF (oHttp:LastStatus != 200)
    ? oJson:Emit()
    ? "Failed, response status code = " + Str(oHttp:LastStatus)
    oHttp:destroy()
    oJsonToken:destroy()
    oJson:destroy()
    RETURN
ENDIF

? oJson:Emit()

//  Sample output:

//  {
//    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('admin%40chilkat.io')/calendars",
//    "value": [
//      {
//        "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEGAAAA5_vF7TKKdE6bGCRqXyl2PQAAAiCsAAAA",
//        "name": "Calendar",
//        "color": "auto",
//        "changeKey": "5+vF7TKKdE6bGCRqXyl2PQAAAAAiEQ==",
//        "canShare": true,
//        "canViewPrivateItems": true,
//        "canEdit": true,
//        "owner": {
//          "name": "...",
//          "address": "outlook_3A33FCEB9B74CC15@outlook.com"
//        }
//      },
//      {
//        "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEGAAAA5_vF7TKKdE6bGCRqXyl2PQAClEpRTgAAAA==",
//        "name": "Work",
//        "color": "auto",
//        "changeKey": "5+vF7TKKdE6bGCRqXyl2PQAClHjDcA==",
//        "canShare": true,
//        "canViewPrivateItems": true,
//        "canEdit": true,
//        "owner": {
//          "name": "...",
//          "address": "outlook_3A33FCEB9B74CC15@outlook.com"
//        }
//      }
//    ]
//  }
//  
//  Use this online tool to generate parsing code from sample JSON: 
//  Generate Parsing Code from JSON

cOdataContext := oJson:StringOf('"@odata.context"')
i := 0
nCount_i := oJson:SizeOfArray("value")
DO WHILE i < nCount_i
    oJson:I := i
    cId := oJson:StringOf("value[i].id")
    cName := oJson:StringOf("value[i].name")
    cColor := oJson:StringOf("value[i].color")
    cChangeKey := oJson:StringOf("value[i].changeKey")
    nCanShare := oJson:BoolOf("value[i].canShare")
    nCanViewPrivateItems := oJson:BoolOf("value[i].canViewPrivateItems")
    nCanEdit := oJson:BoolOf("value[i].canEdit")
    cOwnerName := oJson:StringOf("value[i].owner.name")
    cOwnerAddress := oJson:StringOf("value[i].owner.address")
    i := i + 1
ENDDO

? "Success."

oHttp:destroy()
oJsonToken:destroy()
oJson:destroy()