calendar.acl.delete

valid {
    input.ReqMap.calendarId == STRING
    input.ReqMap.ruleId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.acl.get

valid {
    input.ReqMap.calendarId == STRING
    input.ReqMap.ruleId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.acl.insert

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.role == STRING
    input.Body.scope.type == STRING
    input.Body.scope.value == STRING
    input.ReqMap.calendarId == STRING
    input.Qs.sendNotifications == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.acl.list

valid {
    input.ReqMap.calendarId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.acl.patch

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.role == STRING
    input.Body.scope.type == STRING
    input.Body.scope.value == STRING
    input.ReqMap.calendarId == STRING
    input.ReqMap.ruleId == STRING
    input.Qs.sendNotifications == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.acl.update

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.role == STRING
    input.Body.scope.type == STRING
    input.Body.scope.value == STRING
    input.ReqMap.calendarId == STRING
    input.ReqMap.ruleId == STRING
    input.Qs.sendNotifications == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.acl.watch

valid {
    input.Body.address == STRING
    input.Body.expiration == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.params.STRING == STRING
    input.Body.payload == BOOLEAN
    input.Body.resourceId == STRING
    input.Body.resourceUri == STRING
    input.Body.token == STRING
    input.Body.type == STRING
    input.ReqMap.calendarId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendarList.delete

valid {
    input.ReqMap.calendarId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendarList.get

valid {
    input.ReqMap.calendarId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendarList.insert

valid {
    input.Body.accessRole == STRING
    input.Body.backgroundColor == STRING
    input.Body.colorId == STRING
    input.Body.conferenceProperties.allowedConferenceSolutionTypes[_] == STRING
    input.Body.defaultReminders[_].method == STRING
    input.Body.defaultReminders[_].minutes == INTEGER
    input.Body.deleted == BOOLEAN
    input.Body.description == STRING
    input.Body.etag == STRING
    input.Body.foregroundColor == STRING
    input.Body.hidden == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.notificationSettings.notifications[_].method == STRING
    input.Body.notificationSettings.notifications[_].type == STRING
    input.Body.primary == BOOLEAN
    input.Body.selected == BOOLEAN
    input.Body.summary == STRING
    input.Body.summaryOverride == STRING
    input.Body.timeZone == STRING
    input.Qs.colorRgbFormat == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.calendarList.list

enum_MinAccessRoleParameter := [ "freeBusyReader", "owner", "reader", "writer" ]

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.minAccessRole == enum_MinAccessRoleParameter[_]
    input.Qs.pageToken == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.showHidden == BOOLEAN
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendarList.patch

valid {
    input.Body.accessRole == STRING
    input.Body.backgroundColor == STRING
    input.Body.colorId == STRING
    input.Body.conferenceProperties.allowedConferenceSolutionTypes[_] == STRING
    input.Body.defaultReminders[_].method == STRING
    input.Body.defaultReminders[_].minutes == INTEGER
    input.Body.deleted == BOOLEAN
    input.Body.description == STRING
    input.Body.etag == STRING
    input.Body.foregroundColor == STRING
    input.Body.hidden == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.notificationSettings.notifications[_].method == STRING
    input.Body.notificationSettings.notifications[_].type == STRING
    input.Body.primary == BOOLEAN
    input.Body.selected == BOOLEAN
    input.Body.summary == STRING
    input.Body.summaryOverride == STRING
    input.Body.timeZone == STRING
    input.ReqMap.calendarId == STRING
    input.Qs.colorRgbFormat == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.calendarList.update

valid {
    input.Body.accessRole == STRING
    input.Body.backgroundColor == STRING
    input.Body.colorId == STRING
    input.Body.conferenceProperties.allowedConferenceSolutionTypes[_] == STRING
    input.Body.defaultReminders[_].method == STRING
    input.Body.defaultReminders[_].minutes == INTEGER
    input.Body.deleted == BOOLEAN
    input.Body.description == STRING
    input.Body.etag == STRING
    input.Body.foregroundColor == STRING
    input.Body.hidden == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.notificationSettings.notifications[_].method == STRING
    input.Body.notificationSettings.notifications[_].type == STRING
    input.Body.primary == BOOLEAN
    input.Body.selected == BOOLEAN
    input.Body.summary == STRING
    input.Body.summaryOverride == STRING
    input.Body.timeZone == STRING
    input.ReqMap.calendarId == STRING
    input.Qs.colorRgbFormat == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.calendarList.watch

enum_MinAccessRoleParameter := [ "freeBusyReader", "owner", "reader", "writer" ]

valid {
    input.Body.address == STRING
    input.Body.expiration == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.params.STRING == STRING
    input.Body.payload == BOOLEAN
    input.Body.resourceId == STRING
    input.Body.resourceUri == STRING
    input.Body.token == STRING
    input.Body.type == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.minAccessRole == enum_MinAccessRoleParameter[_]
    input.Qs.pageToken == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.showHidden == BOOLEAN
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendars.clear

valid {
    input.ReqMap.calendarId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendars.delete

valid {
    input.ReqMap.calendarId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendars.get

valid {
    input.ReqMap.calendarId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendars.insert

valid {
    input.Body.conferenceProperties.allowedConferenceSolutionTypes[_] == STRING
    input.Body.description == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.summary == STRING
    input.Body.timeZone == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendars.patch

valid {
    input.Body.conferenceProperties.allowedConferenceSolutionTypes[_] == STRING
    input.Body.description == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.summary == STRING
    input.Body.timeZone == STRING
    input.ReqMap.calendarId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.calendars.update

valid {
    input.Body.conferenceProperties.allowedConferenceSolutionTypes[_] == STRING
    input.Body.description == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.summary == STRING
    input.Body.timeZone == STRING
    input.ReqMap.calendarId == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.channels.stop

valid {
    input.Body.address == STRING
    input.Body.expiration == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.params.STRING == STRING
    input.Body.payload == BOOLEAN
    input.Body.resourceId == STRING
    input.Body.resourceUri == STRING
    input.Body.token == STRING
    input.Body.type == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.colors.get

valid {
    input.ProviderMetadata.Region == STRING
}

calendar.events.delete

enum_SendUpdatesParameter := [ "all", "externalOnly", "none" ]

valid {
    input.ReqMap.calendarId == STRING
    input.ReqMap.eventId == STRING
    input.Qs.sendNotifications == BOOLEAN
    input.Qs.sendUpdates == enum_SendUpdatesParameter[_]
    input.ProviderMetadata.Region == STRING
}

calendar.events.get

valid {
    input.ReqMap.calendarId == STRING
    input.ReqMap.eventId == STRING
    input.Qs.alwaysIncludeEmail == BOOLEAN
    input.Qs.maxAttendees == INTEGER
    input.Qs.timeZone == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.events.import

valid {
    input.Body.anyoneCanAddSelf == BOOLEAN
    input.Body.attachments[_].fileId == STRING
    input.Body.attachments[_].fileUrl == STRING
    input.Body.attachments[_].iconLink == STRING
    input.Body.attachments[_].mimeType == STRING
    input.Body.attachments[_].title == STRING
    input.Body.attendees[_].additionalGuests == INTEGER
    input.Body.attendees[_].comment == STRING
    input.Body.attendees[_].displayName == STRING
    input.Body.attendees[_].email == STRING
    input.Body.attendees[_].id == STRING
    input.Body.attendees[_].optional == BOOLEAN
    input.Body.attendees[_].organizer == BOOLEAN
    input.Body.attendees[_].resource == BOOLEAN
    input.Body.attendees[_].responseStatus == STRING
    input.Body.attendees[_].self == BOOLEAN
    input.Body.attendeesOmitted == BOOLEAN
    input.Body.colorId == STRING
    input.Body.conferenceData.conferenceId == STRING
    input.Body.conferenceData.conferenceSolution.iconUri == STRING
    input.Body.conferenceData.conferenceSolution.key.type == STRING
    input.Body.conferenceData.conferenceSolution.name == STRING
    input.Body.conferenceData.createRequest.conferenceSolutionKey.type == STRING
    input.Body.conferenceData.createRequest.requestId == STRING
    input.Body.conferenceData.createRequest.status.statusCode == STRING
    input.Body.conferenceData.entryPoints[_].accessCode == STRING
    input.Body.conferenceData.entryPoints[_].entryPointFeatures[_] == STRING
    input.Body.conferenceData.entryPoints[_].entryPointType == STRING
    input.Body.conferenceData.entryPoints[_].label == STRING
    input.Body.conferenceData.entryPoints[_].meetingCode == STRING
    input.Body.conferenceData.entryPoints[_].passcode == STRING
    input.Body.conferenceData.entryPoints[_].password == STRING
    input.Body.conferenceData.entryPoints[_].pin == STRING
    input.Body.conferenceData.entryPoints[_].regionCode == STRING
    input.Body.conferenceData.entryPoints[_].uri == STRING
    input.Body.conferenceData.notes == STRING
    input.Body.conferenceData.parameters.addOnParameters.parameters.STRING == STRING
    input.Body.conferenceData.signature == STRING
    input.Body.created == STRING
    input.Body.creator.displayName == STRING
    input.Body.creator.email == STRING
    input.Body.creator.id == STRING
    input.Body.creator.self == BOOLEAN
    input.Body.description == STRING
    input.Body.end.date == STRING
    input.Body.end.dateTime == STRING
    input.Body.end.timeZone == STRING
    input.Body.endTimeUnspecified == BOOLEAN
    input.Body.etag == STRING
    input.Body.eventType == STRING
    input.Body.extendedProperties.private.STRING == STRING
    input.Body.extendedProperties.shared.STRING == STRING
    input.Body.focusTimeProperties.autoDeclineMode == STRING
    input.Body.focusTimeProperties.chatStatus == STRING
    input.Body.focusTimeProperties.declineMessage == STRING
    input.Body.gadget.display == STRING
    input.Body.gadget.height == INTEGER
    input.Body.gadget.iconLink == STRING
    input.Body.gadget.link == STRING
    input.Body.gadget.preferences.STRING == STRING
    input.Body.gadget.title == STRING
    input.Body.gadget.type == STRING
    input.Body.gadget.width == INTEGER
    input.Body.guestsCanInviteOthers == BOOLEAN
    input.Body.guestsCanModify == BOOLEAN
    input.Body.guestsCanSeeOtherGuests == BOOLEAN
    input.Body.hangoutLink == STRING
    input.Body.htmlLink == STRING
    input.Body.iCalUID == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.locked == BOOLEAN
    input.Body.organizer.displayName == STRING
    input.Body.organizer.email == STRING
    input.Body.organizer.id == STRING
    input.Body.organizer.self == BOOLEAN
    input.Body.originalStartTime.date == STRING
    input.Body.originalStartTime.dateTime == STRING
    input.Body.originalStartTime.timeZone == STRING
    input.Body.outOfOfficeProperties.autoDeclineMode == STRING
    input.Body.outOfOfficeProperties.declineMessage == STRING
    input.Body.privateCopy == BOOLEAN
    input.Body.recurrence[_] == STRING
    input.Body.recurringEventId == STRING
    input.Body.reminders.overrides[_].method == STRING
    input.Body.reminders.overrides[_].minutes == INTEGER
    input.Body.reminders.useDefault == BOOLEAN
    input.Body.sequence == INTEGER
    input.Body.source.title == STRING
    input.Body.source.url == STRING
    input.Body.start.date == STRING
    input.Body.start.dateTime == STRING
    input.Body.start.timeZone == STRING
    input.Body.status == STRING
    input.Body.summary == STRING
    input.Body.transparency == STRING
    input.Body.updated == STRING
    input.Body.visibility == STRING
    input.Body.workingLocationProperties.customLocation.label == STRING
    input.Body.workingLocationProperties.homeOffice == ANY
    input.Body.workingLocationProperties.officeLocation.buildingId == STRING
    input.Body.workingLocationProperties.officeLocation.deskId == STRING
    input.Body.workingLocationProperties.officeLocation.floorId == STRING
    input.Body.workingLocationProperties.officeLocation.floorSectionId == STRING
    input.Body.workingLocationProperties.officeLocation.label == STRING
    input.Body.workingLocationProperties.type == STRING
    input.ReqMap.calendarId == STRING
    input.Qs.conferenceDataVersion == INTEGER
    input.Qs.supportsAttachments == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.events.insert

enum_SendUpdatesParameter := [ "all", "externalOnly", "none" ]

valid {
    input.Body.anyoneCanAddSelf == BOOLEAN
    input.Body.attachments[_].fileId == STRING
    input.Body.attachments[_].fileUrl == STRING
    input.Body.attachments[_].iconLink == STRING
    input.Body.attachments[_].mimeType == STRING
    input.Body.attachments[_].title == STRING
    input.Body.attendees[_].additionalGuests == INTEGER
    input.Body.attendees[_].comment == STRING
    input.Body.attendees[_].displayName == STRING
    input.Body.attendees[_].email == STRING
    input.Body.attendees[_].id == STRING
    input.Body.attendees[_].optional == BOOLEAN
    input.Body.attendees[_].organizer == BOOLEAN
    input.Body.attendees[_].resource == BOOLEAN
    input.Body.attendees[_].responseStatus == STRING
    input.Body.attendees[_].self == BOOLEAN
    input.Body.attendeesOmitted == BOOLEAN
    input.Body.colorId == STRING
    input.Body.conferenceData.conferenceId == STRING
    input.Body.conferenceData.conferenceSolution.iconUri == STRING
    input.Body.conferenceData.conferenceSolution.key.type == STRING
    input.Body.conferenceData.conferenceSolution.name == STRING
    input.Body.conferenceData.createRequest.conferenceSolutionKey.type == STRING
    input.Body.conferenceData.createRequest.requestId == STRING
    input.Body.conferenceData.createRequest.status.statusCode == STRING
    input.Body.conferenceData.entryPoints[_].accessCode == STRING
    input.Body.conferenceData.entryPoints[_].entryPointFeatures[_] == STRING
    input.Body.conferenceData.entryPoints[_].entryPointType == STRING
    input.Body.conferenceData.entryPoints[_].label == STRING
    input.Body.conferenceData.entryPoints[_].meetingCode == STRING
    input.Body.conferenceData.entryPoints[_].passcode == STRING
    input.Body.conferenceData.entryPoints[_].password == STRING
    input.Body.conferenceData.entryPoints[_].pin == STRING
    input.Body.conferenceData.entryPoints[_].regionCode == STRING
    input.Body.conferenceData.entryPoints[_].uri == STRING
    input.Body.conferenceData.notes == STRING
    input.Body.conferenceData.parameters.addOnParameters.parameters.STRING == STRING
    input.Body.conferenceData.signature == STRING
    input.Body.created == STRING
    input.Body.creator.displayName == STRING
    input.Body.creator.email == STRING
    input.Body.creator.id == STRING
    input.Body.creator.self == BOOLEAN
    input.Body.description == STRING
    input.Body.end.date == STRING
    input.Body.end.dateTime == STRING
    input.Body.end.timeZone == STRING
    input.Body.endTimeUnspecified == BOOLEAN
    input.Body.etag == STRING
    input.Body.eventType == STRING
    input.Body.extendedProperties.private.STRING == STRING
    input.Body.extendedProperties.shared.STRING == STRING
    input.Body.focusTimeProperties.autoDeclineMode == STRING
    input.Body.focusTimeProperties.chatStatus == STRING
    input.Body.focusTimeProperties.declineMessage == STRING
    input.Body.gadget.display == STRING
    input.Body.gadget.height == INTEGER
    input.Body.gadget.iconLink == STRING
    input.Body.gadget.link == STRING
    input.Body.gadget.preferences.STRING == STRING
    input.Body.gadget.title == STRING
    input.Body.gadget.type == STRING
    input.Body.gadget.width == INTEGER
    input.Body.guestsCanInviteOthers == BOOLEAN
    input.Body.guestsCanModify == BOOLEAN
    input.Body.guestsCanSeeOtherGuests == BOOLEAN
    input.Body.hangoutLink == STRING
    input.Body.htmlLink == STRING
    input.Body.iCalUID == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.locked == BOOLEAN
    input.Body.organizer.displayName == STRING
    input.Body.organizer.email == STRING
    input.Body.organizer.id == STRING
    input.Body.organizer.self == BOOLEAN
    input.Body.originalStartTime.date == STRING
    input.Body.originalStartTime.dateTime == STRING
    input.Body.originalStartTime.timeZone == STRING
    input.Body.outOfOfficeProperties.autoDeclineMode == STRING
    input.Body.outOfOfficeProperties.declineMessage == STRING
    input.Body.privateCopy == BOOLEAN
    input.Body.recurrence[_] == STRING
    input.Body.recurringEventId == STRING
    input.Body.reminders.overrides[_].method == STRING
    input.Body.reminders.overrides[_].minutes == INTEGER
    input.Body.reminders.useDefault == BOOLEAN
    input.Body.sequence == INTEGER
    input.Body.source.title == STRING
    input.Body.source.url == STRING
    input.Body.start.date == STRING
    input.Body.start.dateTime == STRING
    input.Body.start.timeZone == STRING
    input.Body.status == STRING
    input.Body.summary == STRING
    input.Body.transparency == STRING
    input.Body.updated == STRING
    input.Body.visibility == STRING
    input.Body.workingLocationProperties.customLocation.label == STRING
    input.Body.workingLocationProperties.homeOffice == ANY
    input.Body.workingLocationProperties.officeLocation.buildingId == STRING
    input.Body.workingLocationProperties.officeLocation.deskId == STRING
    input.Body.workingLocationProperties.officeLocation.floorId == STRING
    input.Body.workingLocationProperties.officeLocation.floorSectionId == STRING
    input.Body.workingLocationProperties.officeLocation.label == STRING
    input.Body.workingLocationProperties.type == STRING
    input.ReqMap.calendarId == STRING
    input.Qs.conferenceDataVersion == INTEGER
    input.Qs.maxAttendees == INTEGER
    input.Qs.sendNotifications == BOOLEAN
    input.Qs.sendUpdates == enum_SendUpdatesParameter[_]
    input.Qs.supportsAttachments == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.events.instances

valid {
    input.ReqMap.calendarId == STRING
    input.ReqMap.eventId == STRING
    input.Qs.alwaysIncludeEmail == BOOLEAN
    input.Qs.maxAttendees == INTEGER
    input.Qs.maxResults == INTEGER
    input.Qs.originalStart == STRING
    input.Qs.pageToken == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.timeMax == STRING
    input.Qs.timeMin == STRING
    input.Qs.timeZone == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.events.list

enum_EventTypesParameter := [ "default", "focusTime", "outOfOffice", "workingLocation" ]
enum_OrderByParameter := [ "startTime", "updated" ]

valid {
    input.ReqMap.calendarId == STRING
    input.Qs.alwaysIncludeEmail == BOOLEAN
    input.Qs.eventTypes == enum_EventTypesParameter[_]
    input.Qs.iCalUID == STRING
    input.Qs.maxAttendees == INTEGER
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == enum_OrderByParameter[_]
    input.Qs.pageToken == STRING
    input.Qs.privateExtendedProperty == STRING
    input.Qs.q == STRING
    input.Qs.sharedExtendedProperty == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.showHiddenInvitations == BOOLEAN
    input.Qs.singleEvents == BOOLEAN
    input.Qs.syncToken == STRING
    input.Qs.timeMax == STRING
    input.Qs.timeMin == STRING
    input.Qs.timeZone == STRING
    input.Qs.updatedMin == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.events.move

enum_SendUpdatesParameter := [ "all", "externalOnly", "none" ]

valid {
    input.ReqMap.calendarId == STRING
    input.ReqMap.eventId == STRING
    input.Qs.destination == STRING
    input.Qs.sendNotifications == BOOLEAN
    input.Qs.sendUpdates == enum_SendUpdatesParameter[_]
    input.ProviderMetadata.Region == STRING
}

calendar.events.patch

enum_SendUpdatesParameter := [ "all", "externalOnly", "none" ]

valid {
    input.Body.anyoneCanAddSelf == BOOLEAN
    input.Body.attachments[_].fileId == STRING
    input.Body.attachments[_].fileUrl == STRING
    input.Body.attachments[_].iconLink == STRING
    input.Body.attachments[_].mimeType == STRING
    input.Body.attachments[_].title == STRING
    input.Body.attendees[_].additionalGuests == INTEGER
    input.Body.attendees[_].comment == STRING
    input.Body.attendees[_].displayName == STRING
    input.Body.attendees[_].email == STRING
    input.Body.attendees[_].id == STRING
    input.Body.attendees[_].optional == BOOLEAN
    input.Body.attendees[_].organizer == BOOLEAN
    input.Body.attendees[_].resource == BOOLEAN
    input.Body.attendees[_].responseStatus == STRING
    input.Body.attendees[_].self == BOOLEAN
    input.Body.attendeesOmitted == BOOLEAN
    input.Body.colorId == STRING
    input.Body.conferenceData.conferenceId == STRING
    input.Body.conferenceData.conferenceSolution.iconUri == STRING
    input.Body.conferenceData.conferenceSolution.key.type == STRING
    input.Body.conferenceData.conferenceSolution.name == STRING
    input.Body.conferenceData.createRequest.conferenceSolutionKey.type == STRING
    input.Body.conferenceData.createRequest.requestId == STRING
    input.Body.conferenceData.createRequest.status.statusCode == STRING
    input.Body.conferenceData.entryPoints[_].accessCode == STRING
    input.Body.conferenceData.entryPoints[_].entryPointFeatures[_] == STRING
    input.Body.conferenceData.entryPoints[_].entryPointType == STRING
    input.Body.conferenceData.entryPoints[_].label == STRING
    input.Body.conferenceData.entryPoints[_].meetingCode == STRING
    input.Body.conferenceData.entryPoints[_].passcode == STRING
    input.Body.conferenceData.entryPoints[_].password == STRING
    input.Body.conferenceData.entryPoints[_].pin == STRING
    input.Body.conferenceData.entryPoints[_].regionCode == STRING
    input.Body.conferenceData.entryPoints[_].uri == STRING
    input.Body.conferenceData.notes == STRING
    input.Body.conferenceData.parameters.addOnParameters.parameters.STRING == STRING
    input.Body.conferenceData.signature == STRING
    input.Body.created == STRING
    input.Body.creator.displayName == STRING
    input.Body.creator.email == STRING
    input.Body.creator.id == STRING
    input.Body.creator.self == BOOLEAN
    input.Body.description == STRING
    input.Body.end.date == STRING
    input.Body.end.dateTime == STRING
    input.Body.end.timeZone == STRING
    input.Body.endTimeUnspecified == BOOLEAN
    input.Body.etag == STRING
    input.Body.eventType == STRING
    input.Body.extendedProperties.private.STRING == STRING
    input.Body.extendedProperties.shared.STRING == STRING
    input.Body.focusTimeProperties.autoDeclineMode == STRING
    input.Body.focusTimeProperties.chatStatus == STRING
    input.Body.focusTimeProperties.declineMessage == STRING
    input.Body.gadget.display == STRING
    input.Body.gadget.height == INTEGER
    input.Body.gadget.iconLink == STRING
    input.Body.gadget.link == STRING
    input.Body.gadget.preferences.STRING == STRING
    input.Body.gadget.title == STRING
    input.Body.gadget.type == STRING
    input.Body.gadget.width == INTEGER
    input.Body.guestsCanInviteOthers == BOOLEAN
    input.Body.guestsCanModify == BOOLEAN
    input.Body.guestsCanSeeOtherGuests == BOOLEAN
    input.Body.hangoutLink == STRING
    input.Body.htmlLink == STRING
    input.Body.iCalUID == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.locked == BOOLEAN
    input.Body.organizer.displayName == STRING
    input.Body.organizer.email == STRING
    input.Body.organizer.id == STRING
    input.Body.organizer.self == BOOLEAN
    input.Body.originalStartTime.date == STRING
    input.Body.originalStartTime.dateTime == STRING
    input.Body.originalStartTime.timeZone == STRING
    input.Body.outOfOfficeProperties.autoDeclineMode == STRING
    input.Body.outOfOfficeProperties.declineMessage == STRING
    input.Body.privateCopy == BOOLEAN
    input.Body.recurrence[_] == STRING
    input.Body.recurringEventId == STRING
    input.Body.reminders.overrides[_].method == STRING
    input.Body.reminders.overrides[_].minutes == INTEGER
    input.Body.reminders.useDefault == BOOLEAN
    input.Body.sequence == INTEGER
    input.Body.source.title == STRING
    input.Body.source.url == STRING
    input.Body.start.date == STRING
    input.Body.start.dateTime == STRING
    input.Body.start.timeZone == STRING
    input.Body.status == STRING
    input.Body.summary == STRING
    input.Body.transparency == STRING
    input.Body.updated == STRING
    input.Body.visibility == STRING
    input.Body.workingLocationProperties.customLocation.label == STRING
    input.Body.workingLocationProperties.homeOffice == ANY
    input.Body.workingLocationProperties.officeLocation.buildingId == STRING
    input.Body.workingLocationProperties.officeLocation.deskId == STRING
    input.Body.workingLocationProperties.officeLocation.floorId == STRING
    input.Body.workingLocationProperties.officeLocation.floorSectionId == STRING
    input.Body.workingLocationProperties.officeLocation.label == STRING
    input.Body.workingLocationProperties.type == STRING
    input.ReqMap.calendarId == STRING
    input.ReqMap.eventId == STRING
    input.Qs.alwaysIncludeEmail == BOOLEAN
    input.Qs.conferenceDataVersion == INTEGER
    input.Qs.maxAttendees == INTEGER
    input.Qs.sendNotifications == BOOLEAN
    input.Qs.sendUpdates == enum_SendUpdatesParameter[_]
    input.Qs.supportsAttachments == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.events.quickAdd

enum_SendUpdatesParameter := [ "all", "externalOnly", "none" ]

valid {
    input.ReqMap.calendarId == STRING
    input.Qs.sendNotifications == BOOLEAN
    input.Qs.sendUpdates == enum_SendUpdatesParameter[_]
    input.Qs.text == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.events.update

enum_SendUpdatesParameter := [ "all", "externalOnly", "none" ]

valid {
    input.Body.anyoneCanAddSelf == BOOLEAN
    input.Body.attachments[_].fileId == STRING
    input.Body.attachments[_].fileUrl == STRING
    input.Body.attachments[_].iconLink == STRING
    input.Body.attachments[_].mimeType == STRING
    input.Body.attachments[_].title == STRING
    input.Body.attendees[_].additionalGuests == INTEGER
    input.Body.attendees[_].comment == STRING
    input.Body.attendees[_].displayName == STRING
    input.Body.attendees[_].email == STRING
    input.Body.attendees[_].id == STRING
    input.Body.attendees[_].optional == BOOLEAN
    input.Body.attendees[_].organizer == BOOLEAN
    input.Body.attendees[_].resource == BOOLEAN
    input.Body.attendees[_].responseStatus == STRING
    input.Body.attendees[_].self == BOOLEAN
    input.Body.attendeesOmitted == BOOLEAN
    input.Body.colorId == STRING
    input.Body.conferenceData.conferenceId == STRING
    input.Body.conferenceData.conferenceSolution.iconUri == STRING
    input.Body.conferenceData.conferenceSolution.key.type == STRING
    input.Body.conferenceData.conferenceSolution.name == STRING
    input.Body.conferenceData.createRequest.conferenceSolutionKey.type == STRING
    input.Body.conferenceData.createRequest.requestId == STRING
    input.Body.conferenceData.createRequest.status.statusCode == STRING
    input.Body.conferenceData.entryPoints[_].accessCode == STRING
    input.Body.conferenceData.entryPoints[_].entryPointFeatures[_] == STRING
    input.Body.conferenceData.entryPoints[_].entryPointType == STRING
    input.Body.conferenceData.entryPoints[_].label == STRING
    input.Body.conferenceData.entryPoints[_].meetingCode == STRING
    input.Body.conferenceData.entryPoints[_].passcode == STRING
    input.Body.conferenceData.entryPoints[_].password == STRING
    input.Body.conferenceData.entryPoints[_].pin == STRING
    input.Body.conferenceData.entryPoints[_].regionCode == STRING
    input.Body.conferenceData.entryPoints[_].uri == STRING
    input.Body.conferenceData.notes == STRING
    input.Body.conferenceData.parameters.addOnParameters.parameters.STRING == STRING
    input.Body.conferenceData.signature == STRING
    input.Body.created == STRING
    input.Body.creator.displayName == STRING
    input.Body.creator.email == STRING
    input.Body.creator.id == STRING
    input.Body.creator.self == BOOLEAN
    input.Body.description == STRING
    input.Body.end.date == STRING
    input.Body.end.dateTime == STRING
    input.Body.end.timeZone == STRING
    input.Body.endTimeUnspecified == BOOLEAN
    input.Body.etag == STRING
    input.Body.eventType == STRING
    input.Body.extendedProperties.private.STRING == STRING
    input.Body.extendedProperties.shared.STRING == STRING
    input.Body.focusTimeProperties.autoDeclineMode == STRING
    input.Body.focusTimeProperties.chatStatus == STRING
    input.Body.focusTimeProperties.declineMessage == STRING
    input.Body.gadget.display == STRING
    input.Body.gadget.height == INTEGER
    input.Body.gadget.iconLink == STRING
    input.Body.gadget.link == STRING
    input.Body.gadget.preferences.STRING == STRING
    input.Body.gadget.title == STRING
    input.Body.gadget.type == STRING
    input.Body.gadget.width == INTEGER
    input.Body.guestsCanInviteOthers == BOOLEAN
    input.Body.guestsCanModify == BOOLEAN
    input.Body.guestsCanSeeOtherGuests == BOOLEAN
    input.Body.hangoutLink == STRING
    input.Body.htmlLink == STRING
    input.Body.iCalUID == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.location == STRING
    input.Body.locked == BOOLEAN
    input.Body.organizer.displayName == STRING
    input.Body.organizer.email == STRING
    input.Body.organizer.id == STRING
    input.Body.organizer.self == BOOLEAN
    input.Body.originalStartTime.date == STRING
    input.Body.originalStartTime.dateTime == STRING
    input.Body.originalStartTime.timeZone == STRING
    input.Body.outOfOfficeProperties.autoDeclineMode == STRING
    input.Body.outOfOfficeProperties.declineMessage == STRING
    input.Body.privateCopy == BOOLEAN
    input.Body.recurrence[_] == STRING
    input.Body.recurringEventId == STRING
    input.Body.reminders.overrides[_].method == STRING
    input.Body.reminders.overrides[_].minutes == INTEGER
    input.Body.reminders.useDefault == BOOLEAN
    input.Body.sequence == INTEGER
    input.Body.source.title == STRING
    input.Body.source.url == STRING
    input.Body.start.date == STRING
    input.Body.start.dateTime == STRING
    input.Body.start.timeZone == STRING
    input.Body.status == STRING
    input.Body.summary == STRING
    input.Body.transparency == STRING
    input.Body.updated == STRING
    input.Body.visibility == STRING
    input.Body.workingLocationProperties.customLocation.label == STRING
    input.Body.workingLocationProperties.homeOffice == ANY
    input.Body.workingLocationProperties.officeLocation.buildingId == STRING
    input.Body.workingLocationProperties.officeLocation.deskId == STRING
    input.Body.workingLocationProperties.officeLocation.floorId == STRING
    input.Body.workingLocationProperties.officeLocation.floorSectionId == STRING
    input.Body.workingLocationProperties.officeLocation.label == STRING
    input.Body.workingLocationProperties.type == STRING
    input.ReqMap.calendarId == STRING
    input.ReqMap.eventId == STRING
    input.Qs.alwaysIncludeEmail == BOOLEAN
    input.Qs.conferenceDataVersion == INTEGER
    input.Qs.maxAttendees == INTEGER
    input.Qs.sendNotifications == BOOLEAN
    input.Qs.sendUpdates == enum_SendUpdatesParameter[_]
    input.Qs.supportsAttachments == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

calendar.events.watch

enum_EventTypesParameter := [ "default", "focusTime", "outOfOffice", "workingLocation" ]
enum_OrderByParameter := [ "startTime", "updated" ]

valid {
    input.Body.address == STRING
    input.Body.expiration == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.params.STRING == STRING
    input.Body.payload == BOOLEAN
    input.Body.resourceId == STRING
    input.Body.resourceUri == STRING
    input.Body.token == STRING
    input.Body.type == STRING
    input.ReqMap.calendarId == STRING
    input.Qs.alwaysIncludeEmail == BOOLEAN
    input.Qs.eventTypes == enum_EventTypesParameter[_]
    input.Qs.iCalUID == STRING
    input.Qs.maxAttendees == INTEGER
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == enum_OrderByParameter[_]
    input.Qs.pageToken == STRING
    input.Qs.privateExtendedProperty == STRING
    input.Qs.q == STRING
    input.Qs.sharedExtendedProperty == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.showHiddenInvitations == BOOLEAN
    input.Qs.singleEvents == BOOLEAN
    input.Qs.syncToken == STRING
    input.Qs.timeMax == STRING
    input.Qs.timeMin == STRING
    input.Qs.timeZone == STRING
    input.Qs.updatedMin == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.freebusy.query

valid {
    input.Body.calendarExpansionMax == INTEGER
    input.Body.groupExpansionMax == INTEGER
    input.Body.items[_].id == STRING
    input.Body.timeMax == STRING
    input.Body.timeMin == STRING
    input.Body.timeZone == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.settings.get

valid {
    input.ReqMap.setting == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.settings.list

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}

calendar.settings.watch

valid {
    input.Body.address == STRING
    input.Body.expiration == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.params.STRING == STRING
    input.Body.payload == BOOLEAN
    input.Body.resourceId == STRING
    input.Body.resourceUri == STRING
    input.Body.token == STRING
    input.Body.type == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}