books.bookshelves.get

valid {
    input.ReqMap.shelf == STRING
    input.ReqMap.userId == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.bookshelves.list

valid {
    input.ReqMap.userId == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.bookshelves.volumes.list

valid {
    input.ReqMap.shelf == STRING
    input.ReqMap.userId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.showPreorders == BOOLEAN
    input.Qs.source == STRING
    input.Qs.startIndex == INTEGER
    input.ProviderMetadata.Region == STRING
}

books.cloudloading.addBook

valid {
    input.Qs.drive_document_id == STRING
    input.Qs.mime_type == STRING
    input.Qs.name == STRING
    input.Qs.upload_client_token == STRING
    input.ProviderMetadata.Region == STRING
}

books.cloudloading.deleteBook

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

books.cloudloading.updateBook

valid {
    input.Body.author == STRING
    input.Body.processingState == STRING
    input.Body.title == STRING
    input.Body.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.dictionary.listOfflineMetadata

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

books.familysharing.getFamilyInfo

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

books.familysharing.share

valid {
    input.Qs.docId == STRING
    input.Qs.source == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.familysharing.unshare

valid {
    input.Qs.docId == STRING
    input.Qs.source == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.layers.annotationData.get

valid {
    input.ReqMap.annotationDataId == STRING
    input.ReqMap.layerId == STRING
    input.ReqMap.volumeId == STRING
    input.Qs.allowWebDefinitions == BOOLEAN
    input.Qs.contentVersion == STRING
    input.Qs.h == INTEGER
    input.Qs.locale == STRING
    input.Qs.scale == INTEGER
    input.Qs.source == STRING
    input.Qs.w == INTEGER
    input.ProviderMetadata.Region == STRING
}

books.layers.annotationData.list

valid {
    input.ReqMap.layerId == STRING
    input.ReqMap.volumeId == STRING
    input.Qs.annotationDataId == STRING
    input.Qs.contentVersion == STRING
    input.Qs.h == INTEGER
    input.Qs.locale == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.scale == INTEGER
    input.Qs.source == STRING
    input.Qs.updatedMax == STRING
    input.Qs.updatedMin == STRING
    input.Qs.w == INTEGER
    input.ProviderMetadata.Region == STRING
}

books.layers.get

valid {
    input.ReqMap.summaryId == STRING
    input.ReqMap.volumeId == STRING
    input.Qs.contentVersion == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.layers.list

valid {
    input.ReqMap.volumeId == STRING
    input.Qs.contentVersion == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.layers.volumeAnnotations.get

valid {
    input.ReqMap.annotationId == STRING
    input.ReqMap.layerId == STRING
    input.ReqMap.volumeId == STRING
    input.Qs.locale == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.layers.volumeAnnotations.list

valid {
    input.ReqMap.layerId == STRING
    input.ReqMap.volumeId == STRING
    input.Qs.contentVersion == STRING
    input.Qs.endOffset == STRING
    input.Qs.endPosition == STRING
    input.Qs.locale == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.source == STRING
    input.Qs.startOffset == STRING
    input.Qs.startPosition == STRING
    input.Qs.updatedMax == STRING
    input.Qs.updatedMin == STRING
    input.Qs.volumeAnnotationsVersion == STRING
    input.ProviderMetadata.Region == STRING
}

books.myconfig.getUserSettings

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

books.myconfig.releaseDownloadAccess

valid {
    input.Qs.cpksver == STRING
    input.Qs.locale == STRING
    input.Qs.source == STRING
    input.Qs.volumeIds == STRING
    input.ProviderMetadata.Region == STRING
}

books.myconfig.requestAccess

enum_LicenseTypesParameter := [ "LICENSE_TYPES_UNDEFINED", "BOTH", "CONCURRENT", "DOWNLOAD" ]

valid {
    input.Qs.cpksver == STRING
    input.Qs.licenseTypes == enum_LicenseTypesParameter[_]
    input.Qs.locale == STRING
    input.Qs.nonce == STRING
    input.Qs.source == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.myconfig.syncVolumeLicenses

enum_FeaturesParameter := [ "FEATURES_UNDEFINED", "RENTALS" ]

valid {
    input.Qs.cpksver == STRING
    input.Qs.features == enum_FeaturesParameter[_]
    input.Qs.includeNonComicsSeries == BOOLEAN
    input.Qs.locale == STRING
    input.Qs.nonce == STRING
    input.Qs.showPreorders == BOOLEAN
    input.Qs.source == STRING
    input.Qs.volumeIds == STRING
    input.ProviderMetadata.Region == STRING
}

books.myconfig.updateUserSettings

valid {
    input.Body.kind == STRING
    input.Body.notesExport.folderName == STRING
    input.Body.notesExport.isEnabled == BOOLEAN
    input.Body.notification.matchMyInterests.opted_state == STRING
    input.Body.notification.moreFromAuthors.opted_state == STRING
    input.Body.notification.moreFromSeries.opted_state == STRING
    input.Body.notification.priceDrop.opted_state == STRING
    input.Body.notification.rewardExpirations.opted_state == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.annotations.delete

valid {
    input.ReqMap.annotationId == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.annotations.insert

valid {
    input.Body.afterSelectedText == STRING
    input.Body.beforeSelectedText == STRING
    input.Body.clientVersionRanges.cfiRange.endOffset == STRING
    input.Body.clientVersionRanges.cfiRange.endPosition == STRING
    input.Body.clientVersionRanges.cfiRange.startOffset == STRING
    input.Body.clientVersionRanges.cfiRange.startPosition == STRING
    input.Body.clientVersionRanges.contentVersion == STRING
    input.Body.clientVersionRanges.gbImageRange.endOffset == STRING
    input.Body.clientVersionRanges.gbImageRange.endPosition == STRING
    input.Body.clientVersionRanges.gbImageRange.startOffset == STRING
    input.Body.clientVersionRanges.gbImageRange.startPosition == STRING
    input.Body.clientVersionRanges.gbTextRange.endOffset == STRING
    input.Body.clientVersionRanges.gbTextRange.endPosition == STRING
    input.Body.clientVersionRanges.gbTextRange.startOffset == STRING
    input.Body.clientVersionRanges.gbTextRange.startPosition == STRING
    input.Body.clientVersionRanges.imageCfiRange.endOffset == STRING
    input.Body.clientVersionRanges.imageCfiRange.endPosition == STRING
    input.Body.clientVersionRanges.imageCfiRange.startOffset == STRING
    input.Body.clientVersionRanges.imageCfiRange.startPosition == STRING
    input.Body.created == STRING
    input.Body.currentVersionRanges.cfiRange.endOffset == STRING
    input.Body.currentVersionRanges.cfiRange.endPosition == STRING
    input.Body.currentVersionRanges.cfiRange.startOffset == STRING
    input.Body.currentVersionRanges.cfiRange.startPosition == STRING
    input.Body.currentVersionRanges.contentVersion == STRING
    input.Body.currentVersionRanges.gbImageRange.endOffset == STRING
    input.Body.currentVersionRanges.gbImageRange.endPosition == STRING
    input.Body.currentVersionRanges.gbImageRange.startOffset == STRING
    input.Body.currentVersionRanges.gbImageRange.startPosition == STRING
    input.Body.currentVersionRanges.gbTextRange.endOffset == STRING
    input.Body.currentVersionRanges.gbTextRange.endPosition == STRING
    input.Body.currentVersionRanges.gbTextRange.startOffset == STRING
    input.Body.currentVersionRanges.gbTextRange.startPosition == STRING
    input.Body.currentVersionRanges.imageCfiRange.endOffset == STRING
    input.Body.currentVersionRanges.imageCfiRange.endPosition == STRING
    input.Body.currentVersionRanges.imageCfiRange.startOffset == STRING
    input.Body.currentVersionRanges.imageCfiRange.startPosition == STRING
    input.Body.data == STRING
    input.Body.deleted == BOOLEAN
    input.Body.highlightStyle == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.layerId == STRING
    input.Body.layerSummary.allowedCharacterCount == INTEGER
    input.Body.layerSummary.limitType == STRING
    input.Body.layerSummary.remainingCharacterCount == INTEGER
    input.Body.pageIds[_] == STRING
    input.Body.selectedText == STRING
    input.Body.selfLink == STRING
    input.Body.updated == STRING
    input.Body.volumeId == STRING
    input.Qs.annotationId == STRING
    input.Qs.country == STRING
    input.Qs.showOnlySummaryInResponse == BOOLEAN
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.annotations.list

valid {
    input.Qs.contentVersion == STRING
    input.Qs.layerId == STRING
    input.Qs.layerIds == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.showDeleted == BOOLEAN
    input.Qs.source == STRING
    input.Qs.updatedMax == STRING
    input.Qs.updatedMin == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.annotations.summary

valid {
    input.Qs.layerIds == STRING
    input.Qs.source == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.annotations.update

valid {
    input.Body.afterSelectedText == STRING
    input.Body.beforeSelectedText == STRING
    input.Body.clientVersionRanges.cfiRange.endOffset == STRING
    input.Body.clientVersionRanges.cfiRange.endPosition == STRING
    input.Body.clientVersionRanges.cfiRange.startOffset == STRING
    input.Body.clientVersionRanges.cfiRange.startPosition == STRING
    input.Body.clientVersionRanges.contentVersion == STRING
    input.Body.clientVersionRanges.gbImageRange.endOffset == STRING
    input.Body.clientVersionRanges.gbImageRange.endPosition == STRING
    input.Body.clientVersionRanges.gbImageRange.startOffset == STRING
    input.Body.clientVersionRanges.gbImageRange.startPosition == STRING
    input.Body.clientVersionRanges.gbTextRange.endOffset == STRING
    input.Body.clientVersionRanges.gbTextRange.endPosition == STRING
    input.Body.clientVersionRanges.gbTextRange.startOffset == STRING
    input.Body.clientVersionRanges.gbTextRange.startPosition == STRING
    input.Body.clientVersionRanges.imageCfiRange.endOffset == STRING
    input.Body.clientVersionRanges.imageCfiRange.endPosition == STRING
    input.Body.clientVersionRanges.imageCfiRange.startOffset == STRING
    input.Body.clientVersionRanges.imageCfiRange.startPosition == STRING
    input.Body.created == STRING
    input.Body.currentVersionRanges.cfiRange.endOffset == STRING
    input.Body.currentVersionRanges.cfiRange.endPosition == STRING
    input.Body.currentVersionRanges.cfiRange.startOffset == STRING
    input.Body.currentVersionRanges.cfiRange.startPosition == STRING
    input.Body.currentVersionRanges.contentVersion == STRING
    input.Body.currentVersionRanges.gbImageRange.endOffset == STRING
    input.Body.currentVersionRanges.gbImageRange.endPosition == STRING
    input.Body.currentVersionRanges.gbImageRange.startOffset == STRING
    input.Body.currentVersionRanges.gbImageRange.startPosition == STRING
    input.Body.currentVersionRanges.gbTextRange.endOffset == STRING
    input.Body.currentVersionRanges.gbTextRange.endPosition == STRING
    input.Body.currentVersionRanges.gbTextRange.startOffset == STRING
    input.Body.currentVersionRanges.gbTextRange.startPosition == STRING
    input.Body.currentVersionRanges.imageCfiRange.endOffset == STRING
    input.Body.currentVersionRanges.imageCfiRange.endPosition == STRING
    input.Body.currentVersionRanges.imageCfiRange.startOffset == STRING
    input.Body.currentVersionRanges.imageCfiRange.startPosition == STRING
    input.Body.data == STRING
    input.Body.deleted == BOOLEAN
    input.Body.highlightStyle == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.layerId == STRING
    input.Body.layerSummary.allowedCharacterCount == INTEGER
    input.Body.layerSummary.limitType == STRING
    input.Body.layerSummary.remainingCharacterCount == INTEGER
    input.Body.pageIds[_] == STRING
    input.Body.selectedText == STRING
    input.Body.selfLink == STRING
    input.Body.updated == STRING
    input.Body.volumeId == STRING
    input.ReqMap.annotationId == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.bookshelves.addVolume

enum_ReasonParameter := [ "REASON_UNDEFINED", "IOS_PREX", "IOS_SEARCH", "ONBOARDING" ]

valid {
    input.ReqMap.shelf == STRING
    input.Qs.reason == enum_ReasonParameter[_]
    input.Qs.source == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.bookshelves.clearVolumes

valid {
    input.ReqMap.shelf == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.bookshelves.get

valid {
    input.ReqMap.shelf == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.bookshelves.list

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

books.mylibrary.bookshelves.moveVolume

valid {
    input.ReqMap.shelf == STRING
    input.Qs.source == STRING
    input.Qs.volumeId == STRING
    input.Qs.volumePosition == INTEGER
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.bookshelves.removeVolume

enum_ReasonParameter := [ "REASON_UNDEFINED", "ONBOARDING" ]

valid {
    input.ReqMap.shelf == STRING
    input.Qs.reason == enum_ReasonParameter[_]
    input.Qs.source == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.bookshelves.volumes.list

enum_ProjectionParameter := [ "PROJECTION_UNDEFINED", "FULL", "LITE" ]

valid {
    input.ReqMap.shelf == STRING
    input.Qs.country == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.projection == enum_ProjectionParameter[_]
    input.Qs.q == STRING
    input.Qs.showPreorders == BOOLEAN
    input.Qs.source == STRING
    input.Qs.startIndex == INTEGER
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.readingpositions.get

valid {
    input.ReqMap.volumeId == STRING
    input.Qs.contentVersion == STRING
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.mylibrary.readingpositions.setPosition

enum_ActionParameter := [ "ACTION_UNDEFINED", "bookmark", "chapter", "next-page", "prev-page", "scroll", "search" ]

valid {
    input.ReqMap.volumeId == STRING
    input.Qs.action == enum_ActionParameter[_]
    input.Qs.contentVersion == STRING
    input.Qs.deviceCookie == STRING
    input.Qs.position == STRING
    input.Qs.source == STRING
    input.Qs.timestamp == STRING
    input.ProviderMetadata.Region == STRING
}

books.notification.get

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

books.onboarding.listCategories

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

books.onboarding.listCategoryVolumes

enum_MaxAllowedMaturityRatingParameter := [ "MAX_ALLOWED_MATURITY_RATING_UNDEFINED", "MATURE", "not-mature" ]

valid {
    input.Qs.categoryId == STRING
    input.Qs.locale == STRING
    input.Qs.maxAllowedMaturityRating == enum_MaxAllowedMaturityRatingParameter[_]
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

books.personalizedstream.get

enum_MaxAllowedMaturityRatingParameter := [ "MAX_ALLOWED_MATURITY_RATING_UNDEFINED", "MATURE", "not-mature" ]

valid {
    input.Qs.locale == STRING
    input.Qs.maxAllowedMaturityRating == enum_MaxAllowedMaturityRatingParameter[_]
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.promooffer.accept

valid {
    input.Qs.androidId == STRING
    input.Qs.device == STRING
    input.Qs.manufacturer == STRING
    input.Qs.model == STRING
    input.Qs.offerId == STRING
    input.Qs.product == STRING
    input.Qs.serial == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.promooffer.dismiss

valid {
    input.Qs.androidId == STRING
    input.Qs.device == STRING
    input.Qs.manufacturer == STRING
    input.Qs.model == STRING
    input.Qs.offerId == STRING
    input.Qs.product == STRING
    input.Qs.serial == STRING
    input.ProviderMetadata.Region == STRING
}

books.promooffer.get

valid {
    input.Qs.androidId == STRING
    input.Qs.device == STRING
    input.Qs.manufacturer == STRING
    input.Qs.model == STRING
    input.Qs.product == STRING
    input.Qs.serial == STRING
    input.ProviderMetadata.Region == STRING
}

books.series.get

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

books.series.membership.get

valid {
    input.Qs.page_size == INTEGER
    input.Qs.page_token == STRING
    input.Qs.series_id == STRING
    input.ProviderMetadata.Region == STRING
}

books.volumes.associated.list

enum_AssociationParameter := [ "ASSOCIATION_UNDEFINED", "end-of-sample", "end-of-volume", "related-for-play" ]
enum_MaxAllowedMaturityRatingParameter := [ "MAX_ALLOWED_MATURITY_RATING_UNDEFINED", "MATURE", "not-mature" ]

valid {
    input.ReqMap.volumeId == STRING
    input.Qs.association == enum_AssociationParameter[_]
    input.Qs.locale == STRING
    input.Qs.maxAllowedMaturityRating == enum_MaxAllowedMaturityRatingParameter[_]
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.volumes.get

enum_ProjectionParameter := [ "PROJECTION_UNDEFINED", "FULL", "LITE" ]

valid {
    input.ReqMap.volumeId == STRING
    input.Qs.country == STRING
    input.Qs.includeNonComicsSeries == BOOLEAN
    input.Qs.partner == STRING
    input.Qs.projection == enum_ProjectionParameter[_]
    input.Qs.source == STRING
    input.Qs.user_library_consistent_read == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

books.volumes.list

enum_DownloadParameter := [ "DOWNLOAD_UNDEFINED", "EPUB" ]
enum_FilterParameter := [ "FILTER_UNDEFINED", "ebooks", "free-ebooks", "full", "paid-ebooks", "partial" ]
enum_LibraryRestrictParameter := [ "LIBRARY_RESTRICT_UNDEFINED", "my-library", "no-restrict" ]
enum_MaxAllowedMaturityRatingParameter := [ "MAX_ALLOWED_MATURITY_RATING_UNDEFINED", "MATURE", "not-mature" ]
enum_OrderByParameter := [ "ORDER_BY_UNDEFINED", "newest", "relevance" ]
enum_PrintTypeParameter := [ "PRINT_TYPE_UNDEFINED", "ALL", "BOOKS", "MAGAZINES" ]
enum_ProjectionParameter := [ "PROJECTION_UNDEFINED", "FULL", "LITE" ]

valid {
    input.Qs.download == enum_DownloadParameter[_]
    input.Qs.filter == enum_FilterParameter[_]
    input.Qs.langRestrict == STRING
    input.Qs.libraryRestrict == enum_LibraryRestrictParameter[_]
    input.Qs.maxAllowedMaturityRating == enum_MaxAllowedMaturityRatingParameter[_]
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == enum_OrderByParameter[_]
    input.Qs.partner == STRING
    input.Qs.printType == enum_PrintTypeParameter[_]
    input.Qs.projection == enum_ProjectionParameter[_]
    input.Qs.q == STRING
    input.Qs.showPreorders == BOOLEAN
    input.Qs.source == STRING
    input.Qs.startIndex == INTEGER
    input.ProviderMetadata.Region == STRING
}

books.volumes.mybooks.list

enum_AcquireMethodParameter := [ "ACQUIRE_METHOD_UNDEFINED", "FAMILY_SHARED", "PREORDERED", "PREVIOUSLY_RENTED", "PUBLIC_DOMAIN", "PURCHASED", "RENTED", "SAMPLE", "UPLOADED" ]
enum_ProcessingStateParameter := [ "PROCESSING_STATE_UNDEFINED", "COMPLETED_FAILED", "COMPLETED_SUCCESS", "RUNNING" ]

valid {
    input.Qs.acquireMethod == enum_AcquireMethodParameter[_]
    input.Qs.country == STRING
    input.Qs.locale == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.processingState == enum_ProcessingStateParameter[_]
    input.Qs.source == STRING
    input.Qs.startIndex == INTEGER
    input.ProviderMetadata.Region == STRING
}

books.volumes.recommended.list

enum_MaxAllowedMaturityRatingParameter := [ "MAX_ALLOWED_MATURITY_RATING_UNDEFINED", "MATURE", "not-mature" ]

valid {
    input.Qs.locale == STRING
    input.Qs.maxAllowedMaturityRating == enum_MaxAllowedMaturityRatingParameter[_]
    input.Qs.source == STRING
    input.ProviderMetadata.Region == STRING
}

books.volumes.recommended.rate

enum_RatingParameter := [ "RATING_UNDEFINED", "HAVE_IT", "NOT_INTERESTED" ]

valid {
    input.Qs.locale == STRING
    input.Qs.rating == enum_RatingParameter[_]
    input.Qs.source == STRING
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}

books.volumes.useruploaded.list

enum_ProcessingStateParameter := [ "PROCESSING_STATE_UNDEFINED", "COMPLETED_FAILED", "COMPLETED_SUCCESS", "RUNNING" ]

valid {
    input.Qs.locale == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.processingState == enum_ProcessingStateParameter[_]
    input.Qs.source == STRING
    input.Qs.startIndex == INTEGER
    input.Qs.volumeId == STRING
    input.ProviderMetadata.Region == STRING
}