diff --git a/build.gradle b/build.gradle index 97222da..bbf455b 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,6 @@ group = 'com.dragons.aurora' version = '2.4' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 -compileJava.options.encoding = 'UTF-8' buildscript { repositories { @@ -47,16 +46,18 @@ tasks.withType(JavaCompile) { protobuf { protoc { - artifact = 'com.google.protobuf:protoc:3.5.1' + artifact = 'com.google.protobuf:protoc:3.11.2' } + plugins { javalite { artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0' } } + generateProtoTasks { all()*.plugins { - javalite { } + javalite {} } all().each { task -> task.builtins { diff --git a/src/main/proto/GooglePlay.proto b/src/main/proto/GooglePlay.proto index 005e5a3..dbde7ed 100644 --- a/src/main/proto/GooglePlay.proto +++ b/src/main/proto/GooglePlay.proto @@ -4,1276 +4,1807 @@ option java_multiple_files = true; // Both sha1 and sha256 are encoded with base64 with URL and Filename Safe Alphabet with padding removed message AndroidAppDeliveryData { - optional int64 downloadSize = 1; - optional string sha1 = 2; - optional string downloadUrl = 3; - repeated AppFileMetadata additionalFile = 4; - repeated HttpCookie downloadAuthCookie = 5; - optional bool forwardLocked = 6; - optional int64 refundTimeout = 7; - optional bool serverInitiated = 8; - optional int64 postInstallRefundWindowMillis = 9; - optional bool immediateStartNeeded = 10; - optional AndroidAppPatchData patchData = 11; - optional EncryptionParams encryptionParams = 12; - optional string downloadUrlGzipped = 13; - optional int64 downloadSizeGzipped = 14; - repeated Split split = 15; - optional string sha256 = 19; -} -message Split { - optional string name = 1; - optional int64 size = 2; - optional int64 sizeGzipped = 3; - optional string sha1 = 4; - optional string downloadUrl = 5; - optional string downloadUrlGzipped = 6; - optional string sha256 = 9; + optional int64 downloadSize = 1; + optional string sha1 = 2; + optional string downloadUrl = 3; + repeated AppFileMetadata additionalFile = 4; + repeated HttpCookie downloadAuthCookie = 5; + optional bool forwardLocked = 6; + optional int64 refundTimeout = 7; + optional bool serverInitiated = 8; + optional int64 postInstallRefundWindowMillis = 9; + optional bool immediateStartNeeded = 10; + optional AndroidAppPatchData patchData = 11; + optional EncryptionParams encryptionParams = 12; + optional string gzippedDownloadUrl = 13; + optional int64 gzippedDownloadSize = 14; + repeated SplitDeliveryData splitDeliveryData = 15; + optional int32 installLocation = 16; + optional string sha256 = 19; +} +message SplitDeliveryData { + optional string name = 1; + optional int64 downloadSize = 2; + optional int64 gzippedDownloadSize = 3; + optional string sha1 = 4; + optional string downloadUrl = 5; + optional string gzippedDownloadUrl = 6; + optional AndroidAppPatchData patchData = 7; + optional string sha256 = 9; } message AndroidAppPatchData { - optional int32 baseVersionCode = 1; - optional string baseSha1 = 2; - optional string downloadUrl = 3; - optional int32 patchFormat = 4; - optional int64 maxPatchSize = 5; + optional int32 baseVersionCode = 1; + optional string baseSha1 = 2; + optional string downloadUrl = 3; + optional int32 patchFormat = 4; + optional int64 maxPatchSize = 5; } message AppFileMetadata { - optional int32 fileType = 1; - optional int32 versionCode = 2; - optional int64 size = 3; - optional string downloadUrl = 4; - optional int64 sizeGzipped = 6; - optional string downloadUrlGzipped = 7; - optional string sha1 = 8; + optional int32 fileType = 1; + optional int32 versionCode = 2; + optional int64 size = 3; + optional string downloadUrl = 4; + optional int64 sizeGzipped = 6; + optional string downloadUrlGzipped = 7; + optional string sha1 = 8; } message EncryptionParams { - optional int32 version = 1; - optional string encryptionKey = 2; - optional string hmacKey = 3; + optional int32 version = 1; + optional string encryptionKey = 2; + optional string hmacKey = 3; } message HttpCookie { - optional string name = 1; - optional string value = 2; + optional string name = 1; + optional string value = 2; } message Address { - optional string name = 1; - optional string addressLine1 = 2; - optional string addressLine2 = 3; - optional string city = 4; - optional string state = 5; - optional string postalCode = 6; - optional string postalCountry = 7; - optional string dependentLocality = 8; - optional string sortingCode = 9; - optional string languageCode = 10; - optional string phoneNumber = 11; - optional bool isReduced = 12; - optional string firstName = 13; - optional string lastName = 14; - optional string email = 15; + optional string name = 1; + optional string addressLine1 = 2; + optional string addressLine2 = 3; + optional string city = 4; + optional string state = 5; + optional string postalCode = 6; + optional string postalCountry = 7; + optional string dependentLocality = 8; + optional string sortingCode = 9; + optional string languageCode = 10; + optional string phoneNumber = 11; + optional bool deprecatedIsReduced = 12; + optional string firstName = 13; + optional string lastName = 14; + optional string email = 15; } message BookAuthor { - optional string name = 1; - optional string deprecatedQuery = 2; - optional Docid docid = 3; + optional string name = 1; + optional string deprecatedQuery = 2; + optional Docid docid = 3; } message BookDetails { - repeated BookSubject subject = 3; - optional string publisher = 4; - optional string publicationDate = 5; - optional string isbn = 6; - optional int32 numberOfPages = 7; - optional string subtitle = 8; - repeated BookAuthor author = 9; - optional string readerUrl = 10; - optional string downloadEpubUrl = 11; - optional string downloadPdfUrl = 12; - optional string acsEpubTokenUrl = 13; - optional string acsPdfTokenUrl = 14; - optional bool epubAvailable = 15; - optional bool pdfAvailable = 16; - optional string aboutTheAuthor = 17; - repeated group Identifier = 18 { - optional int32 type = 19; - optional string identifier = 20; - } + repeated BookSubject subject = 3; + optional string publisher = 4; + optional string publicationDate = 5; + optional string isbn = 6; + optional int32 numberOfPages = 7; + optional string subtitle = 8; + repeated BookAuthor author = 9; + optional string readerUrl = 10; + optional string downloadEpubUrl = 11; + optional string downloadPdfUrl = 12; + optional string acsEpubTokenUrl = 13; + optional string acsPdfTokenUrl = 14; + optional bool epubAvailable = 15; + optional bool pdfAvailable = 16; + optional string aboutTheAuthor = 17; + repeated group Identifier = 18 { + optional int32 type = 19; + optional string identifier = 20; + } + optional bool fixedLayoutContent = 21; + optional bool audioVideoContent = 22; + optional bool isAgencyBook = 23; } message BookSubject { - optional string name = 1; - optional string query = 2; - optional string subjectId = 3; + optional string name = 1; + optional string query = 2; + optional string subjectId = 3; } message BrowseLink { - optional string name = 1; - optional string dataUrl = 3; - optional Image icon = 5; - optional UnknownCategoryContainer unknownCategoryContainer = 4; + optional string name = 1; + optional string dataUrl = 3; + optional UnknownCategoryContainer unknownCategoryContainer = 4; + optional Image icon = 5; } message UnknownCategoryContainer { - optional CategoryIdContainer categoryIdContainer = 5; + optional CategoryIdContainer categoryIdContainer = 5; } message CategoryIdContainer { - optional string categoryId = 4; + optional string categoryId = 4; } message BrowseResponse { - optional string contentsUrl = 1; - optional string promoUrl = 2; - repeated BrowseLink category = 3; - repeated BrowseLink breadcrumb = 4; - optional CategoryContainer categoryContainer = 9; -} -message CategoryContainer { - repeated BrowseLink category = 4; + optional string contentsUrl = 1; + optional string promoUrl = 2; + repeated BrowseLink category = 3; + repeated BrowseLink breadcrumb = 4; + optional CategoryContainer categoryContainer = 9; + repeated QuickLink quickLink = 5; + optional bytes serverLogsCookie = 6; +} +message DirectPurchase { + optional string detailsUrl = 1; + optional string purchaseDocid = 2; + optional string parentDocid = 3; + optional int32 offerType = 4; } -message AddressChallenge { - optional string responseAddressParam = 1; - optional string responseCheckboxesParam = 2; - optional string title = 3; - optional string descriptionHtml = 4; - repeated FormCheckbox checkbox = 5; - optional Address address = 6; - repeated InputValidationError errorInputField = 7; - optional string errorHtml = 8; - repeated int32 requiredField = 9; + +message RedeemGiftCard { + optional string prefillCode = 1; + optional string partnerPayload = 2; +} +message ResolvedLink { + optional string detailsUrl = 1; + optional string browseUrl = 2; + optional string searchUrl = 3; + optional DirectPurchase directPurchase = 4; + optional string homeUrl = 5; + optional RedeemGiftCard redeemGiftCard = 6; + optional bytes serverLogsCookie = 7; + optional Docid docid = 8; + optional string wishlistUrl = 9; + optional int32 backend = 10; + optional string query = 11; +} +message QuickLink { + optional string name = 1; + optional Image image = 2; + optional ResolvedLink link = 3; + optional bool displayRequired = 4; + optional bytes serverLogsCookie = 5; + optional int32 backendId = 6; + optional bool prismStyle = 7; } -message AuthenticationChallenge { - optional int32 authenticationType = 1; - optional string responseAuthenticationTypeParam = 2; - optional string responseRetryCountParam = 3; - optional string pinHeaderText = 4; - optional string pinDescriptionTextHtml = 5; - optional string gaiaHeaderText = 6; - optional string gaiaDescriptionTextHtml = 7; + +message CategoryContainer { + repeated BrowseLink category = 4; } message BuyResponse { - optional PurchaseNotificationResponse purchaseResponse = 1; - optional group CheckoutInfo = 2 { - optional LineItem item = 3; - repeated LineItem subItem = 4; - repeated group CheckoutOption = 5 { - optional string formOfPayment = 6; - optional string encodedAdjustedCart = 7; - optional string instrumentId = 15; - repeated LineItem item = 16; - repeated LineItem subItem = 17; - optional LineItem total = 18; - repeated string footerHtml = 19; - optional int32 instrumentFamily = 29; - repeated int32 deprecatedInstrumentInapplicableReason = 30; - optional bool selectedInstrument = 32; - optional LineItem summary = 33; - repeated string footnoteHtml = 35; - optional Instrument instrument = 43; - optional string purchaseCookie = 45; - repeated string disabledReason = 48; + optional PurchaseNotificationResponse purchaseResponse = 1; + optional group CheckoutInfo = 2 { + optional LineItem item = 3; + repeated LineItem subItem = 4; + repeated group CheckoutOption = 5 { + optional string formOfPayment = 6; + optional string encodedAdjustedCart = 7; + optional string instrumentId = 15; + repeated LineItem item = 16; + repeated LineItem subItem = 17; + optional LineItem total = 18; + repeated string footerHtml = 19; + optional int32 instrumentFamily = 29; + repeated int32 deprecatedInstrumentInapplicableReason = 30; + optional bool selectedInstrument = 32; + optional LineItem summary = 33; + repeated string footnoteHtml = 35; + optional Instrument instrument = 43; + optional string purchaseCookie = 45; + repeated string disabledReason = 48; + } + optional string deprecatedCheckoutUrl = 10; + optional string addInstrumentUrl = 11; + repeated string footerHtml = 20; + repeated int32 eligibleInstrumentFamily = 31; + repeated string footnoteHtml = 36; + repeated Instrument eligibleInstrument = 44; } - optional string deprecatedCheckoutUrl = 10; - optional string addInstrumentUrl = 11; - repeated string footerHtml = 20; - repeated int32 eligibleInstrumentFamily = 31; - repeated string footnoteHtml = 36; - repeated Instrument eligibleInstrument = 44; - } - optional string continueViaUrl = 8; - optional string purchaseStatusUrl = 9; - optional string checkoutServiceId = 12; - optional bool checkoutTokenRequired = 13; - optional string baseCheckoutUrl = 14; - repeated string tosCheckboxHtml = 37; - optional int32 iabPermissionError = 38; - optional PurchaseStatusResponse purchaseStatusResponse = 39; - optional string purchaseCookie = 46; - optional Challenge challenge = 49; - optional string downloadToken = 55; -} -message Challenge { - optional AddressChallenge addressChallenge = 1; - optional AuthenticationChallenge authenticationChallenge = 2; -} -message FormCheckbox { - optional string description = 1; - optional bool checked = 2; - optional bool required = 3; + optional string continueViaUrl = 8; + optional string purchaseStatusUrl = 9; + optional string checkoutServiceId = 12; + optional bool checkoutTokenRequired = 13; + optional string baseCheckoutUrl = 14; + repeated string tosCheckboxHtml = 37; + optional int32 iabPermissionError = 38; + optional PurchaseStatusResponse purchaseStatusResponse = 39; + optional string purchaseCookie = 46; + optional Challenge challenge = 49; + optional string downloadToken = 55; + optional string addInstrumentPromptHtml = 50; + optional string confirmButtonText = 51; + optional string permissionErrorTitleText = 52; + optional string permissionErrorMessageText = 53; + optional bytes serverLogsCookie = 54; } message LineItem { - optional string name = 1; - optional string description = 2; - optional Offer offer = 3; - optional Money amount = 4; + optional string name = 1; + optional string description = 2; + optional Offer offer = 3; + optional Money amount = 4; } message Money { - optional int64 micros = 1; - optional string currencyCode = 2; - optional string formattedAmount = 3; + optional int64 micros = 1; + optional string currencyCode = 2; + optional string formattedAmount = 3; } message PurchaseNotificationResponse { - optional int32 status = 1; - optional DebugInfo debugInfo = 2; - optional string localizedErrorMessage = 3; - optional string purchaseId = 4; + optional int32 status = 1; + optional DebugInfo debugInfo = 2; + optional string localizedErrorMessage = 3; + optional string purchaseId = 4; } message PurchaseStatusResponse { - optional int32 status = 1; - optional string statusMsg = 2; - optional string statusTitle = 3; - optional string briefMessage = 4; - optional string infoUrl = 5; - optional LibraryUpdate libraryUpdate = 6; - optional Instrument rejectedInstrument = 7; - optional AndroidAppDeliveryData appDeliveryData = 8; + optional int32 status = 1; + optional string statusMsg = 2; + optional string statusTitle = 3; + optional string briefMessage = 4; + optional string infoUrl = 5; + optional LibraryUpdate libraryUpdate = 6; + optional Instrument rejectedInstrument = 7; + optional AndroidAppDeliveryData appDeliveryData = 8; +} +message BillingProfileResponse { + optional int32 result = 1; + optional BillingProfile billingProfile = 2; + optional string userMessageHtml = 3; +} +message CheckInstrumentResponse { + optional bool userHasValidInstrument = 1; + optional bool checkoutTokenRequired = 2; + repeated Instrument instrument = 4; + repeated Instrument eligibleInstrument = 5; +} +message InstrumentSetupInfoResponse { + repeated InstrumentSetupInfo setupInfo = 1; + optional bool checkoutTokenRequired = 2; +} +message RedeemGiftCardRequest { + optional string giftCardPin = 1; + optional Address address = 2; + repeated string acceptedLegalDocumentId = 3; + optional string checkoutToken = 4; +} +message RedeemGiftCardResponse { + optional int32 result = 1; + optional string userMessageHtml = 2; + optional string balanceHtml = 3; + optional AddressChallenge addressChallenge = 4; + optional bool checkoutTokenRequired = 5; +} +message UpdateInstrumentRequest { + optional Instrument instrument = 1; + optional string checkoutToken = 2; +} +message UpdateInstrumentResponse { + optional int32 result = 1; + optional string instrumentId = 2; + optional string userMessageHtml = 3; + repeated InputValidationError errorInputField = 4; + optional bool checkoutTokenRequired = 5; + optional RedeemedPromoOffer redeemedOffer = 6; +} +message InitiateAssociationResponse { + optional string userToken = 1; +} +message VerifyAssociationResponse { + optional int32 status = 1; + optional Address billingAddress = 2; + optional CarrierTos carrierTos = 3; + optional string carrierErrorMessage = 4; } -message DeliveryResponse { - optional AndroidAppDeliveryData appDeliveryData = 2; +message AddressChallenge { + optional string responseAddressParam = 1; + optional string responseCheckboxesParam = 2; + optional string title = 3; + optional string descriptionHtml = 4; + repeated FormCheckbox checkbox = 5; + optional Address address = 6; + repeated InputValidationError errorInputField = 7; + optional string errorHtml = 8; + repeated int32 requiredField = 9; + repeated Country supportedCountry = 10; +} +message AuthenticationChallenge { + optional int32 authenticationType = 1; + optional string responseAuthenticationTypeParam = 2; + optional string responseRetryCountParam = 3; + optional string pinHeaderText = 4; + optional string pinDescriptionTextHtml = 5; + optional string gaiaHeaderText = 6; + optional string gaiaDescriptionTextHtml = 7; + optional string gaiaFooterTextHtml = 8; + optional FormCheckbox gaiaOptOutCheckbox = 9; + optional string gaiaOptOutDescriptionTextHtml = 10; +} +message Challenge { + optional AddressChallenge addressChallenge = 1; + optional AuthenticationChallenge authenticationChallenge = 2; + optional WebViewChallenge webViewChallenge = 3; +} +message Country { + optional string regionCode = 1; + optional string displayName = 2; +} +message FormCheckbox { + optional string description = 1; + optional bool checked = 2; + optional bool required = 3; + optional string id = 4; +} +message InputValidationError { + optional int32 inputField = 1; + optional string errorMessage = 2; +} +message WebViewChallenge { + optional string startUrl = 1; + optional string targetUrlRegexp = 2; + optional string cancelButtonDisplayLabel = 3; + optional string responseTargetUrlParam = 4; + optional string cancelUrlRegexp = 5; + optional string title = 6; +} +message AddCreditCardPromoOffer { + optional string headerText = 1; + optional string descriptionHtml = 2; + optional Image image = 3; + optional string introductoryTextHtml = 4; + optional string offerTitle = 5; + optional string noActionDescription = 6; + optional string termsAndConditionsHtml = 7; +} +message AvailablePromoOffer { + optional AddCreditCardPromoOffer addCreditCardOffer = 1; +} +message CheckPromoOfferResponse { + repeated AvailablePromoOffer availableOffer = 1; + optional RedeemedPromoOffer redeemedOffer = 2; + optional bool checkoutTokenRequired = 3; +} +message RedeemedPromoOffer { + optional string headerText = 1; + optional string descriptionHtml = 2; + optional Image image = 3; +} +message ActiveExperiments { + repeated string clientAlteringExperiment = 1; + repeated string otherExperiment = 2; + repeated int32 gwsExperiment = 3; +} +message AndroidClientInfo { + optional int64 androidId = 1; + optional string loggingId = 2; + optional int32 sdkVersion = 3; + optional string model = 4; + optional string product = 5; + optional string osBuild = 6; + optional string applicationBuild = 7; + optional string hardware = 8; + optional string device = 9; + optional string mccMnc = 10; + optional string locale = 11; + optional string country = 12; +} +message ClientInfo { + optional int32 clientType = 1; + optional AndroidClientInfo androidClientInfo = 2; + optional DesktopClientInfo desktopClientInfo = 3; + optional IosClientInfo iosClientInfo = 4; +} +message DesktopClientInfo { + optional string clientId = 1; + optional string loggingId = 2; + optional string os = 3; + optional string osMajorVersion = 4; + optional string osFullVersion = 5; + optional string applicationBuild = 6; +} +message ExperimentIdList { + repeated string id = 1; +} +message IosClientInfo { + optional string clientId = 1; + optional string loggingId = 2; + optional string osMajorVersion = 3; + optional string osFullVersion = 4; + optional string applicationBuild = 5; +} +message LogEvent { + optional int64 eventTimeMs = 1; + optional string tag = 2; + repeated LogEventKeyValues value = 3; + optional bytes sourceExtension = 6; + optional ActiveExperiments exp = 7; +} +message LogEventKeyValues { + optional string key = 1; + optional string value = 2; +} +message LogResponse { + optional int64 nextRequestWaitMillis = 1; + optional ExperimentIdList experiments = 2; } message Docid { - optional string backendDocid = 1; - optional int32 type = 2; - optional int32 backend = 3; + optional string backendDocid = 1; + optional int32 type = 2; + optional int32 backend = 3; } message Install { - optional fixed64 androidId = 1; - optional int32 version = 2; - optional bool bundled = 3; + optional fixed64 androidId = 1; + optional int32 version = 2; + optional bool bundled = 3; + optional bool pending = 4; } -message Offer { - optional int64 micros = 1; - optional string currencyCode = 2; - optional string formattedAmount = 3; - repeated Offer convertedPrice = 4; - optional bool checkoutFlowRequired = 5; - optional int64 fullPriceMicros = 6; - optional string formattedFullAmount = 7; - optional int32 offerType = 8; - optional RentalTerms rentalTerms = 9; - optional int64 onSaleDate = 10; - repeated string promotionLabel = 11; - optional SubscriptionTerms subscriptionTerms = 12; - optional string formattedName = 13; - optional string formattedDescription = 14; - optional bool sale = 22; - optional string message = 26; - optional int64 saleEndTimestamp = 30; - optional string saleMessage = 31; +message GroupLicenseKey { } -message OwnershipInfo { - optional int64 initiationTimestampMsec = 1; - optional int64 validUntilTimestampMsec = 2; - optional bool autoRenewing = 3; - optional int64 refundTimeoutTimestampMsec = 4; - optional int64 postDeliveryRefundWindowMsec = 5; +message LicenseTerms { + optional GroupLicenseKey groupLicenseKey = 1; +} +message Offer { + optional int64 micros = 1; + optional string currencyCode = 2; + optional string formattedAmount = 3; + repeated Offer convertedPrice = 4; + optional bool checkoutFlowRequired = 5; + optional int64 fullPriceMicros = 6; + optional string formattedFullAmount = 7; + optional int32 offerType = 8; + optional RentalTerms rentalTerms = 9; + optional int64 onSaleDate = 10; + repeated string promotionLabel = 11; + optional SubscriptionTerms subscriptionTerms = 12; + optional string formattedName = 13; + optional string formattedDescription = 14; + optional int64 saleEndTimestamp = 30; + optional string saleMessage = 31; + optional bool preorder = 15; + optional int32 onSaleDateDisplayTimeZoneOffsetMsec = 16; + optional int32 licensedOfferType = 17; + optional SubscriptionContentTerms subscriptionContentTerms = 18; + optional string offerId = 19; + optional int64 preorderFulfillmentDisplayDate = 20; + optional LicenseTerms licenseTerms = 21; + optional bool sale = 22; + optional VoucherTerms voucherTerms = 23; + repeated OfferPayment offerPayment = 24; + optional bool repeatLastPayment = 25; + optional string buyButtonLabel = 26; + optional bool instantPurchaseEnabled = 27; +} +message MonthAndDay { + optional uint32 month = 1; + optional uint32 day = 2; +} +message OfferPaymentPeriod { + optional TimePeriod duration = 1; + optional MonthAndDay start = 2; + optional MonthAndDay end = 3; +} +message OfferPaymentOverride { + optional int64 micros = 1; + optional MonthAndDay start = 2; + optional MonthAndDay end = 3; +} +message OfferPayment { + optional int64 micros = 1; + optional string currencyCode = 2; + optional OfferPaymentPeriod offerPaymentPeriod = 3; + repeated OfferPaymentOverride offerPaymentOverride = 4; +} +message VoucherTerms { } message RentalTerms { - optional int32 grantPeriodSeconds = 1; - optional int32 activatePeriodSeconds = 2; + optional int32 dEPRECATEDGrantPeriodSeconds = 1; + optional int32 dEPRECATEDActivatePeriodSeconds = 2; + optional TimePeriod grantPeriod = 3; + optional TimePeriod activatePeriod = 4; +} +message SignedData { + optional string signedData = 1; + optional string signature = 2; +} +message SubscriptionContentTerms { + optional Docid requiredSubscription = 1; +} +message GroupLicenseInfo { + optional int32 licensedOfferType = 1; + optional fixed64 gaiaGroupId = 2; +} +message LicensedDocumentInfo { + repeated fixed64 gaiaGroupId = 1; +} +message OwnershipInfo { + optional int64 initiationTimestampMsec = 1; + optional int64 validUntilTimestampMsec = 2; + optional bool autoRenewing = 3; + optional int64 refundTimeoutTimestampMsec = 4; + optional int64 postDeliveryRefundWindowMsec = 5; + optional SignedData developerPurchaseInfo = 6; + optional bool preordered = 7; + optional bool hidden = 8; + optional RentalTerms rentalTerms = 9; + optional GroupLicenseInfo groupLicenseInfo = 10; + optional LicensedDocumentInfo licensedDocumentInfo = 11; + optional int32 quantity = 12; + optional int64 libraryExpirationTimestampMsec = 14; } message SubscriptionTerms { - optional TimePeriod recurringPeriod = 1; - optional TimePeriod trialPeriod = 2; + optional TimePeriod recurringPeriod = 1; + optional TimePeriod trialPeriod = 2; } message TimePeriod { - optional int32 unit = 1; - optional int32 count = 2; + optional int32 unit = 1; + optional int32 count = 2; } message BillingAddressSpec { - optional int32 billingAddressType = 1; - repeated int32 requiredField = 2; + optional int32 billingAddressType = 1; + repeated int32 requiredField = 2; +} +message BillingProfile { + repeated Instrument instrument = 1; + optional string selectedExternalInstrumentId = 2; + repeated BillingProfileOption billingProfileOption = 3; +} +message BillingProfileOption { + optional int32 type = 1; + optional string displayTitle = 2; + optional string externalInstrumentId = 3; + optional TopupInfo topupInfo = 4; + optional CarrierBillingInstrumentStatus carrierBillingInstrumentStatus = 5; } message CarrierBillingCredentials { - optional string value = 1; - optional int64 expiration = 2; + optional string value = 1; + optional int64 expiration = 2; } message CarrierBillingInstrument { - optional string instrumentKey = 1; - optional string accountType = 2; - optional string currencyCode = 3; - optional int64 transactionLimit = 4; - optional string subscriberIdentifier = 5; - optional EncryptedSubscriberInfo encryptedSubscriberInfo = 6; - optional CarrierBillingCredentials credentials = 7; - optional CarrierTos acceptedCarrierTos = 8; + optional string instrumentKey = 1; + optional string accountType = 2; + optional string currencyCode = 3; + optional int64 transactionLimit = 4; + optional string subscriberIdentifier = 5; + optional EncryptedSubscriberInfo encryptedSubscriberInfo = 6; + optional CarrierBillingCredentials credentials = 7; + optional CarrierTos acceptedCarrierTos = 8; } message CarrierBillingInstrumentStatus { - optional CarrierTos carrierTos = 1; - optional bool associationRequired = 2; - optional bool passwordRequired = 3; - optional PasswordPrompt carrierPasswordPrompt = 4; - optional int32 apiVersion = 5; - optional string name = 6; + optional CarrierTos carrierTos = 1; + optional bool associationRequired = 2; + optional bool passwordRequired = 3; + optional PasswordPrompt carrierPasswordPrompt = 4; + optional int32 apiVersion = 5; + optional string name = 6; + optional DeviceAssociation deviceAssociation = 7; + optional string carrierSupportPhoneNumber = 8; } message CarrierTos { - optional CarrierTosEntry dcbTos = 1; - optional CarrierTosEntry piiTos = 2; - optional bool needsDcbTosAcceptance = 3; - optional bool needsPiiTosAcceptance = 4; + optional CarrierTosEntry dcbTos = 1; + optional CarrierTosEntry piiTos = 2; + optional bool needsDcbTosAcceptance = 3; + optional bool needsPiiTosAcceptance = 4; } message CarrierTosEntry { - optional string url = 1; - optional string version = 2; + optional string url = 1; + optional string version = 2; } message CreditCardInstrument { - optional int32 type = 1; - optional string escrowHandle = 2; - optional string lastDigits = 3; - optional int32 expirationMonth = 4; - optional int32 expirationYear = 5; - repeated EfeParam escrowEfeParam = 6; + optional int32 type = 1; + optional string escrowHandle = 2; + optional string lastDigits = 3; + optional int32 expirationMonth = 4; + optional int32 expirationYear = 5; + repeated EfeParam escrowEfeParam = 6; +} +message DeviceAssociation { + optional string userTokenRequestMessage = 1; + optional string userTokenRequestAddress = 2; +} +message DisabledInfo { + optional int32 disabledReason = 1; + optional string disabledMessageHtml = 2; + optional string errorMessage = 3; } message EfeParam { - optional int32 key = 1; - optional string value = 2; -} -message InputValidationError { - optional int32 inputField = 1; - optional string errorMessage = 2; + optional int32 key = 1; + optional string value = 2; } message Instrument { - optional string instrumentId = 1; - optional Address billingAddress = 2; - optional CreditCardInstrument creditCard = 3; - optional CarrierBillingInstrument carrierBilling = 4; - optional BillingAddressSpec billingAddressSpec = 5; - optional int32 instrumentFamily = 6; - optional CarrierBillingInstrumentStatus carrierBillingStatus = 7; - optional string displayTitle = 8; + optional string instrumentId = 1; + optional Address billingAddress = 2; + optional CreditCardInstrument creditCard = 3; + optional CarrierBillingInstrument carrierBilling = 4; + optional BillingAddressSpec billingAddressSpec = 5; + optional int32 instrumentFamily = 6; + optional CarrierBillingInstrumentStatus carrierBillingStatus = 7; + optional string displayTitle = 8; + optional TopupInfo topupInfoDeprecated = 9; + optional int32 version = 10; + optional StoredValueInstrument storedValue = 11; + repeated DisabledInfo disabledInfo = 12; +} +message InstrumentSetupInfo { + optional int32 instrumentFamily = 1; + optional bool supported = 2; + optional AddressChallenge addressChallenge = 3; + optional Money balance = 4; + repeated string footerHtml = 5; } message PasswordPrompt { - optional string prompt = 1; - optional string forgotPasswordUrl = 2; + optional string prompt = 1; + optional string forgotPasswordUrl = 2; +} +message StoredValueInstrument { + optional int32 type = 1; + optional Money balance = 2; + optional TopupInfo topupInfo = 3; +} +message TopupInfo { + optional string optionsContainerDocidDeprecated = 1; + optional string optionsListUrl = 2; + optional string subtitle = 3; + optional Docid optionsContainerDocid = 4; +} +message ConsumePurchaseResponse { + optional LibraryUpdate libraryUpdate = 1; + optional int32 status = 2; } message ContainerMetadata { - optional string browseUrl = 1; - optional string nextPageUrl = 2; - optional double relevance = 3; - optional int64 estimatedResults = 4; - optional string analyticsCookie = 5; - optional bool ordered = 6; + optional string browseUrl = 1; + optional string nextPageUrl = 2; + optional double relevance = 3; + optional int64 estimatedResults = 4; + optional string analyticsCookie = 5; + optional bool ordered = 6; + repeated ContainerView containerView = 7; +} +message ContainerView { + optional bool selected = 1; + optional string title = 2; + optional string listUrl = 3; + optional bytes serverLogsCookie = 4; +} +message FlagContentResponse { +} +message ClientDownloadRequest { + message ApkInfo { + optional string packageName = 1; + optional int32 versionCode = 2; + } + message CertificateChain { + message Element { + optional bytes certificate = 1; + optional bool parsedSuccessfully = 2; + optional bytes subject = 3; + optional bytes issuer = 4; + optional bytes fingerprint = 5; + optional int64 expiryTime = 6; + optional int64 startTime = 7; + } + repeated Element element = 1; + } + message Digests { + optional bytes sha256 = 1; + optional bytes sha1 = 2; + optional bytes md5 = 3; + } + message Resource { + optional string url = 1; + optional int32 type = 2; + optional bytes remoteIp = 3; + optional string referrer = 4; + } + message SignatureInfo { + repeated CertificateChain certificateChain = 1; + optional bool trusted = 2; + } + optional string url = 1; + optional Digests digests = 2; + optional int64 length = 3; + repeated Resource resources = 4; + optional SignatureInfo signature = 5; + optional bool userInitiated = 6; + repeated string clientAsn = 8; + optional string fileBasename = 9; + optional int32 downloadType = 10; + optional string locale = 11; + optional ApkInfo apkInfo = 12; + optional fixed64 androidId = 13; + repeated string originatingPackages = 15; + optional SignatureInfo originatingSignature = 17; +} +message ClientDownloadResponse { + message MoreInfo { + optional string description = 1; + optional string url = 2; + } + optional int32 verdict = 1; + optional MoreInfo moreInfo = 2; + optional bytes token = 3; +} +message ClientDownloadStatsRequest { + optional int32 userDecision = 1; + optional bytes token = 2; } - message DebugInfo { - repeated string message = 1; - repeated group Timing = 2 { - optional string name = 3; - optional double timeInMs = 4; - } + repeated string message = 1; + repeated group Timing = 2 { + optional string name = 3; + optional double timeInMs = 4; + } +} +message DebugSettingsResponse { + optional string playCountryOverride = 1; + optional string playCountryDebugInfo = 2; +} +message DeliveryResponse { + optional int32 status = 1; + optional AndroidAppDeliveryData appDeliveryData = 2; } - message BulkDetailsEntry { - optional DocV2 doc = 1; + optional DocV2 doc = 1; } message BulkDetailsRequest { - repeated string docid = 1; - optional bool includeChildDocs = 2; + repeated string docid = 1; + optional bool includeChildDocs = 2; + optional bool includeDetails = 3; + optional string sourcePackageName = 4; + repeated int32 installedVersionCode = 5; } message BulkDetailsResponse { - repeated BulkDetailsEntry entry = 1; + repeated BulkDetailsEntry entry = 1; } message DetailsResponse { - optional DocV1 docV1 = 1; - optional string analyticsCookie = 2; - optional Review userReview = 3; - optional DocV2 docV2 = 4; - optional string footerHtml = 5; - repeated Badge badge = 7; - optional Features features = 12; - optional string detailsStreamUrl = 13; - optional string userReviewUrl = 14; - optional string postAcquireDetailsStreamUrl = 17; + optional DocV1 docV1 = 1; + optional string analyticsCookie = 2; + optional Review userReview = 3; + optional DocV2 docV2 = 4; + optional string footerHtml = 5; + repeated Badge badge = 7; + optional Features features = 12; + optional string detailsStreamUrl = 13; + optional string userReviewUrl = 14; + optional string postAcquireDetailsStreamUrl = 17; } message Badge { - optional string label = 1; - optional Image image = 2; - optional BadgeContainer1 badgeContainer1 = 4; - optional string message = 11; + optional string label = 1; + optional Image image = 2; + optional int32 backgroundColor = 3; + optional BadgeContainer1 badgeContainer1 = 4; + optional bytes serverLogsCookie = 5; + optional bool isPlusOne = 6; + optional float aggregateRating = 7; + optional int32 userStarRating = 8; + optional string downloadCount = 9; + optional string downloadUnits = 10; + optional string message = 11; } message BadgeContainer1 { - optional BadgeContainer2 badgeContainer2 = 1; + optional BadgeContainer2 badgeContainer2 = 1; } message BadgeContainer2 { - optional BadgeLinkContainer badgeLinkContainer = 2; + optional BadgeLinkContainer badgeLinkContainer = 2; } message BadgeLinkContainer { - optional string link = 2; + optional string link = 2; + optional string criticReviewsUrl = 3; } message Features { - repeated Feature featurePresence = 1; - repeated Feature featureRating = 2; + repeated Feature featurePresence = 1; + repeated Feature featureRating = 2; } message Feature { - optional string label = 1; - optional string value = 3; + optional string label = 1; + optional string value = 3; } message DeviceConfigurationProto { - optional int32 touchScreen = 1; - optional int32 keyboard = 2; - optional int32 navigation = 3; - optional int32 screenLayout = 4; - optional bool hasHardKeyboard = 5; - optional bool hasFiveWayNavigation = 6; - optional int32 screenDensity = 7; - optional int32 glEsVersion = 8; - repeated string systemSharedLibrary = 9; - repeated string systemAvailableFeature = 10; - repeated string nativePlatform = 11; - optional int32 screenWidth = 12; - optional int32 screenHeight = 13; - repeated string systemSupportedLocale = 14; - repeated string glExtension = 15; - optional int32 deviceClass = 16; - optional int32 maxApkDownloadSizeMb = 17; + optional int32 touchScreen = 1; + optional int32 keyboard = 2; + optional int32 navigation = 3; + optional int32 screenLayout = 4; + optional bool hasHardKeyboard = 5; + optional bool hasFiveWayNavigation = 6; + optional int32 screenDensity = 7; + optional int32 glEsVersion = 8; + repeated string systemSharedLibrary = 9; + repeated string systemAvailableFeature = 10; + repeated string nativePlatform = 11; + optional int32 screenWidth = 12; + optional int32 screenHeight = 13; + repeated string systemSupportedLocale = 14; + repeated string glExtension = 15; + optional int32 deviceClass = 16; + optional int32 maxApkDownloadSizeMb = 17; } message Document { - optional Docid docid = 1; - optional Docid fetchDocid = 2; - optional Docid sampleDocid = 3; - optional string title = 4; - optional string url = 5; - repeated string snippet = 6; - optional Offer priceDeprecated = 7; - optional Availability availability = 9; - repeated Image image = 10; - repeated Document child = 11; - optional AggregateRating aggregateRating = 13; - repeated Offer offer = 14; - repeated TranslatedText translatedSnippet = 15; - repeated DocumentVariant documentVariant = 16; - repeated string categoryId = 17; - repeated Document decoration = 18; - repeated Document parent = 19; - optional string privacyPolicyUrl = 20; + optional Docid docid = 1; + optional Docid fetchDocid = 2; + optional Docid sampleDocid = 3; + optional string title = 4; + optional string url = 5; + repeated string snippet = 6; + optional Offer priceDeprecated = 7; + optional Availability availability = 9; + repeated Image image = 10; + repeated Document child = 11; + optional AggregateRating aggregateRating = 13; + repeated Offer offer = 14; + repeated TranslatedText translatedSnippet = 15; + repeated DocumentVariant documentVariant = 16; + repeated string categoryId = 17; + repeated Document decoration = 18; + repeated Document parent = 19; + optional string privacyPolicyUrl = 20; + optional string consumptionUrl = 21; + optional int32 estimatedNumChildren = 22; + optional string subtitle = 23; } message DocumentVariant { - optional int32 variationType = 1; - optional Rule rule = 2; - optional string title = 3; - repeated string snippet = 4; - optional string recentChanges = 5; - repeated TranslatedText autoTranslation = 6; - repeated Offer offer = 7; - optional int64 channelId = 9; - repeated Document child = 10; - repeated Document decoration = 11; + optional int32 variationType = 1; + optional Rule rule = 2; + optional string title = 3; + repeated string snippet = 4; + optional string recentChanges = 5; + repeated TranslatedText autoTranslation = 6; + repeated Offer offer = 7; + optional int64 channelId = 9; + repeated Document child = 10; + repeated Document decoration = 11; + repeated Image image = 12; + repeated string categoryId = 13; + optional string subtitle = 14; } message Image { - optional int32 imageType = 1; - optional group Dimension = 2 { - optional int32 width = 3; - optional int32 height = 4; - } - optional string imageUrl = 5; - optional string altTextLocalized = 6; - optional string secureUrl = 7; - optional int32 positionInSequence = 8; - optional bool supportsFifeUrlOptions = 9; - optional group Citation = 10 { - optional string titleLocalized = 11; - optional string url = 12; - } - optional string color = 15; - optional int32 screenshotSetNumber = 21; + optional int32 imageType = 1; + optional group Dimension = 2 { + optional int32 width = 3; + optional int32 height = 4; + } + optional string imageUrl = 5; + optional string altTextLocalized = 6; + optional string secureUrl = 7; + optional int32 positionInSequence = 8; + optional bool supportsFifeUrlOptions = 9; + optional group Citation = 10 { + optional string titleLocalized = 11; + optional string url = 12; + } + optional int32 durationSeconds = 14; + optional string color = 15; + optional bool autogen = 16; + optional Attribution attribution = 17; + optional string backgroundColorRgb = 19; + optional ImagePalette palette = 20; + optional int32 screenshotSetNumber = 21; + optional bool supportsFifeMonogramOption = 22; +} +message Attribution { + optional string sourceTitle = 1; + optional string sourceUrl = 2; + optional string licenseTitle = 3; + optional string licenseUrl = 4; +} +message ImagePalette { } message TranslatedText { - optional string text = 1; - optional string sourceLocale = 2; - optional string targetLocale = 3; + optional string text = 1; + optional string sourceLocale = 2; + optional string targetLocale = 3; } message PlusOneData { - optional bool setByUser = 1; - optional int64 total = 2; - optional int64 circlesTotal = 3; - repeated PlusPerson circlesPeople = 4; + optional bool setByUser = 1; + optional int64 total = 2; + optional int64 circlesTotal = 3; + repeated PlusPerson circlesPeople = 4; } message PlusPerson { - optional string displayName = 2; - optional string profileImageUrl = 4; + optional string displayName = 2; + optional string profileImageUrl = 4; } message AlbumDetails { - optional string name = 1; - optional MusicDetails details = 2; - optional ArtistDetails displayArtist = 3; + optional string name = 1; + optional MusicDetails details = 2; + optional ArtistDetails displayArtist = 3; } message AppDetails { - optional string developerName = 1; - optional int32 majorVersionNumber = 2; - optional int32 versionCode = 3; - optional string versionString = 4; - optional string title = 5; - repeated string appCategory = 7; - optional int32 contentRating = 8; - optional int64 installationSize = 9; - repeated string permission = 10; - optional string developerEmail = 11; - optional string developerWebsite = 12; - optional string numDownloads = 13; - optional string packageName = 14; - optional string recentChangesHtml = 15; - optional string uploadDate = 16; - repeated FileMetadata file = 17; - optional string appType = 18; - optional bool unstable = 21; - optional bool hasInstantLink = 24; - optional string containsAds = 30; - optional Dependencies dependencies = 34; - optional TestingProgramInfo testingProgramInfo = 35; - optional EarlyAccessInfo earlyAccessInfo = 36; - optional string instantLink = 43; - optional string developerAddress = 45; + optional string developerName = 1; + optional int32 majorVersionNumber = 2; + optional int32 versionCode = 3; + optional string versionString = 4; + optional string title = 5; + repeated string appCategory = 7; + optional int32 contentRating = 8; + optional int64 installationSize = 9; + repeated string permission = 10; + optional string developerEmail = 11; + optional string developerWebsite = 12; + optional string numDownloads = 13; + optional string packageName = 14; + optional string recentChangesHtml = 15; + optional string uploadDate = 16; + repeated FileMetadata file = 17; + optional string appType = 18; + repeated string certificateHash = 19; + optional bool unstable = 21; + repeated CertificateSet certificateSet = 22; + repeated string autoAcquireFreeAppIfHigherVersionAvailableTag = 23; + optional bool hasInstantLink = 24; + repeated string splitId = 25; + optional bool gamepadRequired = 26; + optional bool externallyHosted = 27; + optional bool everExternallyHosted = 28; + optional string containsAds = 30; + optional int32 installLocation = 31; + optional int32 targetSdkVersion = 32; + optional string hasPreregistrationPromoCode = 33; + optional Dependencies dependencies = 34; + optional TestingProgramInfo testingProgramInfo = 35; + optional EarlyAccessInfo earlyAccessInfo = 36; + optional string instantLink = 43; + optional string developerAddress = 45; +} +message CertificateSet { + repeated string certificateHash = 1; } message Dependencies { - optional int32 unknown1 = 1; - optional int64 unknown2 = 2; - repeated Dependency dependency = 3; - optional int32 unknown3 = 4; + optional int32 unknown1 = 1; + optional int64 unknown2 = 2; + repeated Dependency dependency = 3; + optional int32 unknown3 = 4; } message Dependency { - optional string packageName = 1; - optional int32 version = 2; - optional int32 unknown4 = 4; + optional string packageName = 1; + optional int32 version = 2; + optional int32 unknown4 = 4; } message TestingProgramInfo { - optional bool subscribed = 2; - optional bool subscribed1 = 3; - optional string testingProgramEmail = 5; + optional bool subscribed = 2; + optional bool subscribed1 = 3; + optional string testingProgramEmail = 5; } message EarlyAccessInfo { - optional string email = 3; + optional string email = 3; } message ArtistDetails { - optional string detailsUrl = 1; - optional string name = 2; - optional ArtistExternalLinks externalLinks = 3; + optional string detailsUrl = 1; + optional string name = 2; + optional ArtistExternalLinks externalLinks = 3; } message ArtistExternalLinks { - repeated string websiteUrl = 1; - optional string googlePlusProfileUrl = 2; - optional string youtubeChannelUrl = 3; + repeated string websiteUrl = 1; + optional string googlePlusProfileUrl = 2; + optional string youtubeChannelUrl = 3; } message DocumentDetails { - optional AppDetails appDetails = 1; - optional AlbumDetails albumDetails = 2; - optional ArtistDetails artistDetails = 3; - optional SongDetails songDetails = 4; - optional BookDetails bookDetails = 5; - optional VideoDetails videoDetails = 6; - optional SubscriptionDetails subscriptionDetails = 7; - optional MagazineDetails magazineDetails = 8; - optional TvShowDetails tvShowDetails = 9; - optional TvSeasonDetails tvSeasonDetails = 10; - optional TvEpisodeDetails tvEpisodeDetails = 11; + optional AppDetails appDetails = 1; + optional AlbumDetails albumDetails = 2; + optional ArtistDetails artistDetails = 3; + optional SongDetails songDetails = 4; + optional BookDetails bookDetails = 5; + optional VideoDetails videoDetails = 6; + optional SubscriptionDetails subscriptionDetails = 7; + optional MagazineDetails magazineDetails = 8; + optional TvShowDetails tvShowDetails = 9; + optional TvSeasonDetails tvSeasonDetails = 10; + optional TvEpisodeDetails tvEpisodeDetails = 11; +} +message PatchDetails { + optional int32 baseVersionCode = 1; + optional int64 size = 2; } message FileMetadata { - optional int32 fileType = 1; - optional int32 versionCode = 2; - optional int64 size = 3; + optional int32 fileType = 1; + optional int32 versionCode = 2; + optional int64 size = 3; + optional string splitId = 4; + optional int64 compressedSize = 5; + repeated PatchDetails patchDetails = 6; } message MagazineDetails { - optional string parentDetailsUrl = 1; - optional string deviceAvailabilityDescriptionHtml = 2; - optional string psvDescription = 3; - optional string deliveryFrequencyDescription = 4; + optional string parentDetailsUrl = 1; + optional string deviceAvailabilityDescriptionHtml = 2; + optional string psvDescription = 3; + optional string deliveryFrequencyDescription = 4; } message MusicDetails { - optional int32 censoring = 1; - optional int32 durationSec = 2; - optional string originalReleaseDate = 3; - optional string label = 4; - repeated ArtistDetails artist = 5; - repeated string genre = 6; - optional string releaseDate = 7; - repeated int32 releaseType = 8; + optional int32 censoring = 1; + optional int32 durationSec = 2; + optional string originalReleaseDate = 3; + optional string label = 4; + repeated ArtistDetails artist = 5; + repeated string genre = 6; + optional string releaseDate = 7; + repeated int32 releaseType = 8; } message SongDetails { - optional string name = 1; - optional MusicDetails details = 2; - optional string albumName = 3; - optional int32 trackNumber = 4; - optional string previewUrl = 5; - optional ArtistDetails displayArtist = 6; + optional string name = 1; + optional MusicDetails details = 2; + optional string albumName = 3; + optional int32 trackNumber = 4; + optional string previewUrl = 5; + optional ArtistDetails displayArtist = 6; } message SubscriptionDetails { - optional int32 subscriptionPeriod = 1; + optional int32 subscriptionPeriod = 1; } message Trailer { - optional string trailerId = 1; - optional string title = 2; - optional string thumbnailUrl = 3; - optional string watchUrl = 4; - optional string duration = 5; + optional string trailerId = 1; + optional string title = 2; + optional string thumbnailUrl = 3; + optional string watchUrl = 4; + optional string duration = 5; } message TvEpisodeDetails { - optional string parentDetailsUrl = 1; - optional int32 episodeIndex = 2; - optional string releaseDate = 3; + optional string parentDetailsUrl = 1; + optional int32 episodeIndex = 2; + optional string releaseDate = 3; } message TvSeasonDetails { - optional string parentDetailsUrl = 1; - optional int32 seasonIndex = 2; - optional string releaseDate = 3; - optional string broadcaster = 4; + optional string parentDetailsUrl = 1; + optional int32 seasonIndex = 2; + optional string releaseDate = 3; + optional string broadcaster = 4; } message TvShowDetails { - optional int32 seasonCount = 1; - optional int32 startYear = 2; - optional int32 endYear = 3; - optional string broadcaster = 4; + optional int32 seasonCount = 1; + optional int32 startYear = 2; + optional int32 endYear = 3; + optional string broadcaster = 4; } message VideoCredit { - optional int32 creditType = 1; - optional string credit = 2; - repeated string name = 3; + optional int32 creditType = 1; + optional string credit = 2; + repeated string name = 3; } message VideoDetails { - repeated VideoCredit credit = 1; - optional string duration = 2; - optional string releaseDate = 3; - optional string contentRating = 4; - optional int64 likes = 5; - optional int64 dislikes = 6; - repeated string genre = 7; - repeated Trailer trailer = 8; - repeated VideoRentalTerm rentalTerm = 9; + repeated VideoCredit credit = 1; + optional string duration = 2; + optional string releaseDate = 3; + optional string contentRating = 4; + optional int64 likes = 5; + optional int64 dislikes = 6; + repeated string genre = 7; + repeated Trailer trailer = 8; + repeated VideoRentalTerm rentalTerm = 9; } message VideoRentalTerm { - optional int32 offerType = 1; - optional string offerAbbreviation = 2; - optional string rentalHeader = 3; - repeated group Term = 4 { - optional string header = 5; - optional string body = 6; - } + optional int32 offerType = 1; + optional string offerAbbreviation = 2; + optional string rentalHeader = 3; + repeated group Term = 4 { + optional string header = 5; + optional string body = 6; + } } message Bucket { - repeated DocV1 document = 1; - optional bool multiCorpus = 2; - optional string title = 3; - optional string iconUrl = 4; - optional string fullContentsUrl = 5; - optional double relevance = 6; - optional int64 estimatedResults = 7; - optional string analyticsCookie = 8; - optional string fullContentsListUrl = 9; - optional string nextPageUrl = 10; - optional bool ordered = 11; + repeated DocV1 document = 1; + optional bool multiCorpus = 2; + optional string title = 3; + optional string iconUrl = 4; + optional string fullContentsUrl = 5; + optional double relevance = 6; + optional int64 estimatedResults = 7; + optional string analyticsCookie = 8; + optional string fullContentsListUrl = 9; + optional string nextPageUrl = 10; + optional bool ordered = 11; } message ListResponse { - repeated Bucket bucket = 1; - repeated DocV2 doc = 2; + repeated Bucket bucket = 1; + repeated DocV2 doc = 2; } message DocV1 { - optional Document finskyDoc = 1; - optional string docid = 2; - optional string detailsUrl = 3; - optional string reviewsUrl = 4; - optional string relatedListUrl = 5; - optional string moreByListUrl = 6; - optional string shareUrl = 7; - optional string creator = 8; - optional DocumentDetails details = 9; - optional string descriptionHtml = 10; - optional string relatedBrowseUrl = 11; - optional string moreByBrowseUrl = 12; - optional string relatedHeader = 13; - optional string moreByHeader = 14; - optional string title = 15; - optional PlusOneData plusOneData = 16; - optional string warningMessage = 17; + optional Document finskyDoc = 1; + optional string docid = 2; + optional string detailsUrl = 3; + optional string reviewsUrl = 4; + optional string relatedListUrl = 5; + optional string moreByListUrl = 6; + optional string shareUrl = 7; + optional string creator = 8; + optional DocumentDetails details = 9; + optional string descriptionHtml = 10; + optional string relatedBrowseUrl = 11; + optional string moreByBrowseUrl = 12; + optional string relatedHeader = 13; + optional string moreByHeader = 14; + optional string title = 15; + optional PlusOneData plusOneData = 16; + optional string warningMessage = 17; } message DocV2 { - optional string docid = 1; - optional string backendDocid = 2; - optional int32 docType = 3; - optional int32 backendId = 4; - optional string title = 5; - optional string creator = 6; - optional string descriptionHtml = 7; - repeated Offer offer = 8; - optional Availability availability = 9; - repeated Image image = 10; - repeated DocV2 child = 11; - optional ContainerMetadata containerMetadata = 12; - optional DocumentDetails details = 13; - optional AggregateRating aggregateRating = 14; - optional RelatedLinks relatedLinks = 15; - optional string detailsUrl = 16; - optional string shareUrl = 17; - optional string reviewsUrl = 18; - optional string backendUrl = 19; - optional string purchaseDetailsUrl = 20; - optional bool detailsReusable = 21; - optional string subtitle = 22; - optional UnknownCategoryContainer unknownCategoryContainer = 24; - optional Unknown25 unknown25 = 25; - optional string descriptionShort = 27; - optional string reviewSnippetsUrl = 31; - optional string reviewQuestionsUrl = 34; -} -message Unknown25 { - repeated Unknown25Item item = 2; -} -message Unknown25Item { - optional string label = 1; - optional Unknown25Container container = 3; -} -message Unknown25Container { - optional string value = 2; + optional string docid = 1; + optional string backendDocid = 2; + optional int32 docType = 3; + optional int32 backendId = 4; + optional string title = 5; + optional string creator = 6; + optional string descriptionHtml = 7; + repeated Offer offer = 8; + optional Availability availability = 9; + repeated Image image = 10; + repeated DocV2 child = 11; + optional ContainerMetadata containerMetadata = 12; + optional DocumentDetails details = 13; + optional AggregateRating aggregateRating = 14; + optional RelatedLinks relatedLinks = 15; + optional string detailsUrl = 16; + optional string shareUrl = 17; + optional string reviewsUrl = 18; + optional string backendUrl = 19; + optional string purchaseDetailsUrl = 20; + optional bool detailsReusable = 21; + optional string subtitle = 22; + optional UnknownCategoryContainer unknownCategoryContainer = 24; + optional ProductDetails unknown25 = 25; + optional bool mature = 26; + optional string descriptionShort = 27; + optional bool availabileForPreregistration = 29; + optional string reviewSnippetsUrl = 31; + optional bool forceShareability = 32; + optional bool useWishlistAsPrimaryAction = 33; + optional string reviewQuestionsUrl = 34; +} +message ProductDetails { + optional string title = 1; + repeated ProductDetailsSection section = 2; +} +message ProductDetailsSection { + optional string label = 1; + optional ProductDetailsDescription container = 3; +} +message ProductDetailsDescription { + optional Image image = 1; + optional string description = 2; } message RelatedLinks { - optional RelatedLinksUnknown1 unknown1 = 10; - optional string privacyPolicyUrl = 18; - optional RelatedLink youMightAlsoLike = 24; - optional Rated rated = 29; - repeated RelatedLink relatedLinks = 34; - optional CategoryInfo categoryInfo = 53; + optional RelatedLinksUnknown1 unknown1 = 10; + optional string privacyPolicyUrl = 18; + optional RelatedLink youMightAlsoLike = 24; + optional Rated rated = 29; + repeated RelatedLink relatedLinks = 34; + optional CategoryInfo categoryInfo = 53; } message RelatedLinksUnknown1 { - optional RelatedLinksUnknown2 unknown2 = 2; + optional RelatedLinksUnknown2 unknown2 = 2; } message RelatedLinksUnknown2 { - optional string homeUrl = 2; - optional string nextPageUrl = 3; + optional string homeUrl = 2; + optional string nextPageUrl = 3; } message Rated { - optional string label = 1; - optional Image image = 2; - optional string learnMoreHtmlLink = 4; + optional string label = 1; + optional Image image = 2; + optional string learnMoreHtmlLink = 4; } message RelatedLink { - optional string label = 1; - optional string url1 = 2; - optional string url2 = 3; + optional string label = 1; + optional string url1 = 2; + optional string url2 = 3; } message CategoryInfo { - optional string appType = 1; - optional string appCategory = 2; + optional string appType = 1; + optional string appCategory = 2; } message EncryptedSubscriberInfo { - optional string data = 1; - optional string encryptedKey = 2; - optional string signature = 3; - optional string initVector = 4; - optional int32 googleKeyVersion = 5; - optional int32 carrierKeyVersion = 6; + optional string data = 1; + optional string encryptedKey = 2; + optional string signature = 3; + optional string initVector = 4; + optional int32 googleKeyVersion = 5; + optional int32 carrierKeyVersion = 6; } message Availability { - optional int32 restriction = 5; - optional int32 offerType = 6; - optional Rule rule = 7; - repeated group PerDeviceAvailabilityRestriction = 9 { - optional fixed64 androidId = 10; - optional int32 deviceRestriction = 11; - optional int64 channelId = 12; - optional FilterEvaluationInfo filterInfo = 15; - } - optional bool availableIfOwned = 13; - repeated Install install = 14; - optional FilterEvaluationInfo filterInfo = 16; - optional OwnershipInfo ownershipInfo = 17; + optional int32 restriction = 5; + optional int32 offerType = 6; + optional Rule rule = 7; + repeated group PerDeviceAvailabilityRestriction = 9 { + optional fixed64 androidId = 10; + optional int32 deviceRestriction = 11; + optional int64 channelId = 12; + optional FilterEvaluationInfo filterInfo = 15; + } + optional bool availableIfOwned = 13; + repeated Install install = 14; + optional FilterEvaluationInfo filterInfo = 16; + optional OwnershipInfo ownershipInfo = 17; + repeated AvailabilityProblem availabilityProblem = 18; + optional bool hidden = 21; +} + +message AvailabilityProblem { + optional int32 problemType = 1; + repeated string missingValue = 2; } message FilterEvaluationInfo { - repeated RuleEvaluation ruleEvaluation = 1; + repeated RuleEvaluation ruleEvaluation = 1; } message Rule { - optional bool negate = 1; - optional int32 operator = 2; - optional int32 key = 3; - repeated string stringArg = 4; - repeated int64 longArg = 5; - repeated double doubleArg = 6; - repeated Rule subrule = 7; - optional int32 responseCode = 8; - optional string comment = 9; - repeated fixed64 stringArgHash = 10; - repeated int32 constArg = 11; + optional bool negate = 1; + optional int32 operator = 2; + optional int32 key = 3; + repeated string stringArg = 4; + repeated int64 longArg = 5; + repeated double doubleArg = 6; + repeated Rule subrule = 7; + optional int32 responseCode = 8; + optional string comment = 9; + repeated fixed64 stringArgHash = 10; + repeated int32 constArg = 11; + optional int32 availabilityProblemType = 12; + optional bool includeMissingValues = 13; } message RuleEvaluation { - optional Rule rule = 1; - repeated string actualStringValue = 2; - repeated int64 actualLongValue = 3; - repeated bool actualBoolValue = 4; - repeated double actualDoubleValue = 5; + optional Rule rule = 1; + repeated string actualStringValue = 2; + repeated int64 actualLongValue = 3; + repeated bool actualBoolValue = 4; + repeated double actualDoubleValue = 5; } message LibraryAppDetails { - optional string certificateHash = 2; - optional int64 refundTimeoutTimestampMsec = 3; - optional int64 postDeliveryRefundWindowMsec = 4; + optional string certificateHash = 2; + optional int64 refundTimeoutTimestampMsec = 3; + optional int64 postDeliveryRefundWindowMsec = 4; } message LibraryInAppDetails { - optional string signedPurchaseData = 1; - optional string signature = 2; + optional string signedPurchaseData = 1; + optional string signature = 2; } message LibraryMutation { - optional Docid docid = 1; - optional int32 offerType = 2; - optional int64 documentHash = 3; - optional bool deleted = 4; - optional LibraryAppDetails appDetails = 5; - optional LibrarySubscriptionDetails subscriptionDetails = 6; - optional LibraryInAppDetails inAppDetails = 7; + optional Docid docid = 1; + optional int32 offerType = 2; + optional int64 documentHash = 3; + optional bool deleted = 4; + optional LibraryAppDetails appDetails = 5; + optional LibrarySubscriptionDetails subscriptionDetails = 6; + optional LibraryInAppDetails inAppDetails = 7; } message LibrarySubscriptionDetails { - optional int64 initiationTimestampMsec = 1; - optional int64 validUntilTimestampMsec = 2; - optional bool autoRenewing = 3; - optional int64 trialUntilTimestampMsec = 4; + optional int64 initiationTimestampMsec = 1; + optional int64 validUntilTimestampMsec = 2; + optional bool autoRenewing = 3; + optional int64 trialUntilTimestampMsec = 4; + optional string signedPurchaseData = 5; + optional string signature = 6; } message LibraryUpdate { - optional int32 status = 1; - optional int32 corpus = 2; - optional bytes serverToken = 3; - repeated LibraryMutation mutation = 4; - optional bool hasMore = 5; - optional string libraryId = 6; + optional int32 status = 1; + optional int32 corpus = 2; + optional bytes serverToken = 3; + repeated LibraryMutation mutation = 4; + optional bool hasMore = 5; + optional string libraryId = 6; } message AndroidAppNotificationData { - optional int32 versionCode = 1; - optional string assetId = 2; + optional int32 versionCode = 1; + optional string assetId = 2; } message InAppNotificationData { - optional string checkoutOrderId = 1; - optional string inAppNotificationId = 2; + optional string checkoutOrderId = 1; + optional string inAppNotificationId = 2; } message LibraryDirtyData { - optional int32 backend = 1; + optional int32 backend = 1; + optional string libraryId = 2; } message Notification { - optional int32 notificationType = 1; - optional int64 timestamp = 3; - optional Docid docid = 4; - optional string docTitle = 5; - optional string userEmail = 6; - optional AndroidAppNotificationData appData = 7; - optional AndroidAppDeliveryData appDeliveryData = 8; - optional PurchaseRemovalData purchaseRemovalData = 9; - optional UserNotificationData userNotificationData = 10; - optional InAppNotificationData inAppNotificationData = 11; - optional PurchaseDeclinedData purchaseDeclinedData = 12; - optional string notificationId = 13; - optional LibraryUpdate libraryUpdate = 14; - optional LibraryDirtyData libraryDirtyData = 15; + optional int32 notificationType = 1; + optional int64 timestamp = 3; + optional Docid docid = 4; + optional string docTitle = 5; + optional string userEmail = 6; + optional AndroidAppNotificationData appData = 7; + optional AndroidAppDeliveryData appDeliveryData = 8; + optional PurchaseRemovalData purchaseRemovalData = 9; + optional UserNotificationData userNotificationData = 10; + optional InAppNotificationData inAppNotificationData = 11; + optional PurchaseDeclinedData purchaseDeclinedData = 12; + optional string notificationId = 13; + optional LibraryUpdate libraryUpdate = 14; + optional LibraryDirtyData libraryDirtyData = 15; } message PurchaseDeclinedData { - optional int32 reason = 1; - optional bool showNotification = 2; + optional int32 reason = 1; + optional bool showNotification = 2; } message PurchaseRemovalData { - optional bool malicious = 1; + optional bool malicious = 1; } message UserNotificationData { - optional string notificationTitle = 1; - optional string notificationText = 2; - optional string tickerText = 3; - optional string dialogTitle = 4; - optional string dialogText = 5; + optional string notificationTitle = 1; + optional string notificationText = 2; + optional string tickerText = 3; + optional string dialogTitle = 4; + optional string dialogText = 5; } message AggregateRating { - optional int32 type = 1; - optional float starRating = 2; - optional uint64 ratingsCount = 3; - optional uint64 oneStarRatings = 4; - optional uint64 twoStarRatings = 5; - optional uint64 threeStarRatings = 6; - optional uint64 fourStarRatings = 7; - optional uint64 fiveStarRatings = 8; - optional uint64 thumbsUpCount = 9; - optional uint64 thumbsDownCount = 10; - optional uint64 commentCount = 11; - optional double bayesianMeanRating = 12; + optional int32 type = 1; + optional float starRating = 2; + optional uint64 ratingsCount = 3; + optional uint64 oneStarRatings = 4; + optional uint64 twoStarRatings = 5; + optional uint64 threeStarRatings = 6; + optional uint64 fourStarRatings = 7; + optional uint64 fiveStarRatings = 8; + optional uint64 thumbsUpCount = 9; + optional uint64 thumbsDownCount = 10; + optional uint64 commentCount = 11; + optional double bayesianMeanRating = 12; } message AcceptTosResponse { -}message CarrierBillingConfig { - optional string id = 1; - optional string name = 2; - optional int32 apiVersion = 3; - optional string provisioningUrl = 4; - optional string credentialsUrl = 5; - optional bool tosRequired = 6; - optional bool perTransactionCredentialsRequired = 7; - optional bool sendSubscriberIdWithCarrierBillingRequests = 8; +} +message CarrierBillingConfig { + optional string id = 1; + optional string name = 2; + optional int32 apiVersion = 3; + optional string provisioningUrl = 4; + optional string credentialsUrl = 5; + optional bool tosRequired = 6; + optional bool perTransactionCredentialsRequired = 7; + optional bool sendSubscriberIdWithCarrierBillingRequests = 8; } message BillingConfig { - optional CarrierBillingConfig carrierBillingConfig = 1; - optional int32 maxIabApiVersion = 2; + optional CarrierBillingConfig carrierBillingConfig = 1; + optional int32 maxIabApiVersion = 2; } message CorpusMetadata { - optional int32 backend = 1; - optional string name = 2; - optional string landingUrl = 3; - optional string libraryName = 4; - optional string recsWidgetUrl = 6; - optional string shopName = 7; + optional int32 backend = 1; + optional string name = 2; + optional string landingUrl = 3; + optional string libraryName = 4; + optional string recsWidgetUrl = 6; + optional string shopName = 7; } message Experiments { - repeated string experimentId = 1; + repeated string experimentId = 1; } message SelfUpdateConfig { - optional int32 latestClientVersionCode = 1; + optional int32 latestClientVersionCode = 1; } message TocResponse { - repeated CorpusMetadata corpus = 1; - optional int32 tosVersionDeprecated = 2; - optional string tosContent = 3; - optional string homeUrl = 4; - optional Experiments experiments = 5; - optional string tosCheckboxTextMarketingEmails = 6; - optional string tosToken = 7; - optional string iconOverrideUrl = 9; - optional SelfUpdateConfig selfUpdateConfig = 10; - optional bool requiresUploadDeviceConfig = 11; - optional BillingConfig billingConfig = 12; - optional string recsWidgetUrl = 13; - optional string socialHomeUrl = 15; - optional bool ageVerificationRequired = 16; - optional bool gplusSignupEnabled = 17; - optional bool redeemEnabled = 18; - optional string helpUrl = 19; - optional int32 themeId = 20; - optional string entertainmentHomeUrl = 21; - optional string cookie = 22; + repeated CorpusMetadata corpus = 1; + optional int32 tosVersionDeprecated = 2; + optional string tosContent = 3; + optional string homeUrl = 4; + optional Experiments experiments = 5; + optional string tosCheckboxTextMarketingEmails = 6; + optional string tosToken = 7; + optional UserSettings userSettings = 8; + optional string iconOverrideUrl = 9; + optional SelfUpdateConfig selfUpdateConfig = 10; + optional bool requiresUploadDeviceConfig = 11; + optional BillingConfig billingConfig = 12; + optional string recsWidgetUrl = 13; + optional string socialHomeUrl = 15; + optional bool ageVerificationRequired = 16; + optional bool gplusSignupEnabled = 17; + optional bool redeemEnabled = 18; + optional string helpUrl = 19; + optional int32 themeId = 20; + optional string entertainmentHomeUrl = 21; + optional string cookie = 22; +} +message UserSettings { + optional bool tosCheckboxMarketingEmailsOptedIn = 1; } message Payload { - optional ListResponse listResponse = 1; - optional DetailsResponse detailsResponse = 2; - optional ReviewResponse reviewResponse = 3; - optional BuyResponse buyResponse = 4; - optional SearchResponse searchResponse = 5; - optional TocResponse tocResponse = 6; - optional BrowseResponse browseResponse = 7; - optional PurchaseStatusResponse purchaseStatusResponse = 8; - optional string logResponse = 10; - optional string flagContentResponse = 13; - optional BulkDetailsResponse bulkDetailsResponse = 19; - optional DeliveryResponse deliveryResponse = 21; - optional AcceptTosResponse acceptTosResponse = 22; - optional AndroidCheckinResponse androidCheckinResponse = 26; - optional UploadDeviceConfigResponse uploadDeviceConfigResponse = 28; - optional SearchSuggestResponse searchSuggestResponse = 40; - optional TestingProgramResponse testingProgramResponse = 80; + optional ListResponse listResponse = 1; + optional DetailsResponse detailsResponse = 2; + optional ReviewResponse reviewResponse = 3; + optional BuyResponse buyResponse = 4; + optional SearchResponse searchResponse = 5; + optional TocResponse tocResponse = 6; + optional BrowseResponse browseResponse = 7; + optional PurchaseStatusResponse purchaseStatusResponse = 8; + optional string logResponse = 10; + optional string flagContentResponse = 13; + optional BulkDetailsResponse bulkDetailsResponse = 19; + optional DeliveryResponse deliveryResponse = 21; + optional AcceptTosResponse acceptTosResponse = 22; + optional CheckPromoOfferResponse checkPromoOfferResponse = 24; + optional InstrumentSetupInfoResponse instrumentSetupInfoResponse = 25; + optional AndroidCheckinResponse androidCheckinResponse = 26; + optional UploadDeviceConfigResponse uploadDeviceConfigResponse = 28; + optional SearchSuggestResponse searchSuggestResponse = 40; + optional ConsumePurchaseResponse consumePurchaseResponse = 30; + optional BillingProfileResponse billingProfileResponse = 31; + optional DebugSettingsResponse debugSettingsResponse = 34; + optional CheckIabPromoResponse checkIabPromoResponse = 35; + optional UserActivitySettingsResponse userActivitySettingsResponse = 36; + optional RecordUserActivityResponse recordUserActivityResponse = 37; + optional RedeemCodeResponse redeemCodeResponse = 38; + optional SelfUpdateResponse selfUpdateResponse = 39; + optional GetInitialInstrumentFlowStateResponse getInitialInstrumentFlowStateResponse = 41; + optional CreateInstrumentResponse createInstrumentResponse = 42; + optional ChallengeResponse challengeResponse = 43; + optional BackDeviceChoicesResponse backupDeviceChoicesResponse = 44; + optional BackupDocumentChoicesResponse backupDocumentChoicesResponse = 45; + optional EarlyUpdateResponse earlyUpdateResponse = 46; + optional PreloadsResponse preloadsResponse = 47; + optional MyAccountsResponse myAccountsResponse = 48; + optional ContentFilterResponse contentFilterResponse = 49; + optional ExperimentsResponse experimentsResponse = 50; + optional SurveyResponse surveyResponse = 51; + optional PingResponse pingResponse = 52; + optional UpdateUserSettingResponse updateUserSettingResponse = 53; + optional GetUserSettingsResponse getUserSettingsREsponse = 54; + optional GetSharingSettingsResponse getSharingSettingsResponse = 56; + optional UpdateSharingSettingsResponse updateSharingSettingsResponse = 57; + optional ReviewSnippetsResponse reviewSnippetsResponse = 58; + optional DocumentSharingStateResponse documentSharingStateResponse = 59; + optional ModuleDeliveryResponse moduleDeliveryResponse = 70; + optional TestingProgramResponse testingProgramResponse = 80; +} +message CheckIabPromoResponse { +} +message UserActivitySettingsResponse { +} +message RecordUserActivityResponse { +} +message RedeemCodeResponse { +} +message SelfUpdateResponse { +} +message searchSuggestResponse { +} +message GetInitialInstrumentFlowStateResponse { +} +message CreateInstrumentResponse { +} +message ChallengeResponse { +} +message BackDeviceChoicesResponse { +} +message BackupDocumentChoicesResponse { +} +message EarlyUpdateResponse { +} +message PreloadsResponse { +} +message MyAccountsResponse { +} +message ContentFilterResponse { +} +message ExperimentsResponse { +} +message SurveyResponse { +} +message PingResponse { +} +message UpdateUserSettingResponse { +} +message GetUserSettingsResponse { +} +message GetSharingSettingsResponse { +} +message UpdateSharingSettingsResponse { +} +message ReviewSnippetsResponse { +} +message DocumentSharingStateResponse { +} +message ModuleDeliveryResponse { } message PreFetch { - optional string url = 1; - optional ResponseWrapper response = 2; - optional string etag = 3; - optional int64 ttl = 4; - optional int64 softTtl = 5; + optional string url = 1; + optional ResponseWrapper response = 2; + optional string etag = 3; + optional int64 ttl = 4; + optional int64 softTtl = 5; } message ServerMetadata { - optional int64 latencyMillis = 1; + optional int64 latencyMillis = 1; } message Targets { - repeated int64 targetId = 1; - optional bytes signature = 2; + repeated int64 targetId = 1; + optional bytes signature = 2; } message ServerCookie { - optional int32 type = 1; - optional bytes token = 2; + optional int32 type = 1; + optional bytes token = 2; } message ServerCookies { - repeated ServerCookie serverCookie = 1; + repeated ServerCookie serverCookie = 1; } message ResponseWrapper { - optional Payload payload = 1; - optional ServerCommands commands = 2; - repeated PreFetch preFetch = 3; - repeated Notification notification = 4; - optional ServerMetadata serverMetadata = 5; - optional Targets targets = 6; - optional ServerCookies serverCookies = 7; - optional bytes serverLogsCookie = 9; + optional Payload payload = 1; + optional ServerCommands commands = 2; + repeated PreFetch preFetch = 3; + repeated Notification notification = 4; + optional ServerMetadata serverMetadata = 5; + optional Targets targets = 6; + optional ServerCookies serverCookies = 7; + optional bytes serverLogsCookie = 9; } message ResponseWrapperApi { - optional PayloadApi payload = 1; + optional PayloadApi payload = 1; } message PayloadApi { - optional UserProfileResponse userProfileResponse = 5; + optional UserProfileResponse userProfileResponse = 5; } message UserProfileResponse { - optional UserProfile userProfile = 1; + optional UserProfile userProfile = 1; } message ServerCommands { - optional bool clearCache = 1; - optional string displayErrorMessage = 2; - optional string logErrorStacktrace = 3; + optional bool clearCache = 1; + optional string displayErrorMessage = 2; + optional string logErrorStacktrace = 3; } message GetReviewsResponse { - repeated Review review = 1; - optional int64 matchingCount = 2; + repeated Review review = 1; + optional int64 matchingCount = 2; } message Review { - optional string authorName = 1; - optional string url = 2; - optional string source = 3; - optional string documentVersion = 4; - optional int64 timestampMsec = 5; - optional int32 starRating = 6; - optional string title = 7; - optional string comment = 8; - optional string commentId = 9; - optional string deviceName = 19; - optional string replyText = 29; - optional int64 replyTimestampMsec = 30; - optional ReviewAuthor author = 31; - optional UserProfile userProfile = 33; + optional string authorName = 1; + optional string url = 2; + optional string source = 3; + optional string documentVersion = 4; + optional int64 timestampMsec = 5; + optional int32 starRating = 6; + optional string title = 7; + optional string comment = 8; + optional string commentId = 9; + optional string deviceName = 19; + optional string replyText = 29; + optional int64 replyTimestampMsec = 30; + optional ReviewAuthor author = 31; + optional UserProfile userProfile = 33; + optional Image sentiment = 34; } message ReviewAuthor { - optional string name = 2; - optional Image avatar = 5; + optional string name = 2; + optional Image avatar = 5; } message UserProfile { - optional string personIdString = 1; - optional string personId = 2; - optional int32 unknown1 = 3; - optional int32 unknown2 = 4; - optional string name = 5; - repeated Image image = 10; - optional string googlePlusUrl = 19; - optional string googlePlusTagline = 22; + optional string personIdString = 1; + optional string personId = 2; + optional int32 unknown1 = 3; + optional int32 unknown2 = 4; + optional string name = 5; + repeated Image image = 10; + optional string googlePlusUrl = 19; + optional string googlePlusTagline = 22; } message ReviewResponse { - optional GetReviewsResponse getResponse = 1; - optional string nextPageUrl = 2; - optional Review userReview = 3; + optional GetReviewsResponse getResponse = 1; + optional string nextPageUrl = 2; + optional Review userReview = 3; } message RelatedSearch { - optional string searchUrl = 1; - optional string header = 2; - optional int32 backendId = 3; - optional int32 docType = 4; - optional bool current = 5; + optional string searchUrl = 1; + optional string header = 2; + optional int32 backendId = 3; + optional int32 docType = 4; + optional bool current = 5; } message SearchResponse { - optional string originalQuery = 1; - optional string suggestedQuery = 2; - optional bool aggregateQuery = 3; - repeated Bucket bucket = 4; - repeated DocV2 doc = 5; - repeated RelatedSearch relatedSearch = 6; - optional string nextPageUrl = 10; + optional string originalQuery = 1; + optional string suggestedQuery = 2; + optional bool aggregateQuery = 3; + repeated Bucket bucket = 4; + repeated DocV2 doc = 5; + repeated RelatedSearch relatedSearch = 6; + optional string nextPageUrl = 10; } message SearchSuggestResponse { - repeated SearchSuggestEntry entry = 1; + repeated SearchSuggestEntry entry = 1; } message SearchSuggestEntry { - optional int32 type = 1; - optional string suggestedQuery = 2; - optional ImageContainer imageContainer = 5; - message ImageContainer { - optional string imageUrl = 5; - } - optional string title = 6; - optional PackageNameContainer packageNameContainer = 8; - message PackageNameContainer { - optional string packageName = 1; - } + optional int32 type = 1; + optional string suggestedQuery = 2; + optional ImageContainer imageContainer = 5; + message ImageContainer { + optional string imageUrl = 5; + } + optional string title = 6; + optional PackageNameContainer packageNameContainer = 8; + message PackageNameContainer { + optional string packageName = 1; + } } message TestingProgramResponse { - optional TestingProgramResult result = 2; + optional TestingProgramResult result = 2; } message TestingProgramResult { - optional TestingProgramDetails details = 4; + optional TestingProgramDetails details = 4; } message TestingProgramDetails { - optional bool flag1 = 2; - optional int64 id = 3; - optional bool unsubscribed = 4; + optional bool flag1 = 2; + optional int64 id = 3; + optional bool unsubscribed = 4; } message LogRequest { - optional int64 timestamp = 1; - optional string downloadConfirmationQuery = 2; + optional int64 timestamp = 1; + optional string downloadConfirmationQuery = 2; } message TestingProgramRequest { - optional string packageName = 1; - optional bool subscribe = 2; + optional string packageName = 1; + optional bool subscribe = 2; } message UploadDeviceConfigRequest { - optional DeviceConfigurationProto deviceConfiguration = 1; - optional string manufacturer = 2; - optional string gcmRegistrationId = 3; + optional DeviceConfigurationProto deviceConfiguration = 1; + optional string manufacturer = 2; + optional string gcmRegistrationId = 3; } message UploadDeviceConfigResponse { - optional string uploadDeviceConfigToken = 1; + optional string uploadDeviceConfigToken = 1; } message AndroidCheckinRequest { - optional string imei = 1; - optional int64 id = 2; - optional string digest = 3; - optional AndroidCheckinProto checkin = 4; - optional string desiredBuild = 5; - optional string locale = 6; - optional int64 loggingId = 7; - optional string marketCheckin = 8; - repeated string macAddr = 9; - optional string meid = 10; - repeated string accountCookie = 11; - optional string timeZone = 12; - optional fixed64 securityToken = 13; - optional int32 version = 14; - repeated string otaCert = 15; - optional string serialNumber = 16; - optional string esn = 17; - optional DeviceConfigurationProto deviceConfiguration = 18; - repeated string macAddrType = 19; - optional int32 fragment = 20; - optional string userName = 21; - optional int32 userSerialNumber = 22; + optional string imei = 1; + optional int64 id = 2; + optional string digest = 3; + optional AndroidCheckinProto checkin = 4; + optional string desiredBuild = 5; + optional string locale = 6; + optional int64 loggingId = 7; + optional string marketCheckin = 8; + repeated string macAddr = 9; + optional string meid = 10; + repeated string accountCookie = 11; + optional string timeZone = 12; + optional fixed64 securityToken = 13; + optional int32 version = 14; + repeated string otaCert = 15; + optional string serialNumber = 16; + optional string esn = 17; + optional DeviceConfigurationProto deviceConfiguration = 18; + repeated string macAddrType = 19; + optional int32 fragment = 20; + optional string userName = 21; + optional int32 userSerialNumber = 22; } message AndroidCheckinResponse { - optional bool statsOk = 1; - repeated AndroidIntentProto intent = 2; - optional int64 timeMsec = 3; - optional string digest = 4; - repeated GservicesSetting setting = 5; - optional bool marketOk = 6; - optional fixed64 androidId = 7; - optional fixed64 securityToken = 8; - optional bool settingsDiff = 9; - repeated string deleteSetting = 10; - optional string deviceCheckinConsistencyToken = 12; + optional bool statsOk = 1; + repeated AndroidIntentProto intent = 2; + optional int64 timeMsec = 3; + optional string digest = 4; + repeated GservicesSetting setting = 5; + optional bool marketOk = 6; + optional fixed64 androidId = 7; + optional fixed64 securityToken = 8; + optional bool settingsDiff = 9; + repeated string deleteSetting = 10; + optional string deviceCheckinConsistencyToken = 12; } message GservicesSetting { - optional bytes name = 1; - optional bytes value = 2; + optional bytes name = 1; + optional bytes value = 2; } message AndroidBuildProto { - optional string id = 1; - optional string product = 2; - optional string carrier = 3; - optional string radio = 4; - optional string bootloader = 5; - optional string client = 6; - optional int64 timestamp = 7; - optional int32 googleServices = 8; - optional string device = 9; - optional int32 sdkVersion = 10; - optional string model = 11; - optional string manufacturer = 12; - optional string buildProduct = 13; - optional bool otaInstalled = 14; + optional string id = 1; + optional string product = 2; + optional string carrier = 3; + optional string radio = 4; + optional string bootloader = 5; + optional string client = 6; + optional int64 timestamp = 7; + optional int32 googleServices = 8; + optional string device = 9; + optional int32 sdkVersion = 10; + optional string model = 11; + optional string manufacturer = 12; + optional string buildProduct = 13; + optional bool otaInstalled = 14; } message AndroidCheckinProto { - optional AndroidBuildProto build = 1; - optional int64 lastCheckinMsec = 2; - repeated AndroidEventProto event = 3; - repeated AndroidStatisticProto stat = 4; - repeated string requestedGroup = 5; - optional string cellOperator = 6; - optional string simOperator = 7; - optional string roaming = 8; - optional int32 userNumber = 9; + optional AndroidBuildProto build = 1; + optional int64 lastCheckinMsec = 2; + repeated AndroidEventProto event = 3; + repeated AndroidStatisticProto stat = 4; + repeated string requestedGroup = 5; + optional string cellOperator = 6; + optional string simOperator = 7; + optional string roaming = 8; + optional int32 userNumber = 9; } message AndroidEventProto { - optional string tag = 1; - optional string value = 2; - optional int64 timeMsec = 3; + optional string tag = 1; + optional string value = 2; + optional int64 timeMsec = 3; } message AndroidIntentProto { - optional string action = 1; - optional string dataUri = 2; - optional string mimeType = 3; - optional string javaClass = 4; - repeated group Extra = 5 { - optional string name = 6; - optional string value = 7; - } + optional string action = 1; + optional string dataUri = 2; + optional string mimeType = 3; + optional string javaClass = 4; + repeated group Extra = 5 { + optional string name = 6; + optional string value = 7; + } } message AndroidStatisticProto { - optional string tag = 1; - optional int32 count = 2; - optional float sum = 3; + optional string tag = 1; + optional int32 count = 2; + optional float sum = 3; } message ClientLibraryState { - optional int32 corpus = 1; - optional bytes serverToken = 2; - optional int64 hashCodeSum = 3; - optional int32 librarySize = 4; - optional string libraryId = 5; + optional int32 corpus = 1; + optional bytes serverToken = 2; + optional int64 hashCodeSum = 3; + optional int32 librarySize = 4; + optional string libraryId = 5; } message AndroidDataUsageProto { - optional int32 version = 1; - optional int64 currentReportMsec = 2; - repeated KeyToPackageNameMapping keyToPackageNameMapping = 3; - repeated PayloadLevelAppStat payloadLevelAppStat = 4; - repeated IpLayerNetworkStat ipLayerNetworkStat = 5; + optional int32 version = 1; + optional int64 currentReportMsec = 2; + repeated KeyToPackageNameMapping keyToPackageNameMapping = 3; + repeated PayloadLevelAppStat payloadLevelAppStat = 4; + repeated IpLayerNetworkStat ipLayerNetworkStat = 5; } message AndroidUsageStatsReport { - optional int64 androidId = 1; - optional int64 loggingId = 2; - optional UsageStatsExtensionProto usageStats = 3; + optional int64 androidId = 1; + optional int64 loggingId = 2; + optional UsageStatsExtensionProto usageStats = 3; } message AppBucket { - optional int64 bucketStartMsec = 1; - optional int64 bucketDurationMsec = 2; - repeated StatCounters statCounters = 3; - optional int64 operationCount = 4; + optional int64 bucketStartMsec = 1; + optional int64 bucketDurationMsec = 2; + repeated StatCounters statCounters = 3; + optional int64 operationCount = 4; } message CounterData { - optional int64 bytes = 1; - optional int64 packets = 2; + optional int64 bytes = 1; + optional int64 packets = 2; } message IpLayerAppStat { - optional int32 packageKey = 1; - optional int32 applicationTag = 2; - repeated AppBucket ipLayerAppBucket = 3; + optional int32 packageKey = 1; + optional int32 applicationTag = 2; + repeated AppBucket ipLayerAppBucket = 3; } message IpLayerNetworkBucket { - optional int64 bucketStartMsec = 1; - optional int64 bucketDurationMsec = 2; - repeated StatCounters statCounters = 3; - optional int64 networkActiveDuration = 4; + optional int64 bucketStartMsec = 1; + optional int64 bucketDurationMsec = 2; + repeated StatCounters statCounters = 3; + optional int64 networkActiveDuration = 4; } message IpLayerNetworkStat { - optional string networkDetails = 1; - optional int32 type = 2; - repeated IpLayerNetworkBucket ipLayerNetworkBucket = 3; - repeated IpLayerAppStat ipLayerAppStat = 4; + optional string networkDetails = 1; + optional int32 type = 2; + repeated IpLayerNetworkBucket ipLayerNetworkBucket = 3; + repeated IpLayerAppStat ipLayerAppStat = 4; } message KeyToPackageNameMapping { - optional int32 packageKey = 1; - optional string uidName = 2; - repeated PackageInfo sharedPackageList = 3; + optional int32 packageKey = 1; + optional string uidName = 2; + repeated PackageInfo sharedPackageList = 3; } message PackageInfo { - optional string pkgName = 1; - optional int32 versionCode = 2; + optional string pkgName = 1; + optional int32 versionCode = 2; } message PayloadLevelAppStat { - optional int32 packageKey = 1; - optional int32 applicationTag = 2; - repeated AppBucket payloadLevelAppBucket = 3; + optional int32 packageKey = 1; + optional int32 applicationTag = 2; + repeated AppBucket payloadLevelAppBucket = 3; } message StatCounters { - optional int32 networkProto = 1; - optional int32 direction = 2; - optional CounterData counterData = 3; - optional int32 fgBg = 4; + optional int32 networkProto = 1; + optional int32 direction = 2; + optional CounterData counterData = 3; + optional int32 fgBg = 4; } message UsageStatsExtensionProto { - optional AndroidDataUsageProto dataUsage = 1; + optional AndroidDataUsageProto dataUsage = 1; } message ModifyLibraryRequest { - optional string libraryId = 1; - repeated string addPackageName = 2; - repeated string removePackageName = 3; + optional string libraryId = 1; + repeated string addPackageName = 2; + repeated string removePackageName = 3; } message UrlRequestWrapper { - optional DeveloperAppsRequest developerAppsRequest = 49; + optional DeveloperAppsRequest developerAppsRequest = 49; } message DeveloperAppsRequest { - optional DeveloperIdContainer developerIdContainer1 = 1; - optional DeveloperIdContainer developerIdContainer2 = 2; - optional int32 unknownInt3 = 3; + optional DeveloperIdContainer developerIdContainer1 = 1; + optional DeveloperIdContainer developerIdContainer2 = 2; + optional int32 unknownInt3 = 3; } message DeveloperIdContainer { - optional string developerId = 1; - optional int32 unknownInt2 = 2; - optional int32 unknownInt3 = 3; -} + optional string developerId = 1; + optional int32 unknownInt2 = 2; + optional int32 unknownInt3 = 3; +} \ No newline at end of file