adsense.accounts.adclients.adunits.create

enum_AdUnitState := [ "STATE_UNSPECIFIED", "ACTIVE", "ARCHIVED" ]
enum_ContentAdsSettingsType := [ "TYPE_UNSPECIFIED", "DISPLAY", "FEED", "ARTICLE", "MATCHED_CONTENT", "LINK" ]

valid {
    input.Body.contentAdsSettings.size == STRING
    input.Body.contentAdsSettings.type == enum_ContentAdsSettingsType[_]
    input.Body.displayName == STRING
    input.Body.state == enum_AdUnitState[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.adunits.get

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

adsense.accounts.adclients.adunits.getAdcode

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

adsense.accounts.adclients.adunits.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.adunits.listLinkedCustomChannels

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.adunits.patch

enum_AdUnitState := [ "STATE_UNSPECIFIED", "ACTIVE", "ARCHIVED" ]
enum_ContentAdsSettingsType := [ "TYPE_UNSPECIFIED", "DISPLAY", "FEED", "ARTICLE", "MATCHED_CONTENT", "LINK" ]

valid {
    input.Body.contentAdsSettings.size == STRING
    input.Body.contentAdsSettings.type == enum_ContentAdsSettingsType[_]
    input.Body.displayName == STRING
    input.Body.state == enum_AdUnitState[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.customchannels.create

valid {
    input.Body.active == BOOLEAN
    input.Body.displayName == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.customchannels.delete

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

adsense.accounts.adclients.customchannels.get

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

adsense.accounts.adclients.customchannels.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.customchannels.listLinkedAdUnits

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.customchannels.patch

valid {
    input.Body.active == BOOLEAN
    input.Body.displayName == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.get

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

adsense.accounts.adclients.getAdCode

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.Qs.tagPartner == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.getAdcode

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

adsense.accounts.adclients.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adclients.urlchannels.get

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

adsense.accounts.adclients.urlchannels.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adunits.customchannels.list

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.ReqMap.adUnitId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adunits.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.ReqMap.adUnitId == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adunits.getAdCode

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.ReqMap.adUnitId == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.adunits.list

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.Qs.includeInactive == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.alerts.delete

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.alertId == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.alerts.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.languageCode == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.customchannels.adunits.list

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.ReqMap.customChannelId == STRING
    input.Qs.includeInactive == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.customchannels.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.ReqMap.customChannelId == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.customchannels.list

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.get

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

adsense.accounts.getAdBlockingRecoveryTag

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

adsense.accounts.list

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

adsense.accounts.listChildAccounts

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.payments.list

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

adsense.accounts.policyIssues.get

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

adsense.accounts.policyIssues.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.reports.generate

enum_DateRangeParameter := [ "REPORTING_DATE_RANGE_UNSPECIFIED", "CUSTOM", "TODAY", "YESTERDAY", "MONTH_TO_DATE", "YEAR_TO_DATE", "LAST_7_DAYS", "LAST_30_DAYS" ]
enum_DimensionsParameter := [ "DIMENSION_UNSPECIFIED", "DATE", "WEEK", "MONTH", "ACCOUNT_NAME", "AD_CLIENT_ID", "HOSTED_AD_CLIENT_ID", "PRODUCT_NAME", "PRODUCT_CODE", "AD_UNIT_NAME", "AD_UNIT_ID", "AD_UNIT_SIZE_NAME", "AD_UNIT_SIZE_CODE", "CUSTOM_CHANNEL_NAME", "CUSTOM_CHANNEL_ID", "HOSTED_CUSTOM_CHANNEL_ID", "OWNED_SITE_DOMAIN_NAME", "OWNED_SITE_ID", "PAGE_URL", "URL_CHANNEL_NAME", "URL_CHANNEL_ID", "BUYER_NETWORK_NAME", "BUYER_NETWORK_ID", "BID_TYPE_NAME", "BID_TYPE_CODE", "CREATIVE_SIZE_NAME", "CREATIVE_SIZE_CODE", "DOMAIN_NAME", "DOMAIN_CODE", "COUNTRY_NAME", "COUNTRY_CODE", "PLATFORM_TYPE_NAME", "PLATFORM_TYPE_CODE", "TARGETING_TYPE_NAME", "TARGETING_TYPE_CODE", "CONTENT_PLATFORM_NAME", "CONTENT_PLATFORM_CODE", "AD_PLACEMENT_NAME", "AD_PLACEMENT_CODE", "REQUESTED_AD_TYPE_NAME", "REQUESTED_AD_TYPE_CODE", "SERVED_AD_TYPE_NAME", "SERVED_AD_TYPE_CODE", "AD_FORMAT_NAME", "AD_FORMAT_CODE", "CUSTOM_SEARCH_STYLE_NAME", "CUSTOM_SEARCH_STYLE_ID", "DOMAIN_REGISTRANT", "WEBSEARCH_QUERY_STRING" ]
enum_MetricsParameter := [ "METRIC_UNSPECIFIED", "PAGE_VIEWS", "AD_REQUESTS", "MATCHED_AD_REQUESTS", "TOTAL_IMPRESSIONS", "IMPRESSIONS", "INDIVIDUAL_AD_IMPRESSIONS", "CLICKS", "PAGE_VIEWS_SPAM_RATIO", "AD_REQUESTS_SPAM_RATIO", "MATCHED_AD_REQUESTS_SPAM_RATIO", "IMPRESSIONS_SPAM_RATIO", "INDIVIDUAL_AD_IMPRESSIONS_SPAM_RATIO", "CLICKS_SPAM_RATIO", "AD_REQUESTS_COVERAGE", "PAGE_VIEWS_CTR", "AD_REQUESTS_CTR", "MATCHED_AD_REQUESTS_CTR", "IMPRESSIONS_CTR", "INDIVIDUAL_AD_IMPRESSIONS_CTR", "ACTIVE_VIEW_MEASURABILITY", "ACTIVE_VIEW_VIEWABILITY", "ACTIVE_VIEW_TIME", "ESTIMATED_EARNINGS", "PAGE_VIEWS_RPM", "AD_REQUESTS_RPM", "MATCHED_AD_REQUESTS_RPM", "IMPRESSIONS_RPM", "INDIVIDUAL_AD_IMPRESSIONS_RPM", "COST_PER_CLICK", "ADS_PER_IMPRESSION", "TOTAL_EARNINGS", "WEBSEARCH_RESULT_PAGES", "FUNNEL_REQUESTS", "FUNNEL_IMPRESSIONS", "FUNNEL_CLICKS", "FUNNEL_RPM" ]
enum_ReportingTimeZoneParameter := [ "REPORTING_TIME_ZONE_UNSPECIFIED", "ACCOUNT_TIME_ZONE", "GOOGLE_TIME_ZONE" ]

valid {
    input.ReqMap.account == STRING
    input.Qs.currencyCode == STRING
    input.Qs.dateRange == enum_DateRangeParameter[_]
    input.Qs.dimensions == enum_DimensionsParameter[_]
    input.Qs.endDate.day == INTEGER
    input.Qs.endDate.month == INTEGER
    input.Qs.endDate.year == INTEGER
    input.Qs.filters == STRING
    input.Qs.languageCode == STRING
    input.Qs.limit == INTEGER
    input.Qs.metrics == enum_MetricsParameter[_]
    input.Qs.orderBy == STRING
    input.Qs.reportingTimeZone == enum_ReportingTimeZoneParameter[_]
    input.Qs.startDate.day == INTEGER
    input.Qs.startDate.month == INTEGER
    input.Qs.startDate.year == INTEGER
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.reports.generateCsv

enum_DateRangeParameter := [ "REPORTING_DATE_RANGE_UNSPECIFIED", "CUSTOM", "TODAY", "YESTERDAY", "MONTH_TO_DATE", "YEAR_TO_DATE", "LAST_7_DAYS", "LAST_30_DAYS" ]
enum_DimensionsParameter := [ "DIMENSION_UNSPECIFIED", "DATE", "WEEK", "MONTH", "ACCOUNT_NAME", "AD_CLIENT_ID", "HOSTED_AD_CLIENT_ID", "PRODUCT_NAME", "PRODUCT_CODE", "AD_UNIT_NAME", "AD_UNIT_ID", "AD_UNIT_SIZE_NAME", "AD_UNIT_SIZE_CODE", "CUSTOM_CHANNEL_NAME", "CUSTOM_CHANNEL_ID", "HOSTED_CUSTOM_CHANNEL_ID", "OWNED_SITE_DOMAIN_NAME", "OWNED_SITE_ID", "PAGE_URL", "URL_CHANNEL_NAME", "URL_CHANNEL_ID", "BUYER_NETWORK_NAME", "BUYER_NETWORK_ID", "BID_TYPE_NAME", "BID_TYPE_CODE", "CREATIVE_SIZE_NAME", "CREATIVE_SIZE_CODE", "DOMAIN_NAME", "DOMAIN_CODE", "COUNTRY_NAME", "COUNTRY_CODE", "PLATFORM_TYPE_NAME", "PLATFORM_TYPE_CODE", "TARGETING_TYPE_NAME", "TARGETING_TYPE_CODE", "CONTENT_PLATFORM_NAME", "CONTENT_PLATFORM_CODE", "AD_PLACEMENT_NAME", "AD_PLACEMENT_CODE", "REQUESTED_AD_TYPE_NAME", "REQUESTED_AD_TYPE_CODE", "SERVED_AD_TYPE_NAME", "SERVED_AD_TYPE_CODE", "AD_FORMAT_NAME", "AD_FORMAT_CODE", "CUSTOM_SEARCH_STYLE_NAME", "CUSTOM_SEARCH_STYLE_ID", "DOMAIN_REGISTRANT", "WEBSEARCH_QUERY_STRING" ]
enum_MetricsParameter := [ "METRIC_UNSPECIFIED", "PAGE_VIEWS", "AD_REQUESTS", "MATCHED_AD_REQUESTS", "TOTAL_IMPRESSIONS", "IMPRESSIONS", "INDIVIDUAL_AD_IMPRESSIONS", "CLICKS", "PAGE_VIEWS_SPAM_RATIO", "AD_REQUESTS_SPAM_RATIO", "MATCHED_AD_REQUESTS_SPAM_RATIO", "IMPRESSIONS_SPAM_RATIO", "INDIVIDUAL_AD_IMPRESSIONS_SPAM_RATIO", "CLICKS_SPAM_RATIO", "AD_REQUESTS_COVERAGE", "PAGE_VIEWS_CTR", "AD_REQUESTS_CTR", "MATCHED_AD_REQUESTS_CTR", "IMPRESSIONS_CTR", "INDIVIDUAL_AD_IMPRESSIONS_CTR", "ACTIVE_VIEW_MEASURABILITY", "ACTIVE_VIEW_VIEWABILITY", "ACTIVE_VIEW_TIME", "ESTIMATED_EARNINGS", "PAGE_VIEWS_RPM", "AD_REQUESTS_RPM", "MATCHED_AD_REQUESTS_RPM", "IMPRESSIONS_RPM", "INDIVIDUAL_AD_IMPRESSIONS_RPM", "COST_PER_CLICK", "ADS_PER_IMPRESSION", "TOTAL_EARNINGS", "WEBSEARCH_RESULT_PAGES", "FUNNEL_REQUESTS", "FUNNEL_IMPRESSIONS", "FUNNEL_CLICKS", "FUNNEL_RPM" ]
enum_ReportingTimeZoneParameter := [ "REPORTING_TIME_ZONE_UNSPECIFIED", "ACCOUNT_TIME_ZONE", "GOOGLE_TIME_ZONE" ]

valid {
    input.ReqMap.account == STRING
    input.Qs.currencyCode == STRING
    input.Qs.dateRange == enum_DateRangeParameter[_]
    input.Qs.dimensions == enum_DimensionsParameter[_]
    input.Qs.endDate.day == INTEGER
    input.Qs.endDate.month == INTEGER
    input.Qs.endDate.year == INTEGER
    input.Qs.filters == STRING
    input.Qs.languageCode == STRING
    input.Qs.limit == INTEGER
    input.Qs.metrics == enum_MetricsParameter[_]
    input.Qs.orderBy == STRING
    input.Qs.reportingTimeZone == enum_ReportingTimeZoneParameter[_]
    input.Qs.startDate.day == INTEGER
    input.Qs.startDate.month == INTEGER
    input.Qs.startDate.year == INTEGER
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.reports.getSaved

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

adsense.accounts.reports.saved.generate

enum_DateRangeParameter := [ "REPORTING_DATE_RANGE_UNSPECIFIED", "CUSTOM", "TODAY", "YESTERDAY", "MONTH_TO_DATE", "YEAR_TO_DATE", "LAST_7_DAYS", "LAST_30_DAYS" ]
enum_ReportingTimeZoneParameter := [ "REPORTING_TIME_ZONE_UNSPECIFIED", "ACCOUNT_TIME_ZONE", "GOOGLE_TIME_ZONE" ]

valid {
    input.ReqMap.name == STRING
    input.Qs.currencyCode == STRING
    input.Qs.dateRange == enum_DateRangeParameter[_]
    input.Qs.endDate.day == INTEGER
    input.Qs.endDate.month == INTEGER
    input.Qs.endDate.year == INTEGER
    input.Qs.languageCode == STRING
    input.Qs.reportingTimeZone == enum_ReportingTimeZoneParameter[_]
    input.Qs.startDate.day == INTEGER
    input.Qs.startDate.month == INTEGER
    input.Qs.startDate.year == INTEGER
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.reports.saved.generateCsv

enum_DateRangeParameter := [ "REPORTING_DATE_RANGE_UNSPECIFIED", "CUSTOM", "TODAY", "YESTERDAY", "MONTH_TO_DATE", "YEAR_TO_DATE", "LAST_7_DAYS", "LAST_30_DAYS" ]
enum_ReportingTimeZoneParameter := [ "REPORTING_TIME_ZONE_UNSPECIFIED", "ACCOUNT_TIME_ZONE", "GOOGLE_TIME_ZONE" ]

valid {
    input.ReqMap.name == STRING
    input.Qs.currencyCode == STRING
    input.Qs.dateRange == enum_DateRangeParameter[_]
    input.Qs.endDate.day == INTEGER
    input.Qs.endDate.month == INTEGER
    input.Qs.endDate.year == INTEGER
    input.Qs.languageCode == STRING
    input.Qs.reportingTimeZone == enum_ReportingTimeZoneParameter[_]
    input.Qs.startDate.day == INTEGER
    input.Qs.startDate.month == INTEGER
    input.Qs.startDate.year == INTEGER
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.reports.saved.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.savedadstyles.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.savedAdStyleId == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.savedadstyles.list

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

adsense.accounts.sites.get

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

adsense.accounts.sites.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.accounts.urlchannels.list

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.adClientId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.adclients.list

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

adsense.adunits.customchannels.list

valid {
    input.ReqMap.adClientId == STRING
    input.ReqMap.adUnitId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.adunits.get

valid {
    input.ReqMap.adClientId == STRING
    input.ReqMap.adUnitId == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.adunits.getAdCode

valid {
    input.ReqMap.adClientId == STRING
    input.ReqMap.adUnitId == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.adunits.list

valid {
    input.ReqMap.adClientId == STRING
    input.Qs.includeInactive == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.alerts.delete

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

adsense.alerts.list

valid {
    input.Qs.locale == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.customchannels.adunits.list

valid {
    input.ReqMap.adClientId == STRING
    input.ReqMap.customChannelId == STRING
    input.Qs.includeInactive == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.customchannels.get

valid {
    input.ReqMap.adClientId == STRING
    input.ReqMap.customChannelId == STRING
    input.ProviderMetadata.Region == STRING
}

adsense.customchannels.list

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

adsense.metadata.dimensions.list

valid {
    input.ProviderMetadata.Region == STRING
}

adsense.metadata.metrics.list

valid {
    input.ProviderMetadata.Region == STRING
}

adsense.payments.list

valid {
    input.ProviderMetadata.Region == STRING
}

adsense.reports.generate

valid {
    input.Qs.accountId == STRING
    input.Qs.currency == STRING
    input.Qs.dimension == STRING
    input.Qs.endDate == STRING
    input.Qs.filter == STRING
    input.Qs.locale == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.metric == STRING
    input.Qs.sort == STRING
    input.Qs.startDate == STRING
    input.Qs.startIndex == INTEGER
    input.Qs.useTimezoneReporting == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

adsense.reports.saved.generate

valid {
    input.ReqMap.savedReportId == STRING
    input.Qs.locale == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.startIndex == INTEGER
    input.ProviderMetadata.Region == STRING
}

adsense.reports.saved.list

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

adsense.savedadstyles.get

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

adsense.savedadstyles.list

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

adsense.urlchannels.list

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