people.contactGroups.batchGet

valid {
    input.Qs.groupFields == STRING
    input.Qs.maxMembers == INTEGER
    input.Qs.resourceNames == STRING
    input.ProviderMetadata.Region == STRING
}

people.contactGroups.create

valid {
    input.Body.contactGroup.clientData[_].key == STRING
    input.Body.contactGroup.clientData[_].value == STRING
    input.Body.contactGroup.etag == STRING
    input.Body.contactGroup.name == STRING
    input.Body.contactGroup.resourceName == STRING
    input.Body.readGroupFields == STRING
    input.ProviderMetadata.Region == STRING
}

people.contactGroups.delete

valid {
    input.ReqMap.resourceName == STRING
    input.Qs.deleteContacts == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

people.contactGroups.get

valid {
    input.ReqMap.resourceName == STRING
    input.Qs.groupFields == STRING
    input.Qs.maxMembers == INTEGER
    input.ProviderMetadata.Region == STRING
}

people.contactGroups.list

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

people.contactGroups.members.modify

valid {
    input.Body.resourceNamesToAdd[_] == STRING
    input.Body.resourceNamesToRemove[_] == STRING
    input.ReqMap.resourceName == STRING
    input.ProviderMetadata.Region == STRING
}

people.contactGroups.update

valid {
    input.Body.contactGroup.clientData[_].key == STRING
    input.Body.contactGroup.clientData[_].value == STRING
    input.Body.contactGroup.etag == STRING
    input.Body.contactGroup.name == STRING
    input.Body.contactGroup.resourceName == STRING
    input.Body.readGroupFields == STRING
    input.Body.updateGroupFields == STRING
    input.ReqMap.resourceName == STRING
    input.ProviderMetadata.Region == STRING
}

people.otherContacts.copyOtherContactToMyContactsGroup

enum_CopyOtherContactToMyContactsGroupRequestSources := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.Body.copyMask == STRING
    input.Body.readMask == STRING
    input.Body.sources[_] == enum_CopyOtherContactToMyContactsGroupRequestSources[_]
    input.ReqMap.resourceName == STRING
    input.ProviderMetadata.Region == STRING
}

people.otherContacts.list

enum_SourcesParameter := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.readMask == STRING
    input.Qs.requestSyncToken == BOOLEAN
    input.Qs.sources == enum_SourcesParameter[_]
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}

people.otherContacts.search

valid {
    input.Qs.pageSize == INTEGER
    input.Qs.query == STRING
    input.Qs.readMask == STRING
    input.ProviderMetadata.Region == STRING
}

people.people.batchCreateContacts

enum_BatchCreateContactsRequestSources := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]
enum_BiographyContentType := [ "CONTENT_TYPE_UNSPECIFIED", "TEXT_PLAIN", "TEXT_HTML" ]
enum_MiscKeywordType := [ "TYPE_UNSPECIFIED", "OUTLOOK_BILLING_INFORMATION", "OUTLOOK_DIRECTORY_SERVER", "OUTLOOK_KEYWORD", "OUTLOOK_MILEAGE", "OUTLOOK_PRIORITY", "OUTLOOK_SENSITIVITY", "OUTLOOK_SUBJECT", "OUTLOOK_USER", "HOME", "WORK", "OTHER" ]
enum_NicknameType := [ "DEFAULT", "MAIDEN_NAME", "INITIALS", "GPLUS", "OTHER_NAME", "ALTERNATE_NAME", "SHORT_NAME" ]
enum_SourceType := [ "SOURCE_TYPE_UNSPECIFIED", "ACCOUNT", "PROFILE", "DOMAIN_PROFILE", "CONTACT", "OTHER_CONTACT", "DOMAIN_CONTACT" ]

valid {
    input.Body.contacts[_].contactPerson.addresses[_].city == STRING
    input.Body.contacts[_].contactPerson.addresses[_].country == STRING
    input.Body.contacts[_].contactPerson.addresses[_].countryCode == STRING
    input.Body.contacts[_].contactPerson.addresses[_].extendedAddress == STRING
    input.Body.contacts[_].contactPerson.addresses[_].formattedValue == STRING
    input.Body.contacts[_].contactPerson.addresses[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.addresses[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.addresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.addresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.addresses[_].poBox == STRING
    input.Body.contacts[_].contactPerson.addresses[_].postalCode == STRING
    input.Body.contacts[_].contactPerson.addresses[_].region == STRING
    input.Body.contacts[_].contactPerson.addresses[_].streetAddress == STRING
    input.Body.contacts[_].contactPerson.addresses[_].type == STRING
    input.Body.contacts[_].contactPerson.biographies[_].contentType == enum_BiographyContentType[_]
    input.Body.contacts[_].contactPerson.biographies[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.biographies[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.biographies[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.biographies[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.biographies[_].value == STRING
    input.Body.contacts[_].contactPerson.birthdays[_].date.day == INTEGER
    input.Body.contacts[_].contactPerson.birthdays[_].date.month == INTEGER
    input.Body.contacts[_].contactPerson.birthdays[_].date.year == INTEGER
    input.Body.contacts[_].contactPerson.birthdays[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.birthdays[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.birthdays[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.birthdays[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.birthdays[_].text == STRING
    input.Body.contacts[_].contactPerson.braggingRights[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.braggingRights[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.braggingRights[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.braggingRights[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.braggingRights[_].value == STRING
    input.Body.contacts[_].contactPerson.calendarUrls[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.calendarUrls[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.calendarUrls[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.calendarUrls[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.calendarUrls[_].type == STRING
    input.Body.contacts[_].contactPerson.calendarUrls[_].url == STRING
    input.Body.contacts[_].contactPerson.clientData[_].key == STRING
    input.Body.contacts[_].contactPerson.clientData[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.clientData[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.clientData[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.clientData[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.clientData[_].value == STRING
    input.Body.contacts[_].contactPerson.emailAddresses[_].displayName == STRING
    input.Body.contacts[_].contactPerson.emailAddresses[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.emailAddresses[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.emailAddresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.emailAddresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.emailAddresses[_].type == STRING
    input.Body.contacts[_].contactPerson.emailAddresses[_].value == STRING
    input.Body.contacts[_].contactPerson.etag == STRING
    input.Body.contacts[_].contactPerson.events[_].date.day == INTEGER
    input.Body.contacts[_].contactPerson.events[_].date.month == INTEGER
    input.Body.contacts[_].contactPerson.events[_].date.year == INTEGER
    input.Body.contacts[_].contactPerson.events[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.events[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.events[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.events[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.events[_].type == STRING
    input.Body.contacts[_].contactPerson.externalIds[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.externalIds[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.externalIds[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.externalIds[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.externalIds[_].type == STRING
    input.Body.contacts[_].contactPerson.externalIds[_].value == STRING
    input.Body.contacts[_].contactPerson.fileAses[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.fileAses[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.fileAses[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.fileAses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.fileAses[_].value == STRING
    input.Body.contacts[_].contactPerson.genders[_].addressMeAs == STRING
    input.Body.contacts[_].contactPerson.genders[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.genders[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.genders[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.genders[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.genders[_].value == STRING
    input.Body.contacts[_].contactPerson.imClients[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.imClients[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.imClients[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.imClients[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.imClients[_].protocol == STRING
    input.Body.contacts[_].contactPerson.imClients[_].type == STRING
    input.Body.contacts[_].contactPerson.imClients[_].username == STRING
    input.Body.contacts[_].contactPerson.interests[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.interests[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.interests[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.interests[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.interests[_].value == STRING
    input.Body.contacts[_].contactPerson.locales[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.locales[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.locales[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.locales[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.locales[_].value == STRING
    input.Body.contacts[_].contactPerson.locations[_].buildingId == STRING
    input.Body.contacts[_].contactPerson.locations[_].current == BOOLEAN
    input.Body.contacts[_].contactPerson.locations[_].deskCode == STRING
    input.Body.contacts[_].contactPerson.locations[_].floor == STRING
    input.Body.contacts[_].contactPerson.locations[_].floorSection == STRING
    input.Body.contacts[_].contactPerson.locations[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.locations[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.locations[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.locations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.locations[_].type == STRING
    input.Body.contacts[_].contactPerson.locations[_].value == STRING
    input.Body.contacts[_].contactPerson.memberships[_].contactGroupMembership.contactGroupResourceName == STRING
    input.Body.contacts[_].contactPerson.memberships[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.memberships[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.memberships[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.memberships[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.miscKeywords[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.miscKeywords[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.miscKeywords[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.miscKeywords[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.miscKeywords[_].type == enum_MiscKeywordType[_]
    input.Body.contacts[_].contactPerson.miscKeywords[_].value == STRING
    input.Body.contacts[_].contactPerson.names[_].familyName == STRING
    input.Body.contacts[_].contactPerson.names[_].givenName == STRING
    input.Body.contacts[_].contactPerson.names[_].honorificPrefix == STRING
    input.Body.contacts[_].contactPerson.names[_].honorificSuffix == STRING
    input.Body.contacts[_].contactPerson.names[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.names[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.names[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.names[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.names[_].middleName == STRING
    input.Body.contacts[_].contactPerson.names[_].phoneticFamilyName == STRING
    input.Body.contacts[_].contactPerson.names[_].phoneticFullName == STRING
    input.Body.contacts[_].contactPerson.names[_].phoneticGivenName == STRING
    input.Body.contacts[_].contactPerson.names[_].phoneticHonorificPrefix == STRING
    input.Body.contacts[_].contactPerson.names[_].phoneticHonorificSuffix == STRING
    input.Body.contacts[_].contactPerson.names[_].phoneticMiddleName == STRING
    input.Body.contacts[_].contactPerson.names[_].unstructuredName == STRING
    input.Body.contacts[_].contactPerson.nicknames[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.nicknames[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.nicknames[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.nicknames[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.nicknames[_].type == enum_NicknameType[_]
    input.Body.contacts[_].contactPerson.nicknames[_].value == STRING
    input.Body.contacts[_].contactPerson.occupations[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.occupations[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.occupations[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.occupations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.occupations[_].value == STRING
    input.Body.contacts[_].contactPerson.organizations[_].costCenter == STRING
    input.Body.contacts[_].contactPerson.organizations[_].current == BOOLEAN
    input.Body.contacts[_].contactPerson.organizations[_].department == STRING
    input.Body.contacts[_].contactPerson.organizations[_].domain == STRING
    input.Body.contacts[_].contactPerson.organizations[_].endDate.day == INTEGER
    input.Body.contacts[_].contactPerson.organizations[_].endDate.month == INTEGER
    input.Body.contacts[_].contactPerson.organizations[_].endDate.year == INTEGER
    input.Body.contacts[_].contactPerson.organizations[_].fullTimeEquivalentMillipercent == INTEGER
    input.Body.contacts[_].contactPerson.organizations[_].jobDescription == STRING
    input.Body.contacts[_].contactPerson.organizations[_].location == STRING
    input.Body.contacts[_].contactPerson.organizations[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.organizations[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.organizations[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.organizations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.organizations[_].name == STRING
    input.Body.contacts[_].contactPerson.organizations[_].phoneticName == STRING
    input.Body.contacts[_].contactPerson.organizations[_].startDate.day == INTEGER
    input.Body.contacts[_].contactPerson.organizations[_].startDate.month == INTEGER
    input.Body.contacts[_].contactPerson.organizations[_].startDate.year == INTEGER
    input.Body.contacts[_].contactPerson.organizations[_].symbol == STRING
    input.Body.contacts[_].contactPerson.organizations[_].title == STRING
    input.Body.contacts[_].contactPerson.organizations[_].type == STRING
    input.Body.contacts[_].contactPerson.phoneNumbers[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.phoneNumbers[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.phoneNumbers[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.phoneNumbers[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.phoneNumbers[_].type == STRING
    input.Body.contacts[_].contactPerson.phoneNumbers[_].value == STRING
    input.Body.contacts[_].contactPerson.relations[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.relations[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.relations[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.relations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.relations[_].person == STRING
    input.Body.contacts[_].contactPerson.relations[_].type == STRING
    input.Body.contacts[_].contactPerson.residences[_].current == BOOLEAN
    input.Body.contacts[_].contactPerson.residences[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.residences[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.residences[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.residences[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.residences[_].value == STRING
    input.Body.contacts[_].contactPerson.resourceName == STRING
    input.Body.contacts[_].contactPerson.sipAddresses[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.sipAddresses[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.sipAddresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.sipAddresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.sipAddresses[_].type == STRING
    input.Body.contacts[_].contactPerson.sipAddresses[_].value == STRING
    input.Body.contacts[_].contactPerson.skills[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.skills[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.skills[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.skills[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.skills[_].value == STRING
    input.Body.contacts[_].contactPerson.urls[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.urls[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.urls[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.urls[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.urls[_].type == STRING
    input.Body.contacts[_].contactPerson.urls[_].value == STRING
    input.Body.contacts[_].contactPerson.userDefined[_].key == STRING
    input.Body.contacts[_].contactPerson.userDefined[_].metadata.source.etag == STRING
    input.Body.contacts[_].contactPerson.userDefined[_].metadata.source.id == STRING
    input.Body.contacts[_].contactPerson.userDefined[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts[_].contactPerson.userDefined[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts[_].contactPerson.userDefined[_].value == STRING
    input.Body.readMask == STRING
    input.Body.sources[_] == enum_BatchCreateContactsRequestSources[_]
    input.ProviderMetadata.Region == STRING
}

people.people.batchDeleteContacts

valid {
    input.Body.resourceNames[_] == STRING
    input.ProviderMetadata.Region == STRING
}

people.people.batchUpdateContacts

enum_BatchUpdateContactsRequestSources := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]
enum_BiographyContentType := [ "CONTENT_TYPE_UNSPECIFIED", "TEXT_PLAIN", "TEXT_HTML" ]
enum_MiscKeywordType := [ "TYPE_UNSPECIFIED", "OUTLOOK_BILLING_INFORMATION", "OUTLOOK_DIRECTORY_SERVER", "OUTLOOK_KEYWORD", "OUTLOOK_MILEAGE", "OUTLOOK_PRIORITY", "OUTLOOK_SENSITIVITY", "OUTLOOK_SUBJECT", "OUTLOOK_USER", "HOME", "WORK", "OTHER" ]
enum_NicknameType := [ "DEFAULT", "MAIDEN_NAME", "INITIALS", "GPLUS", "OTHER_NAME", "ALTERNATE_NAME", "SHORT_NAME" ]
enum_SourceType := [ "SOURCE_TYPE_UNSPECIFIED", "ACCOUNT", "PROFILE", "DOMAIN_PROFILE", "CONTACT", "OTHER_CONTACT", "DOMAIN_CONTACT" ]

valid {
    input.Body.contacts.STRING.addresses[_].city == STRING
    input.Body.contacts.STRING.addresses[_].country == STRING
    input.Body.contacts.STRING.addresses[_].countryCode == STRING
    input.Body.contacts.STRING.addresses[_].extendedAddress == STRING
    input.Body.contacts.STRING.addresses[_].formattedValue == STRING
    input.Body.contacts.STRING.addresses[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.addresses[_].metadata.source.id == STRING
    input.Body.contacts.STRING.addresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.addresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.addresses[_].poBox == STRING
    input.Body.contacts.STRING.addresses[_].postalCode == STRING
    input.Body.contacts.STRING.addresses[_].region == STRING
    input.Body.contacts.STRING.addresses[_].streetAddress == STRING
    input.Body.contacts.STRING.addresses[_].type == STRING
    input.Body.contacts.STRING.biographies[_].contentType == enum_BiographyContentType[_]
    input.Body.contacts.STRING.biographies[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.biographies[_].metadata.source.id == STRING
    input.Body.contacts.STRING.biographies[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.biographies[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.biographies[_].value == STRING
    input.Body.contacts.STRING.birthdays[_].date.day == INTEGER
    input.Body.contacts.STRING.birthdays[_].date.month == INTEGER
    input.Body.contacts.STRING.birthdays[_].date.year == INTEGER
    input.Body.contacts.STRING.birthdays[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.birthdays[_].metadata.source.id == STRING
    input.Body.contacts.STRING.birthdays[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.birthdays[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.birthdays[_].text == STRING
    input.Body.contacts.STRING.braggingRights[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.braggingRights[_].metadata.source.id == STRING
    input.Body.contacts.STRING.braggingRights[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.braggingRights[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.braggingRights[_].value == STRING
    input.Body.contacts.STRING.calendarUrls[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.calendarUrls[_].metadata.source.id == STRING
    input.Body.contacts.STRING.calendarUrls[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.calendarUrls[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.calendarUrls[_].type == STRING
    input.Body.contacts.STRING.calendarUrls[_].url == STRING
    input.Body.contacts.STRING.clientData[_].key == STRING
    input.Body.contacts.STRING.clientData[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.clientData[_].metadata.source.id == STRING
    input.Body.contacts.STRING.clientData[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.clientData[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.clientData[_].value == STRING
    input.Body.contacts.STRING.emailAddresses[_].displayName == STRING
    input.Body.contacts.STRING.emailAddresses[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.emailAddresses[_].metadata.source.id == STRING
    input.Body.contacts.STRING.emailAddresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.emailAddresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.emailAddresses[_].type == STRING
    input.Body.contacts.STRING.emailAddresses[_].value == STRING
    input.Body.contacts.STRING.etag == STRING
    input.Body.contacts.STRING.events[_].date.day == INTEGER
    input.Body.contacts.STRING.events[_].date.month == INTEGER
    input.Body.contacts.STRING.events[_].date.year == INTEGER
    input.Body.contacts.STRING.events[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.events[_].metadata.source.id == STRING
    input.Body.contacts.STRING.events[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.events[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.events[_].type == STRING
    input.Body.contacts.STRING.externalIds[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.externalIds[_].metadata.source.id == STRING
    input.Body.contacts.STRING.externalIds[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.externalIds[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.externalIds[_].type == STRING
    input.Body.contacts.STRING.externalIds[_].value == STRING
    input.Body.contacts.STRING.fileAses[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.fileAses[_].metadata.source.id == STRING
    input.Body.contacts.STRING.fileAses[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.fileAses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.fileAses[_].value == STRING
    input.Body.contacts.STRING.genders[_].addressMeAs == STRING
    input.Body.contacts.STRING.genders[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.genders[_].metadata.source.id == STRING
    input.Body.contacts.STRING.genders[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.genders[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.genders[_].value == STRING
    input.Body.contacts.STRING.imClients[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.imClients[_].metadata.source.id == STRING
    input.Body.contacts.STRING.imClients[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.imClients[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.imClients[_].protocol == STRING
    input.Body.contacts.STRING.imClients[_].type == STRING
    input.Body.contacts.STRING.imClients[_].username == STRING
    input.Body.contacts.STRING.interests[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.interests[_].metadata.source.id == STRING
    input.Body.contacts.STRING.interests[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.interests[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.interests[_].value == STRING
    input.Body.contacts.STRING.locales[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.locales[_].metadata.source.id == STRING
    input.Body.contacts.STRING.locales[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.locales[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.locales[_].value == STRING
    input.Body.contacts.STRING.locations[_].buildingId == STRING
    input.Body.contacts.STRING.locations[_].current == BOOLEAN
    input.Body.contacts.STRING.locations[_].deskCode == STRING
    input.Body.contacts.STRING.locations[_].floor == STRING
    input.Body.contacts.STRING.locations[_].floorSection == STRING
    input.Body.contacts.STRING.locations[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.locations[_].metadata.source.id == STRING
    input.Body.contacts.STRING.locations[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.locations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.locations[_].type == STRING
    input.Body.contacts.STRING.locations[_].value == STRING
    input.Body.contacts.STRING.memberships[_].contactGroupMembership.contactGroupResourceName == STRING
    input.Body.contacts.STRING.memberships[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.memberships[_].metadata.source.id == STRING
    input.Body.contacts.STRING.memberships[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.memberships[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.miscKeywords[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.miscKeywords[_].metadata.source.id == STRING
    input.Body.contacts.STRING.miscKeywords[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.miscKeywords[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.miscKeywords[_].type == enum_MiscKeywordType[_]
    input.Body.contacts.STRING.miscKeywords[_].value == STRING
    input.Body.contacts.STRING.names[_].familyName == STRING
    input.Body.contacts.STRING.names[_].givenName == STRING
    input.Body.contacts.STRING.names[_].honorificPrefix == STRING
    input.Body.contacts.STRING.names[_].honorificSuffix == STRING
    input.Body.contacts.STRING.names[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.names[_].metadata.source.id == STRING
    input.Body.contacts.STRING.names[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.names[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.names[_].middleName == STRING
    input.Body.contacts.STRING.names[_].phoneticFamilyName == STRING
    input.Body.contacts.STRING.names[_].phoneticFullName == STRING
    input.Body.contacts.STRING.names[_].phoneticGivenName == STRING
    input.Body.contacts.STRING.names[_].phoneticHonorificPrefix == STRING
    input.Body.contacts.STRING.names[_].phoneticHonorificSuffix == STRING
    input.Body.contacts.STRING.names[_].phoneticMiddleName == STRING
    input.Body.contacts.STRING.names[_].unstructuredName == STRING
    input.Body.contacts.STRING.nicknames[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.nicknames[_].metadata.source.id == STRING
    input.Body.contacts.STRING.nicknames[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.nicknames[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.nicknames[_].type == enum_NicknameType[_]
    input.Body.contacts.STRING.nicknames[_].value == STRING
    input.Body.contacts.STRING.occupations[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.occupations[_].metadata.source.id == STRING
    input.Body.contacts.STRING.occupations[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.occupations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.occupations[_].value == STRING
    input.Body.contacts.STRING.organizations[_].costCenter == STRING
    input.Body.contacts.STRING.organizations[_].current == BOOLEAN
    input.Body.contacts.STRING.organizations[_].department == STRING
    input.Body.contacts.STRING.organizations[_].domain == STRING
    input.Body.contacts.STRING.organizations[_].endDate.day == INTEGER
    input.Body.contacts.STRING.organizations[_].endDate.month == INTEGER
    input.Body.contacts.STRING.organizations[_].endDate.year == INTEGER
    input.Body.contacts.STRING.organizations[_].fullTimeEquivalentMillipercent == INTEGER
    input.Body.contacts.STRING.organizations[_].jobDescription == STRING
    input.Body.contacts.STRING.organizations[_].location == STRING
    input.Body.contacts.STRING.organizations[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.organizations[_].metadata.source.id == STRING
    input.Body.contacts.STRING.organizations[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.organizations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.organizations[_].name == STRING
    input.Body.contacts.STRING.organizations[_].phoneticName == STRING
    input.Body.contacts.STRING.organizations[_].startDate.day == INTEGER
    input.Body.contacts.STRING.organizations[_].startDate.month == INTEGER
    input.Body.contacts.STRING.organizations[_].startDate.year == INTEGER
    input.Body.contacts.STRING.organizations[_].symbol == STRING
    input.Body.contacts.STRING.organizations[_].title == STRING
    input.Body.contacts.STRING.organizations[_].type == STRING
    input.Body.contacts.STRING.phoneNumbers[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.phoneNumbers[_].metadata.source.id == STRING
    input.Body.contacts.STRING.phoneNumbers[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.phoneNumbers[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.phoneNumbers[_].type == STRING
    input.Body.contacts.STRING.phoneNumbers[_].value == STRING
    input.Body.contacts.STRING.relations[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.relations[_].metadata.source.id == STRING
    input.Body.contacts.STRING.relations[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.relations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.relations[_].person == STRING
    input.Body.contacts.STRING.relations[_].type == STRING
    input.Body.contacts.STRING.residences[_].current == BOOLEAN
    input.Body.contacts.STRING.residences[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.residences[_].metadata.source.id == STRING
    input.Body.contacts.STRING.residences[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.residences[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.residences[_].value == STRING
    input.Body.contacts.STRING.resourceName == STRING
    input.Body.contacts.STRING.sipAddresses[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.sipAddresses[_].metadata.source.id == STRING
    input.Body.contacts.STRING.sipAddresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.sipAddresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.sipAddresses[_].type == STRING
    input.Body.contacts.STRING.sipAddresses[_].value == STRING
    input.Body.contacts.STRING.skills[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.skills[_].metadata.source.id == STRING
    input.Body.contacts.STRING.skills[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.skills[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.skills[_].value == STRING
    input.Body.contacts.STRING.urls[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.urls[_].metadata.source.id == STRING
    input.Body.contacts.STRING.urls[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.urls[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.urls[_].type == STRING
    input.Body.contacts.STRING.urls[_].value == STRING
    input.Body.contacts.STRING.userDefined[_].key == STRING
    input.Body.contacts.STRING.userDefined[_].metadata.source.etag == STRING
    input.Body.contacts.STRING.userDefined[_].metadata.source.id == STRING
    input.Body.contacts.STRING.userDefined[_].metadata.source.type == enum_SourceType[_]
    input.Body.contacts.STRING.userDefined[_].metadata.sourcePrimary == BOOLEAN
    input.Body.contacts.STRING.userDefined[_].value == STRING
    input.Body.readMask == STRING
    input.Body.sources[_] == enum_BatchUpdateContactsRequestSources[_]
    input.Body.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

people.people.connections.list

enum_SortOrderParameter := [ "LAST_MODIFIED_ASCENDING", "LAST_MODIFIED_DESCENDING", "FIRST_NAME_ASCENDING", "LAST_NAME_ASCENDING" ]
enum_SourcesParameter := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.ReqMap.resourceName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.personFields == STRING
    input.Qs.requestMask.includeField == STRING
    input.Qs.requestSyncToken == BOOLEAN
    input.Qs.sortOrder == enum_SortOrderParameter[_]
    input.Qs.sources == enum_SourcesParameter[_]
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}

people.people.createContact

enum_BiographyContentType := [ "CONTENT_TYPE_UNSPECIFIED", "TEXT_PLAIN", "TEXT_HTML" ]
enum_MiscKeywordType := [ "TYPE_UNSPECIFIED", "OUTLOOK_BILLING_INFORMATION", "OUTLOOK_DIRECTORY_SERVER", "OUTLOOK_KEYWORD", "OUTLOOK_MILEAGE", "OUTLOOK_PRIORITY", "OUTLOOK_SENSITIVITY", "OUTLOOK_SUBJECT", "OUTLOOK_USER", "HOME", "WORK", "OTHER" ]
enum_NicknameType := [ "DEFAULT", "MAIDEN_NAME", "INITIALS", "GPLUS", "OTHER_NAME", "ALTERNATE_NAME", "SHORT_NAME" ]
enum_SourceType := [ "SOURCE_TYPE_UNSPECIFIED", "ACCOUNT", "PROFILE", "DOMAIN_PROFILE", "CONTACT", "OTHER_CONTACT", "DOMAIN_CONTACT" ]
enum_SourcesParameter := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.Body.addresses[_].city == STRING
    input.Body.addresses[_].country == STRING
    input.Body.addresses[_].countryCode == STRING
    input.Body.addresses[_].extendedAddress == STRING
    input.Body.addresses[_].formattedValue == STRING
    input.Body.addresses[_].metadata.source.etag == STRING
    input.Body.addresses[_].metadata.source.id == STRING
    input.Body.addresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.addresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.addresses[_].poBox == STRING
    input.Body.addresses[_].postalCode == STRING
    input.Body.addresses[_].region == STRING
    input.Body.addresses[_].streetAddress == STRING
    input.Body.addresses[_].type == STRING
    input.Body.biographies[_].contentType == enum_BiographyContentType[_]
    input.Body.biographies[_].metadata.source.etag == STRING
    input.Body.biographies[_].metadata.source.id == STRING
    input.Body.biographies[_].metadata.source.type == enum_SourceType[_]
    input.Body.biographies[_].metadata.sourcePrimary == BOOLEAN
    input.Body.biographies[_].value == STRING
    input.Body.birthdays[_].date.day == INTEGER
    input.Body.birthdays[_].date.month == INTEGER
    input.Body.birthdays[_].date.year == INTEGER
    input.Body.birthdays[_].metadata.source.etag == STRING
    input.Body.birthdays[_].metadata.source.id == STRING
    input.Body.birthdays[_].metadata.source.type == enum_SourceType[_]
    input.Body.birthdays[_].metadata.sourcePrimary == BOOLEAN
    input.Body.birthdays[_].text == STRING
    input.Body.braggingRights[_].metadata.source.etag == STRING
    input.Body.braggingRights[_].metadata.source.id == STRING
    input.Body.braggingRights[_].metadata.source.type == enum_SourceType[_]
    input.Body.braggingRights[_].metadata.sourcePrimary == BOOLEAN
    input.Body.braggingRights[_].value == STRING
    input.Body.calendarUrls[_].metadata.source.etag == STRING
    input.Body.calendarUrls[_].metadata.source.id == STRING
    input.Body.calendarUrls[_].metadata.source.type == enum_SourceType[_]
    input.Body.calendarUrls[_].metadata.sourcePrimary == BOOLEAN
    input.Body.calendarUrls[_].type == STRING
    input.Body.calendarUrls[_].url == STRING
    input.Body.clientData[_].key == STRING
    input.Body.clientData[_].metadata.source.etag == STRING
    input.Body.clientData[_].metadata.source.id == STRING
    input.Body.clientData[_].metadata.source.type == enum_SourceType[_]
    input.Body.clientData[_].metadata.sourcePrimary == BOOLEAN
    input.Body.clientData[_].value == STRING
    input.Body.emailAddresses[_].displayName == STRING
    input.Body.emailAddresses[_].metadata.source.etag == STRING
    input.Body.emailAddresses[_].metadata.source.id == STRING
    input.Body.emailAddresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.emailAddresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.emailAddresses[_].type == STRING
    input.Body.emailAddresses[_].value == STRING
    input.Body.etag == STRING
    input.Body.events[_].date.day == INTEGER
    input.Body.events[_].date.month == INTEGER
    input.Body.events[_].date.year == INTEGER
    input.Body.events[_].metadata.source.etag == STRING
    input.Body.events[_].metadata.source.id == STRING
    input.Body.events[_].metadata.source.type == enum_SourceType[_]
    input.Body.events[_].metadata.sourcePrimary == BOOLEAN
    input.Body.events[_].type == STRING
    input.Body.externalIds[_].metadata.source.etag == STRING
    input.Body.externalIds[_].metadata.source.id == STRING
    input.Body.externalIds[_].metadata.source.type == enum_SourceType[_]
    input.Body.externalIds[_].metadata.sourcePrimary == BOOLEAN
    input.Body.externalIds[_].type == STRING
    input.Body.externalIds[_].value == STRING
    input.Body.fileAses[_].metadata.source.etag == STRING
    input.Body.fileAses[_].metadata.source.id == STRING
    input.Body.fileAses[_].metadata.source.type == enum_SourceType[_]
    input.Body.fileAses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.fileAses[_].value == STRING
    input.Body.genders[_].addressMeAs == STRING
    input.Body.genders[_].metadata.source.etag == STRING
    input.Body.genders[_].metadata.source.id == STRING
    input.Body.genders[_].metadata.source.type == enum_SourceType[_]
    input.Body.genders[_].metadata.sourcePrimary == BOOLEAN
    input.Body.genders[_].value == STRING
    input.Body.imClients[_].metadata.source.etag == STRING
    input.Body.imClients[_].metadata.source.id == STRING
    input.Body.imClients[_].metadata.source.type == enum_SourceType[_]
    input.Body.imClients[_].metadata.sourcePrimary == BOOLEAN
    input.Body.imClients[_].protocol == STRING
    input.Body.imClients[_].type == STRING
    input.Body.imClients[_].username == STRING
    input.Body.interests[_].metadata.source.etag == STRING
    input.Body.interests[_].metadata.source.id == STRING
    input.Body.interests[_].metadata.source.type == enum_SourceType[_]
    input.Body.interests[_].metadata.sourcePrimary == BOOLEAN
    input.Body.interests[_].value == STRING
    input.Body.locales[_].metadata.source.etag == STRING
    input.Body.locales[_].metadata.source.id == STRING
    input.Body.locales[_].metadata.source.type == enum_SourceType[_]
    input.Body.locales[_].metadata.sourcePrimary == BOOLEAN
    input.Body.locales[_].value == STRING
    input.Body.locations[_].buildingId == STRING
    input.Body.locations[_].current == BOOLEAN
    input.Body.locations[_].deskCode == STRING
    input.Body.locations[_].floor == STRING
    input.Body.locations[_].floorSection == STRING
    input.Body.locations[_].metadata.source.etag == STRING
    input.Body.locations[_].metadata.source.id == STRING
    input.Body.locations[_].metadata.source.type == enum_SourceType[_]
    input.Body.locations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.locations[_].type == STRING
    input.Body.locations[_].value == STRING
    input.Body.memberships[_].contactGroupMembership.contactGroupResourceName == STRING
    input.Body.memberships[_].metadata.source.etag == STRING
    input.Body.memberships[_].metadata.source.id == STRING
    input.Body.memberships[_].metadata.source.type == enum_SourceType[_]
    input.Body.memberships[_].metadata.sourcePrimary == BOOLEAN
    input.Body.miscKeywords[_].metadata.source.etag == STRING
    input.Body.miscKeywords[_].metadata.source.id == STRING
    input.Body.miscKeywords[_].metadata.source.type == enum_SourceType[_]
    input.Body.miscKeywords[_].metadata.sourcePrimary == BOOLEAN
    input.Body.miscKeywords[_].type == enum_MiscKeywordType[_]
    input.Body.miscKeywords[_].value == STRING
    input.Body.names[_].familyName == STRING
    input.Body.names[_].givenName == STRING
    input.Body.names[_].honorificPrefix == STRING
    input.Body.names[_].honorificSuffix == STRING
    input.Body.names[_].metadata.source.etag == STRING
    input.Body.names[_].metadata.source.id == STRING
    input.Body.names[_].metadata.source.type == enum_SourceType[_]
    input.Body.names[_].metadata.sourcePrimary == BOOLEAN
    input.Body.names[_].middleName == STRING
    input.Body.names[_].phoneticFamilyName == STRING
    input.Body.names[_].phoneticFullName == STRING
    input.Body.names[_].phoneticGivenName == STRING
    input.Body.names[_].phoneticHonorificPrefix == STRING
    input.Body.names[_].phoneticHonorificSuffix == STRING
    input.Body.names[_].phoneticMiddleName == STRING
    input.Body.names[_].unstructuredName == STRING
    input.Body.nicknames[_].metadata.source.etag == STRING
    input.Body.nicknames[_].metadata.source.id == STRING
    input.Body.nicknames[_].metadata.source.type == enum_SourceType[_]
    input.Body.nicknames[_].metadata.sourcePrimary == BOOLEAN
    input.Body.nicknames[_].type == enum_NicknameType[_]
    input.Body.nicknames[_].value == STRING
    input.Body.occupations[_].metadata.source.etag == STRING
    input.Body.occupations[_].metadata.source.id == STRING
    input.Body.occupations[_].metadata.source.type == enum_SourceType[_]
    input.Body.occupations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.occupations[_].value == STRING
    input.Body.organizations[_].costCenter == STRING
    input.Body.organizations[_].current == BOOLEAN
    input.Body.organizations[_].department == STRING
    input.Body.organizations[_].domain == STRING
    input.Body.organizations[_].endDate.day == INTEGER
    input.Body.organizations[_].endDate.month == INTEGER
    input.Body.organizations[_].endDate.year == INTEGER
    input.Body.organizations[_].fullTimeEquivalentMillipercent == INTEGER
    input.Body.organizations[_].jobDescription == STRING
    input.Body.organizations[_].location == STRING
    input.Body.organizations[_].metadata.source.etag == STRING
    input.Body.organizations[_].metadata.source.id == STRING
    input.Body.organizations[_].metadata.source.type == enum_SourceType[_]
    input.Body.organizations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.organizations[_].name == STRING
    input.Body.organizations[_].phoneticName == STRING
    input.Body.organizations[_].startDate.day == INTEGER
    input.Body.organizations[_].startDate.month == INTEGER
    input.Body.organizations[_].startDate.year == INTEGER
    input.Body.organizations[_].symbol == STRING
    input.Body.organizations[_].title == STRING
    input.Body.organizations[_].type == STRING
    input.Body.phoneNumbers[_].metadata.source.etag == STRING
    input.Body.phoneNumbers[_].metadata.source.id == STRING
    input.Body.phoneNumbers[_].metadata.source.type == enum_SourceType[_]
    input.Body.phoneNumbers[_].metadata.sourcePrimary == BOOLEAN
    input.Body.phoneNumbers[_].type == STRING
    input.Body.phoneNumbers[_].value == STRING
    input.Body.relations[_].metadata.source.etag == STRING
    input.Body.relations[_].metadata.source.id == STRING
    input.Body.relations[_].metadata.source.type == enum_SourceType[_]
    input.Body.relations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.relations[_].person == STRING
    input.Body.relations[_].type == STRING
    input.Body.residences[_].current == BOOLEAN
    input.Body.residences[_].metadata.source.etag == STRING
    input.Body.residences[_].metadata.source.id == STRING
    input.Body.residences[_].metadata.source.type == enum_SourceType[_]
    input.Body.residences[_].metadata.sourcePrimary == BOOLEAN
    input.Body.residences[_].value == STRING
    input.Body.resourceName == STRING
    input.Body.sipAddresses[_].metadata.source.etag == STRING
    input.Body.sipAddresses[_].metadata.source.id == STRING
    input.Body.sipAddresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.sipAddresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.sipAddresses[_].type == STRING
    input.Body.sipAddresses[_].value == STRING
    input.Body.skills[_].metadata.source.etag == STRING
    input.Body.skills[_].metadata.source.id == STRING
    input.Body.skills[_].metadata.source.type == enum_SourceType[_]
    input.Body.skills[_].metadata.sourcePrimary == BOOLEAN
    input.Body.skills[_].value == STRING
    input.Body.urls[_].metadata.source.etag == STRING
    input.Body.urls[_].metadata.source.id == STRING
    input.Body.urls[_].metadata.source.type == enum_SourceType[_]
    input.Body.urls[_].metadata.sourcePrimary == BOOLEAN
    input.Body.urls[_].type == STRING
    input.Body.urls[_].value == STRING
    input.Body.userDefined[_].key == STRING
    input.Body.userDefined[_].metadata.source.etag == STRING
    input.Body.userDefined[_].metadata.source.id == STRING
    input.Body.userDefined[_].metadata.source.type == enum_SourceType[_]
    input.Body.userDefined[_].metadata.sourcePrimary == BOOLEAN
    input.Body.userDefined[_].value == STRING
    input.Qs.personFields == STRING
    input.Qs.sources == enum_SourcesParameter[_]
    input.ProviderMetadata.Region == STRING
}

people.people.deleteContact

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

people.people.deleteContactPhoto

enum_SourcesParameter := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.ReqMap.resourceName == STRING
    input.Qs.personFields == STRING
    input.Qs.sources == enum_SourcesParameter[_]
    input.ProviderMetadata.Region == STRING
}

people.people.get

enum_SourcesParameter := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.ReqMap.resourceName == STRING
    input.Qs.personFields == STRING
    input.Qs.requestMask.includeField == STRING
    input.Qs.sources == enum_SourcesParameter[_]
    input.ProviderMetadata.Region == STRING
}

people.people.getBatchGet

enum_SourcesParameter := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.Qs.personFields == STRING
    input.Qs.requestMask.includeField == STRING
    input.Qs.resourceNames == STRING
    input.Qs.sources == enum_SourcesParameter[_]
    input.ProviderMetadata.Region == STRING
}

people.people.listDirectoryPeople

enum_MergeSourcesParameter := [ "DIRECTORY_MERGE_SOURCE_TYPE_UNSPECIFIED", "DIRECTORY_MERGE_SOURCE_TYPE_CONTACT" ]
enum_SourcesParameter := [ "DIRECTORY_SOURCE_TYPE_UNSPECIFIED", "DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT", "DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE" ]

valid {
    input.Qs.mergeSources == enum_MergeSourcesParameter[_]
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.readMask == STRING
    input.Qs.requestSyncToken == BOOLEAN
    input.Qs.sources == enum_SourcesParameter[_]
    input.Qs.syncToken == STRING
    input.ProviderMetadata.Region == STRING
}

people.people.searchContacts

enum_SourcesParameter := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.Qs.pageSize == INTEGER
    input.Qs.query == STRING
    input.Qs.readMask == STRING
    input.Qs.sources == enum_SourcesParameter[_]
    input.ProviderMetadata.Region == STRING
}

people.people.searchDirectoryPeople

enum_MergeSourcesParameter := [ "DIRECTORY_MERGE_SOURCE_TYPE_UNSPECIFIED", "DIRECTORY_MERGE_SOURCE_TYPE_CONTACT" ]
enum_SourcesParameter := [ "DIRECTORY_SOURCE_TYPE_UNSPECIFIED", "DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT", "DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE" ]

valid {
    input.Qs.mergeSources == enum_MergeSourcesParameter[_]
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.query == STRING
    input.Qs.readMask == STRING
    input.Qs.sources == enum_SourcesParameter[_]
    input.ProviderMetadata.Region == STRING
}

people.people.updateContact

enum_BiographyContentType := [ "CONTENT_TYPE_UNSPECIFIED", "TEXT_PLAIN", "TEXT_HTML" ]
enum_MiscKeywordType := [ "TYPE_UNSPECIFIED", "OUTLOOK_BILLING_INFORMATION", "OUTLOOK_DIRECTORY_SERVER", "OUTLOOK_KEYWORD", "OUTLOOK_MILEAGE", "OUTLOOK_PRIORITY", "OUTLOOK_SENSITIVITY", "OUTLOOK_SUBJECT", "OUTLOOK_USER", "HOME", "WORK", "OTHER" ]
enum_NicknameType := [ "DEFAULT", "MAIDEN_NAME", "INITIALS", "GPLUS", "OTHER_NAME", "ALTERNATE_NAME", "SHORT_NAME" ]
enum_SourceType := [ "SOURCE_TYPE_UNSPECIFIED", "ACCOUNT", "PROFILE", "DOMAIN_PROFILE", "CONTACT", "OTHER_CONTACT", "DOMAIN_CONTACT" ]
enum_SourcesParameter := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.Body.addresses[_].city == STRING
    input.Body.addresses[_].country == STRING
    input.Body.addresses[_].countryCode == STRING
    input.Body.addresses[_].extendedAddress == STRING
    input.Body.addresses[_].formattedValue == STRING
    input.Body.addresses[_].metadata.source.etag == STRING
    input.Body.addresses[_].metadata.source.id == STRING
    input.Body.addresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.addresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.addresses[_].poBox == STRING
    input.Body.addresses[_].postalCode == STRING
    input.Body.addresses[_].region == STRING
    input.Body.addresses[_].streetAddress == STRING
    input.Body.addresses[_].type == STRING
    input.Body.biographies[_].contentType == enum_BiographyContentType[_]
    input.Body.biographies[_].metadata.source.etag == STRING
    input.Body.biographies[_].metadata.source.id == STRING
    input.Body.biographies[_].metadata.source.type == enum_SourceType[_]
    input.Body.biographies[_].metadata.sourcePrimary == BOOLEAN
    input.Body.biographies[_].value == STRING
    input.Body.birthdays[_].date.day == INTEGER
    input.Body.birthdays[_].date.month == INTEGER
    input.Body.birthdays[_].date.year == INTEGER
    input.Body.birthdays[_].metadata.source.etag == STRING
    input.Body.birthdays[_].metadata.source.id == STRING
    input.Body.birthdays[_].metadata.source.type == enum_SourceType[_]
    input.Body.birthdays[_].metadata.sourcePrimary == BOOLEAN
    input.Body.birthdays[_].text == STRING
    input.Body.braggingRights[_].metadata.source.etag == STRING
    input.Body.braggingRights[_].metadata.source.id == STRING
    input.Body.braggingRights[_].metadata.source.type == enum_SourceType[_]
    input.Body.braggingRights[_].metadata.sourcePrimary == BOOLEAN
    input.Body.braggingRights[_].value == STRING
    input.Body.calendarUrls[_].metadata.source.etag == STRING
    input.Body.calendarUrls[_].metadata.source.id == STRING
    input.Body.calendarUrls[_].metadata.source.type == enum_SourceType[_]
    input.Body.calendarUrls[_].metadata.sourcePrimary == BOOLEAN
    input.Body.calendarUrls[_].type == STRING
    input.Body.calendarUrls[_].url == STRING
    input.Body.clientData[_].key == STRING
    input.Body.clientData[_].metadata.source.etag == STRING
    input.Body.clientData[_].metadata.source.id == STRING
    input.Body.clientData[_].metadata.source.type == enum_SourceType[_]
    input.Body.clientData[_].metadata.sourcePrimary == BOOLEAN
    input.Body.clientData[_].value == STRING
    input.Body.emailAddresses[_].displayName == STRING
    input.Body.emailAddresses[_].metadata.source.etag == STRING
    input.Body.emailAddresses[_].metadata.source.id == STRING
    input.Body.emailAddresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.emailAddresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.emailAddresses[_].type == STRING
    input.Body.emailAddresses[_].value == STRING
    input.Body.etag == STRING
    input.Body.events[_].date.day == INTEGER
    input.Body.events[_].date.month == INTEGER
    input.Body.events[_].date.year == INTEGER
    input.Body.events[_].metadata.source.etag == STRING
    input.Body.events[_].metadata.source.id == STRING
    input.Body.events[_].metadata.source.type == enum_SourceType[_]
    input.Body.events[_].metadata.sourcePrimary == BOOLEAN
    input.Body.events[_].type == STRING
    input.Body.externalIds[_].metadata.source.etag == STRING
    input.Body.externalIds[_].metadata.source.id == STRING
    input.Body.externalIds[_].metadata.source.type == enum_SourceType[_]
    input.Body.externalIds[_].metadata.sourcePrimary == BOOLEAN
    input.Body.externalIds[_].type == STRING
    input.Body.externalIds[_].value == STRING
    input.Body.fileAses[_].metadata.source.etag == STRING
    input.Body.fileAses[_].metadata.source.id == STRING
    input.Body.fileAses[_].metadata.source.type == enum_SourceType[_]
    input.Body.fileAses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.fileAses[_].value == STRING
    input.Body.genders[_].addressMeAs == STRING
    input.Body.genders[_].metadata.source.etag == STRING
    input.Body.genders[_].metadata.source.id == STRING
    input.Body.genders[_].metadata.source.type == enum_SourceType[_]
    input.Body.genders[_].metadata.sourcePrimary == BOOLEAN
    input.Body.genders[_].value == STRING
    input.Body.imClients[_].metadata.source.etag == STRING
    input.Body.imClients[_].metadata.source.id == STRING
    input.Body.imClients[_].metadata.source.type == enum_SourceType[_]
    input.Body.imClients[_].metadata.sourcePrimary == BOOLEAN
    input.Body.imClients[_].protocol == STRING
    input.Body.imClients[_].type == STRING
    input.Body.imClients[_].username == STRING
    input.Body.interests[_].metadata.source.etag == STRING
    input.Body.interests[_].metadata.source.id == STRING
    input.Body.interests[_].metadata.source.type == enum_SourceType[_]
    input.Body.interests[_].metadata.sourcePrimary == BOOLEAN
    input.Body.interests[_].value == STRING
    input.Body.locales[_].metadata.source.etag == STRING
    input.Body.locales[_].metadata.source.id == STRING
    input.Body.locales[_].metadata.source.type == enum_SourceType[_]
    input.Body.locales[_].metadata.sourcePrimary == BOOLEAN
    input.Body.locales[_].value == STRING
    input.Body.locations[_].buildingId == STRING
    input.Body.locations[_].current == BOOLEAN
    input.Body.locations[_].deskCode == STRING
    input.Body.locations[_].floor == STRING
    input.Body.locations[_].floorSection == STRING
    input.Body.locations[_].metadata.source.etag == STRING
    input.Body.locations[_].metadata.source.id == STRING
    input.Body.locations[_].metadata.source.type == enum_SourceType[_]
    input.Body.locations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.locations[_].type == STRING
    input.Body.locations[_].value == STRING
    input.Body.memberships[_].contactGroupMembership.contactGroupResourceName == STRING
    input.Body.memberships[_].metadata.source.etag == STRING
    input.Body.memberships[_].metadata.source.id == STRING
    input.Body.memberships[_].metadata.source.type == enum_SourceType[_]
    input.Body.memberships[_].metadata.sourcePrimary == BOOLEAN
    input.Body.miscKeywords[_].metadata.source.etag == STRING
    input.Body.miscKeywords[_].metadata.source.id == STRING
    input.Body.miscKeywords[_].metadata.source.type == enum_SourceType[_]
    input.Body.miscKeywords[_].metadata.sourcePrimary == BOOLEAN
    input.Body.miscKeywords[_].type == enum_MiscKeywordType[_]
    input.Body.miscKeywords[_].value == STRING
    input.Body.names[_].familyName == STRING
    input.Body.names[_].givenName == STRING
    input.Body.names[_].honorificPrefix == STRING
    input.Body.names[_].honorificSuffix == STRING
    input.Body.names[_].metadata.source.etag == STRING
    input.Body.names[_].metadata.source.id == STRING
    input.Body.names[_].metadata.source.type == enum_SourceType[_]
    input.Body.names[_].metadata.sourcePrimary == BOOLEAN
    input.Body.names[_].middleName == STRING
    input.Body.names[_].phoneticFamilyName == STRING
    input.Body.names[_].phoneticFullName == STRING
    input.Body.names[_].phoneticGivenName == STRING
    input.Body.names[_].phoneticHonorificPrefix == STRING
    input.Body.names[_].phoneticHonorificSuffix == STRING
    input.Body.names[_].phoneticMiddleName == STRING
    input.Body.names[_].unstructuredName == STRING
    input.Body.nicknames[_].metadata.source.etag == STRING
    input.Body.nicknames[_].metadata.source.id == STRING
    input.Body.nicknames[_].metadata.source.type == enum_SourceType[_]
    input.Body.nicknames[_].metadata.sourcePrimary == BOOLEAN
    input.Body.nicknames[_].type == enum_NicknameType[_]
    input.Body.nicknames[_].value == STRING
    input.Body.occupations[_].metadata.source.etag == STRING
    input.Body.occupations[_].metadata.source.id == STRING
    input.Body.occupations[_].metadata.source.type == enum_SourceType[_]
    input.Body.occupations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.occupations[_].value == STRING
    input.Body.organizations[_].costCenter == STRING
    input.Body.organizations[_].current == BOOLEAN
    input.Body.organizations[_].department == STRING
    input.Body.organizations[_].domain == STRING
    input.Body.organizations[_].endDate.day == INTEGER
    input.Body.organizations[_].endDate.month == INTEGER
    input.Body.organizations[_].endDate.year == INTEGER
    input.Body.organizations[_].fullTimeEquivalentMillipercent == INTEGER
    input.Body.organizations[_].jobDescription == STRING
    input.Body.organizations[_].location == STRING
    input.Body.organizations[_].metadata.source.etag == STRING
    input.Body.organizations[_].metadata.source.id == STRING
    input.Body.organizations[_].metadata.source.type == enum_SourceType[_]
    input.Body.organizations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.organizations[_].name == STRING
    input.Body.organizations[_].phoneticName == STRING
    input.Body.organizations[_].startDate.day == INTEGER
    input.Body.organizations[_].startDate.month == INTEGER
    input.Body.organizations[_].startDate.year == INTEGER
    input.Body.organizations[_].symbol == STRING
    input.Body.organizations[_].title == STRING
    input.Body.organizations[_].type == STRING
    input.Body.phoneNumbers[_].metadata.source.etag == STRING
    input.Body.phoneNumbers[_].metadata.source.id == STRING
    input.Body.phoneNumbers[_].metadata.source.type == enum_SourceType[_]
    input.Body.phoneNumbers[_].metadata.sourcePrimary == BOOLEAN
    input.Body.phoneNumbers[_].type == STRING
    input.Body.phoneNumbers[_].value == STRING
    input.Body.relations[_].metadata.source.etag == STRING
    input.Body.relations[_].metadata.source.id == STRING
    input.Body.relations[_].metadata.source.type == enum_SourceType[_]
    input.Body.relations[_].metadata.sourcePrimary == BOOLEAN
    input.Body.relations[_].person == STRING
    input.Body.relations[_].type == STRING
    input.Body.residences[_].current == BOOLEAN
    input.Body.residences[_].metadata.source.etag == STRING
    input.Body.residences[_].metadata.source.id == STRING
    input.Body.residences[_].metadata.source.type == enum_SourceType[_]
    input.Body.residences[_].metadata.sourcePrimary == BOOLEAN
    input.Body.residences[_].value == STRING
    input.Body.resourceName == STRING
    input.Body.sipAddresses[_].metadata.source.etag == STRING
    input.Body.sipAddresses[_].metadata.source.id == STRING
    input.Body.sipAddresses[_].metadata.source.type == enum_SourceType[_]
    input.Body.sipAddresses[_].metadata.sourcePrimary == BOOLEAN
    input.Body.sipAddresses[_].type == STRING
    input.Body.sipAddresses[_].value == STRING
    input.Body.skills[_].metadata.source.etag == STRING
    input.Body.skills[_].metadata.source.id == STRING
    input.Body.skills[_].metadata.source.type == enum_SourceType[_]
    input.Body.skills[_].metadata.sourcePrimary == BOOLEAN
    input.Body.skills[_].value == STRING
    input.Body.urls[_].metadata.source.etag == STRING
    input.Body.urls[_].metadata.source.id == STRING
    input.Body.urls[_].metadata.source.type == enum_SourceType[_]
    input.Body.urls[_].metadata.sourcePrimary == BOOLEAN
    input.Body.urls[_].type == STRING
    input.Body.urls[_].value == STRING
    input.Body.userDefined[_].key == STRING
    input.Body.userDefined[_].metadata.source.etag == STRING
    input.Body.userDefined[_].metadata.source.id == STRING
    input.Body.userDefined[_].metadata.source.type == enum_SourceType[_]
    input.Body.userDefined[_].metadata.sourcePrimary == BOOLEAN
    input.Body.userDefined[_].value == STRING
    input.ReqMap.resourceName == STRING
    input.Qs.personFields == STRING
    input.Qs.sources == enum_SourcesParameter[_]
    input.Qs.updatePersonFields == STRING
    input.ProviderMetadata.Region == STRING
}

people.people.updateContactPhoto

enum_UpdateContactPhotoRequestSources := [ "READ_SOURCE_TYPE_UNSPECIFIED", "READ_SOURCE_TYPE_PROFILE", "READ_SOURCE_TYPE_CONTACT", "READ_SOURCE_TYPE_DOMAIN_CONTACT", "READ_SOURCE_TYPE_OTHER_CONTACT" ]

valid {
    input.Body.personFields == STRING
    input.Body.photoBytes == STRING
    input.Body.sources[_] == enum_UpdateContactPhotoRequestSources[_]
    input.ReqMap.resourceName == STRING
    input.ProviderMetadata.Region == STRING
}