{
  "entities": [
    {
      "name": "users",
      "description": "Microsoft Graph users",
      "path": "/users",
      "dataPath": "/value",
      "filterParam": "$filter",
      "selectParam": "$select",
      "orderByParam": "$orderby",
      "pagination": {
        "type": "nextLink",
        "limitParam": "$top",
        "nextLinkPath": "/@odata.nextLink",
        "defaultLimit": 100
      },
      "write": false,
      "columns": [
        { "name": "id", "type": "VARCHAR", "primaryKey": true },
        { "name": "displayName", "type": "VARCHAR" },
        { "name": "givenName", "type": "VARCHAR" },
        { "name": "surname", "type": "VARCHAR" },
        { "name": "mail", "type": "VARCHAR" },
        { "name": "userPrincipalName", "type": "VARCHAR" },
        { "name": "jobTitle", "type": "VARCHAR" },
        { "name": "officeLocation", "type": "VARCHAR" },
        { "name": "accountEnabled", "type": "BOOLEAN" }
      ]
    },
    {
      "name": "groups",
      "description": "Microsoft Graph groups",
      "path": "/groups",
      "dataPath": "/value",
      "filterParam": "$filter",
      "selectParam": "$select",
      "orderByParam": "$orderby",
      "pagination": {
        "type": "nextLink",
        "limitParam": "$top",
        "nextLinkPath": "/@odata.nextLink",
        "defaultLimit": 100
      },
      "write": false,
      "columns": [
        { "name": "id", "type": "VARCHAR", "primaryKey": true },
        { "name": "displayName", "type": "VARCHAR" },
        { "name": "description", "type": "VARCHAR" },
        { "name": "mail", "type": "VARCHAR" },
        { "name": "mailEnabled", "type": "BOOLEAN" },
        { "name": "securityEnabled", "type": "BOOLEAN" },
        { "name": "groupTypes", "type": "JSON" }
      ]
    },
    {
      "name": "messages",
      "description": "Signed-in user's mail (delegated Mail.Read; not for client credentials)",
      "path": "/me/messages",
      "dataPath": "/value",
      "filterParam": "$filter",
      "selectParam": "$select",
      "orderByParam": "$orderby",
      "pagination": {
        "type": "nextLink",
        "limitParam": "$top",
        "nextLinkPath": "/@odata.nextLink",
        "defaultLimit": 50
      },
      "write": false,
      "columns": [
        { "name": "id", "type": "VARCHAR", "primaryKey": true },
        { "name": "subject", "type": "VARCHAR" },
        { "name": "bodyPreview", "type": "VARCHAR" },
        { "name": "importance", "type": "VARCHAR" },
        { "name": "isRead", "type": "BOOLEAN" },
        { "name": "hasAttachments", "type": "BOOLEAN" },
        { "name": "receivedDateTime", "type": "VARCHAR" },
        { "name": "sentDateTime", "type": "VARCHAR" },
        { "name": "from_address", "type": "VARCHAR", "jsonPath": "/from/emailAddress/address", "selectName": "from" },
        { "name": "from_name", "type": "VARCHAR", "jsonPath": "/from/emailAddress/name", "selectName": "from" }
      ]
    },
    {
      "name": "calendar_events",
      "description": "Signed-in user's calendar events (delegated Calendars.ReadWrite)",
      "path": "/me/events",
      "dataPath": "/value",
      "filterParam": "$filter",
      "selectParam": "$select",
      "orderByParam": "$orderby",
      "pagination": {
        "type": "nextLink",
        "limitParam": "$top",
        "nextLinkPath": "/@odata.nextLink",
        "defaultLimit": 50
      },
      "update": { "path": "/me/events/{id}", "method": "PATCH" },
      "delete": { "path": "/me/events/{id}", "method": "DELETE" },
      "columns": [
        { "name": "id", "type": "VARCHAR", "primaryKey": true, "jsonPath": "/id", "writePath": null },
        { "name": "subject", "type": "VARCHAR", "jsonPath": "/subject" },
        { "name": "start_dateTime", "type": "VARCHAR", "jsonPath": "/start/dateTime", "selectName": "start" },
        { "name": "start_timeZone", "type": "VARCHAR", "jsonPath": "/start/timeZone", "selectName": "start", "defaultWrite": "Europe/Berlin" },
        { "name": "end_dateTime", "type": "VARCHAR", "jsonPath": "/end/dateTime", "selectName": "end" },
        { "name": "end_timeZone", "type": "VARCHAR", "jsonPath": "/end/timeZone", "selectName": "end", "defaultWrite": "Europe/Berlin" },
        { "name": "body_content", "type": "VARCHAR", "jsonPath": "/body/content", "selectName": "body" },
        { "name": "body_contentType", "type": "VARCHAR", "jsonPath": "/body/contentType", "selectName": "body", "defaultWrite": "Text" },
        { "name": "location_displayName", "type": "VARCHAR", "jsonPath": "/location/displayName", "selectName": "location" },
        { "name": "isAllDay", "type": "BOOLEAN", "jsonPath": "/isAllDay" },
        { "name": "isCancelled", "type": "BOOLEAN", "jsonPath": "/isCancelled", "readOnly": true },
        { "name": "webLink", "type": "VARCHAR", "jsonPath": "/webLink", "readOnly": true }
      ]
    },
    {
      "name": "user_calendar_events",
      "description": "Calendar events for a specific user (application Calendars.ReadWrite)",
      "path": "/users/{userId}/events",
      "dataPath": "/value",
      "filterParam": "$filter",
      "selectParam": "$select",
      "orderByParam": "$orderby",
      "pagination": {
        "type": "nextLink",
        "limitParam": "$top",
        "nextLinkPath": "/@odata.nextLink",
        "defaultLimit": 50
      },
      "update": { "path": "/users/{userId}/events/{id}", "method": "PATCH" },
      "delete": { "path": "/users/{userId}/events/{id}", "method": "DELETE" },
      "columns": [
        { "name": "userId", "type": "VARCHAR", "writePath": null, "readOnly": true },
        { "name": "id", "type": "VARCHAR", "primaryKey": true, "jsonPath": "/id", "writePath": null },
        { "name": "subject", "type": "VARCHAR", "jsonPath": "/subject" },
        { "name": "start_dateTime", "type": "VARCHAR", "jsonPath": "/start/dateTime", "selectName": "start" },
        { "name": "start_timeZone", "type": "VARCHAR", "jsonPath": "/start/timeZone", "selectName": "start", "defaultWrite": "Europe/Berlin" },
        { "name": "end_dateTime", "type": "VARCHAR", "jsonPath": "/end/dateTime", "selectName": "end" },
        { "name": "end_timeZone", "type": "VARCHAR", "jsonPath": "/end/timeZone", "selectName": "end", "defaultWrite": "Europe/Berlin" },
        { "name": "body_content", "type": "VARCHAR", "jsonPath": "/body/content", "selectName": "body" },
        { "name": "body_contentType", "type": "VARCHAR", "jsonPath": "/body/contentType", "selectName": "body", "defaultWrite": "Text" },
        { "name": "location_displayName", "type": "VARCHAR", "jsonPath": "/location/displayName", "selectName": "location" },
        { "name": "isAllDay", "type": "BOOLEAN", "jsonPath": "/isAllDay" },
        { "name": "isCancelled", "type": "BOOLEAN", "jsonPath": "/isCancelled", "readOnly": true },
        { "name": "webLink", "type": "VARCHAR", "jsonPath": "/webLink", "readOnly": true }
      ]
    }
  ]
}
