https://github.com/egirault/googleplay-api
Raw File
Tip revision: c463cbe5896ed5a0923ed3a06029376ad229b6eb authored by Emilien Girault on 08 December 2012, 17:59:25 UTC
Localization
Tip revision: c463cbe
googleplay.proto
message AckNotificationResponse {
}
message AndroidAppDeliveryData {
  optional int64 downloadSize = 1;
  optional string signature = 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;
}
message AndroidAppPatchData {
  optional int32 baseVersionCode = 1;
  optional string baseSignature = 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;
}
message EncryptionParams {
  optional int32 version = 1;
  optional string encryptionKey = 2;
  optional string hmacKey = 3;
}
message HttpCookie {
  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;
}
message BookAuthor {
  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;
  }
}
message BookSubject {
  optional string name = 1;
  optional string query = 2;
  optional string subjectId = 3;
}
message BrowseLink {
  optional string name = 1;
  optional string dataUrl = 3;
}
message BrowseResponse {
  optional string contentsUrl = 1;
  optional string promoUrl = 2;
  repeated BrowseLink category = 3;
  repeated BrowseLink breadcrumb = 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 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 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 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;
}
message Challenge {
  optional AddressChallenge addressChallenge = 1;
  optional AuthenticationChallenge authenticationChallenge = 2;
}
message FormCheckbox {
  optional string description = 1;
  optional bool checked = 2;
  optional bool required = 3;
}
message LineItem {
  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;
}
message PurchaseNotificationResponse {
  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;
}
message CheckInstrumentResponse {
  optional bool userHasValidInstrument = 1;
  optional bool checkoutTokenRequired = 2;
  repeated Instrument instrument = 4;
  repeated Instrument eligibleInstrument = 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;
}
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 Docid {
  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;
}
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;
}
message OwnershipInfo {
  optional int64 initiationTimestampMsec = 1;
  optional int64 validUntilTimestampMsec = 2;
  optional bool autoRenewing = 3;
  optional int64 refundTimeoutTimestampMsec = 4;
  optional int64 postDeliveryRefundWindowMsec = 5;
}
message RentalTerms {
  optional int32 grantPeriodSeconds = 1;
  optional int32 activatePeriodSeconds = 2;
}
message SubscriptionTerms {
  optional TimePeriod recurringPeriod = 1;
  optional TimePeriod trialPeriod = 2;
}
message TimePeriod {
  optional int32 unit = 1;
  optional int32 count = 2;
}
message BillingAddressSpec {
  optional int32 billingAddressType = 1;
  repeated int32 requiredField = 2;
}
message CarrierBillingCredentials {
  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;
}
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;
}
message CarrierTos {
  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;
}
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;
}
message EfeParam {
  optional int32 key = 1;
  optional string value = 2;
}
message InputValidationError {
  optional int32 inputField = 1;
  optional string errorMessage = 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;
}
message PasswordPrompt {
  optional string prompt = 1;
  optional string forgotPasswordUrl = 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;
}
message FlagContentResponse {
}
message DebugInfo {
  repeated string message = 1;
  repeated group Timing = 2 {
    optional string name = 3;
    optional double timeInMs = 4;
  }
}
message DeliveryResponse {
  optional int32 status = 1;
  optional AndroidAppDeliveryData appDeliveryData = 2;
}
message BulkDetailsEntry {
  optional DocV2 doc = 1;
}
message BulkDetailsRequest {
  repeated string docid = 1;
  optional bool includeChildDocs = 2;
}
message BulkDetailsResponse {
  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;
}
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;
}
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;
}
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;
}
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;
  }
}
message TranslatedText {
  optional string text = 1;
  optional string sourceLocale = 2;
  optional string targetLocale = 3;
}
message Badge {
  optional string title = 1;
  repeated Image image = 2;
  optional string browseUrl = 3;
}
message ContainerWithBanner {
  optional string colorThemeArgb = 1;
}
message DealOfTheDay {
  optional string featuredHeader = 1;
  optional string colorThemeArgb = 2;
}
message EditorialSeriesContainer {
  optional string seriesTitle = 1;
  optional string seriesSubtitle = 2;
  optional string episodeTitle = 3;
  optional string episodeSubtitle = 4;
  optional string colorThemeArgb = 5;
}
message Link {
  optional string uri = 1;
}
message PlusOneData {
  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;
}
message PromotedDoc {
  optional string title = 1;
  optional string subtitle = 2;
  repeated Image image = 3;
  optional string descriptionHtml = 4;
  optional string detailsUrl = 5;
}
message Reason {
  optional string briefReason = 1;
  optional string detailedReason = 2;
  optional string uniqueId = 3;
}
message SectionMetadata {
  optional string header = 1;
  optional string listUrl = 2;
  optional string browseUrl = 3;
  optional string descriptionHtml = 4;
}
message SeriesAntenna {
  optional string seriesTitle = 1;
  optional string seriesSubtitle = 2;
  optional string episodeTitle = 3;
  optional string episodeSubtitle = 4;
  optional string colorThemeArgb = 5;
  optional SectionMetadata sectionTracks = 6;
  optional SectionMetadata sectionAlbums = 7;
}
message Template {
  optional SeriesAntenna seriesAntenna = 1;
  optional TileTemplate tileGraphic2X1 = 2;
  optional TileTemplate tileGraphic4X2 = 3;
  optional TileTemplate tileGraphicColoredTitle2X1 = 4;
  optional TileTemplate tileGraphicUpperLeftTitle2X1 = 5;
  optional TileTemplate tileDetailsReflectedGraphic2X2 = 6;
  optional TileTemplate tileFourBlock4X2 = 7;
  optional ContainerWithBanner containerWithBanner = 8;
  optional DealOfTheDay dealOfTheDay = 9;
  optional TileTemplate tileGraphicColoredTitle4X2 = 10;
  optional EditorialSeriesContainer editorialSeriesContainer = 11;
}
message TileTemplate {
  optional string colorThemeArgb = 1;
  optional string colorTextArgb = 2;
}
message Warning {
  optional string localizedMessage = 1;
}
message AlbumDetails {
  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;
}
message ArtistDetails {
  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;
}
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;
}
message FileMetadata {
  optional int32 fileType = 1;
  optional int32 versionCode = 2;
  optional int64 size = 3;
}
message MagazineDetails {
  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;
}
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;
}
message SubscriptionDetails {
  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;
}
message TvEpisodeDetails {
  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;
}
message TvShowDetails {
  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;
}
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;
}
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;
  }
}
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;
}
message ListResponse {
  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;
}
message Annotations {
  optional SectionMetadata sectionRelated = 1;
  optional SectionMetadata sectionMoreBy = 2;
  optional PlusOneData plusOneData = 3;
  repeated Warning warning = 4;
  optional SectionMetadata sectionBodyOfWork = 5;
  optional SectionMetadata sectionCoreContent = 6;
  optional Template template = 7;
  repeated Badge badgeForCreator = 8;
  repeated Badge badgeForDoc = 9;
  optional Link link = 10;
  optional SectionMetadata sectionCrossSell = 11;
  optional SectionMetadata sectionRelatedDocType = 12;
  repeated PromotedDoc promotedDoc = 13;
  optional string offerNote = 14;
  repeated DocV2 subscription = 16;
  optional Reason reason = 17;
  optional string privacyPolicyUrl = 18;
}
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 Annotations annotations = 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;
}
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;
}
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;
}
message FilterEvaluationInfo {
  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;
}
message RuleEvaluation {
  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;
}
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;
}
message LibrarySubscriptionDetails {
  optional int64 initiationTimestampMsec = 1;
  optional int64 validUntilTimestampMsec = 2;
  optional bool autoRenewing = 3;
  optional int64 trialUntilTimestampMsec = 4;
}
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;
}
message ClientLibraryState {
  optional int32 corpus = 1;
  optional bytes serverToken = 2;
  optional int64 hashCodeSum = 3;
  optional int32 librarySize = 4;
}
message LibraryReplicationRequest {
  repeated ClientLibraryState libraryState = 1;
}
message LibraryReplicationResponse {
  repeated LibraryUpdate update = 1;
}
message ClickLogEvent {
  optional int64 eventTime = 1;
  optional string url = 2;
  optional string listId = 3;
  optional string referrerUrl = 4;
  optional string referrerListId = 5;
}
message LogRequest {
  repeated ClickLogEvent clickEvent = 1;
}
message LogResponse {
}
message AndroidAppNotificationData {
  optional int32 versionCode = 1;
  optional string assetId = 2;
}
message InAppNotificationData {
  optional string checkoutOrderId = 1;
  optional string inAppNotificationId = 2;
}
message LibraryDirtyData {
  optional int32 backend = 1;
}
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;
}
message PurchaseDeclinedData {
  optional int32 reason = 1;
  optional bool showNotification = 2;
}
message PurchaseRemovalData {
  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;
}
message PlusOneResponse {
}
message RateSuggestedContentResponse {
}
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;
}
message DirectPurchase {
  optional string detailsUrl = 1;
  optional string purchaseDocid = 2;
  optional string parentDocid = 3;
  optional int32 offerType = 4;
}
message ResolveLinkResponse {
  optional string detailsUrl = 1;
  optional string browseUrl = 2;
  optional string searchUrl = 3;
  optional DirectPurchase directPurchase = 4;
  optional string homeUrl = 5;
}
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 UpdateInstrumentResponse updateInstrumentResponse = 9;
  optional LogResponse logResponse = 10;
  optional CheckInstrumentResponse checkInstrumentResponse = 11;
  optional PlusOneResponse plusOneResponse = 12;
  optional FlagContentResponse flagContentResponse = 13;
  optional AckNotificationResponse ackNotificationResponse = 14;
  optional InitiateAssociationResponse initiateAssociationResponse = 15;
  optional VerifyAssociationResponse verifyAssociationResponse = 16;
  optional LibraryReplicationResponse libraryReplicationResponse = 17;
  optional RevokeResponse revokeResponse = 18;
  optional BulkDetailsResponse bulkDetailsResponse = 19;
  optional ResolveLinkResponse resolveLinkResponse = 20;
  optional DeliveryResponse deliveryResponse = 21;
  optional AcceptTosResponse acceptTosResponse = 22;
  optional RateSuggestedContentResponse rateSuggestedContentResponse = 23;
  optional CheckPromoOfferResponse checkPromoOfferResponse = 24;
}
message PreFetch {
  optional string url = 1;
  optional bytes response = 2;
  optional string etag = 3;
  optional int64 ttl = 4;
  optional int64 softTtl = 5;
}
message ResponseWrapper {
  optional Payload payload = 1;
  optional ServerCommands commands = 2;
  repeated PreFetch preFetch = 3;
  repeated Notification notification = 4;
}
message ServerCommands {
  optional bool clearCache = 1;
  optional string displayErrorMessage = 2;
  optional string logErrorStacktrace = 3;
}
message GetReviewsResponse {
  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;
}
message ReviewResponse {
  optional GetReviewsResponse getResponse = 1;
  optional string nextPageUrl = 2;
}
message RevokeResponse {
  optional LibraryUpdate libraryUpdate = 1;
}
message RelatedSearch {
  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;
}
message CorpusMetadata {
  optional int32 backend = 1;
  optional string name = 2;
  optional string landingUrl = 3;
  optional string libraryName = 4;
}
message Experiments {
  repeated string experimentId = 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 UserSettings userSettings = 8;
  optional string iconOverrideUrl = 9;
}
message UserSettings {
  optional bool tosCheckboxMarketingEmailsOptedIn = 1;
}
message AcceptTosResponse {
}
message AckNotificationsRequestProto {
  repeated string notificationId = 1;
  optional SignatureHashProto signatureHash = 2;
  repeated string nackNotificationId = 3;
}
message AckNotificationsResponseProto {
}
message AddressProto {
  optional string address1 = 1;
  optional string address2 = 2;
  optional string city = 3;
  optional string state = 4;
  optional string postalCode = 5;
  optional string country = 6;
  optional string name = 7;
  optional string type = 8;
  optional string phone = 9;
}
message AppDataProto {
  optional string key = 1;
  optional string value = 2;
}
message AppSuggestionProto {
  optional ExternalAssetProto assetInfo = 1;
}
message AssetIdentifierProto {
  optional string packageName = 1;
  optional int32 versionCode = 2;
  optional string assetId = 3;
}
message AssetsRequestProto {
  optional int32 assetType = 1;
  optional string query = 2;
  optional string categoryId = 3;
  repeated string assetId = 4;
  optional bool retrieveVendingHistory = 5;
  optional bool retrieveExtendedInfo = 6;
  optional int32 sortOrder = 7;
  optional int64 startIndex = 8;
  optional int64 numEntries = 9;
  optional int32 viewFilter = 10;
  optional string rankingType = 11;
  optional bool retrieveCarrierChannel = 12;
  repeated string pendingDownloadAssetId = 13;
  optional bool reconstructVendingHistory = 14;
  optional bool unfilteredResults = 15;
  repeated string badgeId = 16;
}
message AssetsResponseProto {
  repeated ExternalAssetProto asset = 1;
  optional int64 numTotalEntries = 2;
  optional string correctedQuery = 3;
  repeated ExternalAssetProto altAsset = 4;
  optional int64 numCorrectedEntries = 5;
  optional string header = 6;
  optional int32 listType = 7;
}
message BillingEventRequestProto {
  optional int32 eventType = 1;
  optional string billingParametersId = 2;
  optional bool resultSuccess = 3;
  optional string clientMessage = 4;
  optional ExternalCarrierBillingInstrumentProto carrierInstrument = 5;
}
message BillingEventResponseProto {
}
message BillingParameterProto {
  optional string id = 1;
  optional string name = 2;
  repeated string mncMcc = 3;
  repeated string backendUrl = 4;
  optional string iconId = 5;
  optional int32 billingInstrumentType = 6;
  optional string applicationId = 7;
  optional string tosUrl = 8;
  optional bool instrumentTosRequired = 9;
  optional int32 apiVersion = 10;
  optional bool perTransactionCredentialsRequired = 11;
  optional bool sendSubscriberIdWithCarrierBillingRequests = 12;
  optional int32 deviceAssociationMethod = 13;
  optional string userTokenRequestMessage = 14;
  optional string userTokenRequestAddress = 15;
  optional bool passphraseRequired = 16;
}
message CarrierBillingCredentialsProto {
  optional string credentials = 1;
  optional int64 credentialsTimeout = 2;
}
message CategoryProto {
  optional int32 assetType = 2;
  optional string categoryId = 3;
  optional string categoryDisplay = 4;
  optional string categorySubtitle = 5;
  repeated string promotedAssetsNew = 6;
  repeated string promotedAssetsHome = 7;
  repeated CategoryProto subCategories = 8;
  repeated string promotedAssetsPaid = 9;
  repeated string promotedAssetsFree = 10;
}
message CheckForNotificationsRequestProto {
  optional int64 alarmDuration = 1;
}
message CheckForNotificationsResponseProto {
}
message CheckLicenseRequestProto {
  optional string packageName = 1;
  optional int32 versionCode = 2;
  optional int64 nonce = 3;
}
message CheckLicenseResponseProto {
  optional int32 responseCode = 1;
  optional string signedData = 2;
  optional string signature = 3;
}
message CommentsRequestProto {
  optional string assetId = 1;
  optional int64 startIndex = 2;
  optional int64 numEntries = 3;
  optional bool shouldReturnSelfComment = 4;
  optional string assetReferrer = 5;
}
message CommentsResponseProto {
  repeated ExternalCommentProto comment = 1;
  optional int64 numTotalEntries = 2;
  optional ExternalCommentProto selfComment = 3;
}
message ContentSyncRequestProto {
  optional bool incremental = 1;
  repeated group AssetInstallState = 2 {
    optional string assetId = 3;
    optional int32 assetState = 4;
    optional int64 installTime = 5;
    optional int64 uninstallTime = 6;
    optional string packageName = 7;
    optional int32 versionCode = 8;
    optional string assetReferrer = 9;
  }
  repeated group SystemApp = 10 {
    optional string packageName = 11;
    optional int32 versionCode = 12;
    repeated string certificateHash = 13;
  }
  optional int32 sideloadedAppCount = 14;
}
message ContentSyncResponseProto {
  optional int32 numUpdatesAvailable = 1;
}
message DataMessageProto {
  optional string category = 1;
  repeated AppDataProto appData = 3;
}
message DownloadInfoProto {
  optional int64 apkSize = 1;
  repeated FileMetadataProto additionalFile = 2;
}
message ExternalAssetProto {
  optional string id = 1;
  optional string title = 2;
  optional int32 assetType = 3;
  optional string owner = 4;
  optional string version = 5;
  optional string price = 6;
  optional string averageRating = 7;
  optional int64 numRatings = 8;
  optional group PurchaseInformation = 9 {
    optional int64 purchaseTime = 10;
    optional int64 refundTimeoutTime = 11;
    optional int32 refundStartPolicy = 45;
    optional int64 refundWindowDuration = 46;
  }
  optional group ExtendedInfo = 12 {
    optional string description = 13;
    optional int64 downloadCount = 14;
    repeated string applicationPermissionId = 15;
    optional int64 requiredInstallationSize = 16;
    optional string packageName = 17;
    optional string category = 18;
    optional bool forwardLocked = 19;
    optional string contactEmail = 20;
    optional bool everInstalledByUser = 21;
    optional string downloadCountString = 23;
    optional string contactPhone = 26;
    optional string contactWebsite = 27;
    optional bool nextPurchaseRefundable = 28;
    optional int32 numScreenshots = 30;
    optional string promotionalDescription = 31;
    optional int32 serverAssetState = 34;
    optional int32 contentRatingLevel = 36;
    optional string contentRatingString = 37;
    optional string recentChanges = 38;
    repeated group PackageDependency = 39 {
      optional string packageName = 41;
      optional bool skipPermissions = 42;
    }
    optional string videoLink = 43;
    optional DownloadInfoProto downloadInfo = 49;
  }
  optional string ownerId = 22;
  optional string packageName = 24;
  optional int32 versionCode = 25;
  optional bool bundledAsset = 29;
  optional string priceCurrency = 32;
  optional int64 priceMicros = 33;
  optional string filterReason = 35;
  optional string actualSellerPrice = 40;
  repeated ExternalBadgeProto appBadge = 47;
  repeated ExternalBadgeProto ownerBadge = 48;
}
message ExternalBadgeImageProto {
  optional int32 usage = 1;
  optional string url = 2;
}
message ExternalBadgeProto {
  optional string localizedTitle = 1;
  optional string localizedDescription = 2;
  repeated ExternalBadgeImageProto badgeImage = 3;
  optional string searchId = 4;
}
message ExternalCarrierBillingInstrumentProto {
  optional string instrumentKey = 1;
  optional string subscriberIdentifier = 2;
  optional string accountType = 3;
  optional string subscriberCurrency = 4;
  optional uint64 transactionLimit = 5;
  optional string subscriberName = 6;
  optional string address1 = 7;
  optional string address2 = 8;
  optional string city = 9;
  optional string state = 10;
  optional string postalCode = 11;
  optional string country = 12;
  optional EncryptedSubscriberInfo encryptedSubscriberInfo = 13;
}
message ExternalCommentProto {
  optional string body = 1;
  optional int32 rating = 2;
  optional string creatorName = 3;
  optional int64 creationTime = 4;
  optional string creatorId = 5;
}
message ExternalCreditCard {
  optional string type = 1;
  optional string lastDigits = 2;
  optional int32 expYear = 3;
  optional int32 expMonth = 4;
  optional string personName = 5;
  optional string countryCode = 6;
  optional string postalCode = 7;
  optional bool makeDefault = 8;
  optional string address1 = 9;
  optional string address2 = 10;
  optional string city = 11;
  optional string state = 12;
  optional string phone = 13;
}
message ExternalPaypalInstrumentProto {
  optional string instrumentKey = 1;
  optional string preapprovalKey = 2;
  optional string paypalEmail = 3;
  optional AddressProto paypalAddress = 4;
  optional bool multiplePaypalInstrumentsSupported = 5;
}
message FileMetadataProto {
  optional int32 fileType = 1;
  optional int32 versionCode = 2;
  optional int64 size = 3;
  optional string downloadUrl = 4;
}
message GetAddressSnippetRequestProto {
  optional EncryptedSubscriberInfo encryptedSubscriberInfo = 1;
}
message GetAddressSnippetResponseProto {
  optional string addressSnippet = 1;
}
message GetAssetRequestProto {
  optional string assetId = 1;
  optional string directDownloadKey = 2;
}
message GetAssetResponseProto {
  optional group InstallAsset = 1 {
    optional string assetId = 2;
    optional string assetName = 3;
    optional string assetType = 4;
    optional string assetPackage = 5;
    optional string blobUrl = 6;
    optional string assetSignature = 7;
    optional int64 assetSize = 8;
    optional int64 refundTimeoutMillis = 9;
    optional bool forwardLocked = 10;
    optional bool secured = 11;
    optional int32 versionCode = 12;
    optional string downloadAuthCookieName = 13;
    optional string downloadAuthCookieValue = 14;
    optional int64 postInstallRefundWindowMillis = 16;
  }
  repeated FileMetadataProto additionalFile = 15;
}
message GetCarrierInfoRequestProto {
}
message GetCarrierInfoResponseProto {
  optional bool carrierChannelEnabled = 1;
  optional bytes carrierLogoIcon = 2;
  optional bytes carrierBanner = 3;
  optional string carrierSubtitle = 4;
  optional string carrierTitle = 5;
  optional int32 carrierImageDensity = 6;
}
message GetCategoriesRequestProto {
  optional bool prefetchPromoData = 1;
}
message GetCategoriesResponseProto {
  repeated CategoryProto categories = 1;
}
message GetImageRequestProto {
  optional string assetId = 1;
  optional int32 imageUsage = 3;
  optional string imageId = 4;
  optional int32 screenPropertyWidth = 5;
  optional int32 screenPropertyHeight = 6;
  optional int32 screenPropertyDensity = 7;
  optional int32 productType = 8;
}
message GetImageResponseProto {
  optional bytes imageData = 1;
  optional int32 imageDensity = 2;
}
message GetMarketMetadataRequestProto {
  optional int64 lastRequestTime = 1;
  optional DeviceConfigurationProto deviceConfiguration = 2;
  optional bool deviceRoaming = 3;
  repeated string marketSignatureHash = 4;
  optional int32 contentRating = 5;
  optional string deviceModelName = 6;
  optional string deviceManufacturerName = 7;
}
message GetMarketMetadataResponseProto {
  optional int32 latestClientVersionCode = 1;
  optional string latestClientUrl = 2;
  optional bool paidAppsEnabled = 3;
  repeated BillingParameterProto billingParameter = 4;
  optional bool commentPostEnabled = 5;
  optional bool billingEventsEnabled = 6;
  optional string warningMessage = 7;
  optional bool inAppBillingEnabled = 8;
  optional int32 inAppBillingMaxApiVersion = 9;
}
message GetSubCategoriesRequestProto {
  optional int32 assetType = 1;
}
message GetSubCategoriesResponseProto {
  repeated group SubCategory = 1 {
    optional string subCategoryDisplay = 2;
    optional string subCategoryId = 3;
  }
}
message InAppPurchaseInformationRequestProto {
  optional SignatureHashProto signatureHash = 1;
  optional int64 nonce = 2;
  repeated string notificationId = 3;
  optional string signatureAlgorithm = 4;
  optional int32 billingApiVersion = 5;
}
message InAppPurchaseInformationResponseProto {
  optional SignedDataProto signedResponse = 1;
  repeated StatusBarNotificationProto statusBarNotification = 2;
  optional PurchaseResultProto purchaseResult = 3;
}
message InAppRestoreTransactionsRequestProto {
  optional SignatureHashProto signatureHash = 1;
  optional int64 nonce = 2;
  optional string signatureAlgorithm = 3;
  optional int32 billingApiVersion = 4;
}
message InAppRestoreTransactionsResponseProto {
  optional SignedDataProto signedResponse = 1;
  optional PurchaseResultProto purchaseResult = 2;
}
/*
message InputValidationError {
  optional int32 inputField = 1;
  optional string errorMessage = 2;
}
*/
message ModifyCommentRequestProto {
  optional string assetId = 1;
  optional ExternalCommentProto comment = 2;
  optional bool deleteComment = 3;
  optional bool flagAsset = 4;
  optional int32 flagType = 5;
  optional string flagMessage = 6;
  optional bool nonFlagFlow = 7;
}
message ModifyCommentResponseProto {
}
message PaypalCountryInfoProto {
  optional bool birthDateRequired = 1;
  optional string tosText = 2;
  optional string billingAgreementText = 3;
  optional string preTosText = 4;
}
message PaypalCreateAccountRequestProto {
  optional string firstName = 1;
  optional string lastName = 2;
  optional AddressProto address = 3;
  optional string birthDate = 4;
}
message PaypalCreateAccountResponseProto {
  optional string createAccountKey = 1;
}
message PaypalCredentialsProto {
  optional string preapprovalKey = 1;
  optional string paypalEmail = 2;
}
message PaypalMassageAddressRequestProto {
  optional AddressProto address = 1;
}
message PaypalMassageAddressResponseProto {
  optional AddressProto address = 1;
}
message PaypalPreapprovalCredentialsRequestProto {
  optional string gaiaAuthToken = 1;
  optional string billingInstrumentId = 2;
}
message PaypalPreapprovalCredentialsResponseProto {
  optional int32 resultCode = 1;
  optional string paypalAccountKey = 2;
  optional string paypalEmail = 3;
}
message PaypalPreapprovalDetailsRequestProto {
  optional bool getAddress = 1;
  optional string preapprovalKey = 2;
}
message PaypalPreapprovalDetailsResponseProto {
  optional string paypalEmail = 1;
  optional AddressProto address = 2;
}
message PaypalPreapprovalRequestProto {
}
message PaypalPreapprovalResponseProto {
  optional string preapprovalKey = 1;
}
message PendingNotificationsProto {
  repeated DataMessageProto notification = 1;
  optional int64 nextCheckMillis = 2;
}
message PrefetchedBundleProto {
  optional SingleRequestProto request = 1;
  optional SingleResponseProto response = 2;
}
message PurchaseCartInfoProto {
  optional string itemPrice = 1;
  optional string taxInclusive = 2;
  optional string taxExclusive = 3;
  optional string total = 4;
  optional string taxMessage = 5;
  optional string footerMessage = 6;
  optional string priceCurrency = 7;
  optional int64 priceMicros = 8;
}
message PurchaseInfoProto {
  optional string transactionId = 1;
  optional PurchaseCartInfoProto cartInfo = 2;
  optional group BillingInstruments = 3 {
    repeated group BillingInstrument = 4 {
      optional string id = 5;
      optional string name = 6;
      optional bool isInvalid = 7;
      optional int32 instrumentType = 11;
      optional int32 instrumentStatus = 14;
    }
    optional string defaultBillingInstrumentId = 8;
  }
  repeated int32 errorInputFields = 9;
  optional string refundPolicy = 10;
  optional bool userCanAddGdd = 12;
  repeated int32 eligibleInstrumentTypes = 13;
  optional string orderId = 15;
}
message PurchaseMetadataRequestProto {
  optional bool deprecatedRetrieveBillingCountries = 1;
  optional int32 billingInstrumentType = 2;
}
message PurchaseMetadataResponseProto {
  optional group Countries = 1 {
    repeated group Country = 2 {
      optional string countryCode = 3;
      optional string countryName = 4;
      optional PaypalCountryInfoProto paypalCountryInfo = 5;
      optional bool allowsReducedBillingAddress = 6;
      repeated group InstrumentAddressSpec = 7 {
        optional int32 instrumentFamily = 8;
        optional BillingAddressSpec billingAddressSpec = 9;
      }
    }
  }
}
message PurchaseOrderRequestProto {
  optional string gaiaAuthToken = 1;
  optional string assetId = 2;
  optional string transactionId = 3;
  optional string billingInstrumentId = 4;
  optional bool tosAccepted = 5;
  optional CarrierBillingCredentialsProto carrierBillingCredentials = 6;
  optional string existingOrderId = 7;
  optional int32 billingInstrumentType = 8;
  optional string billingParametersId = 9;
  optional PaypalCredentialsProto paypalCredentials = 10;
  optional RiskHeaderInfoProto riskHeaderInfo = 11;
  optional int32 productType = 12;
  optional SignatureHashProto signatureHash = 13;
  optional string developerPayload = 14;
}
message PurchaseOrderResponseProto {
  optional int32 deprecatedResultCode = 1;
  optional PurchaseInfoProto purchaseInfo = 2;
  optional ExternalAssetProto asset = 3;
  optional PurchaseResultProto purchaseResult = 4;
}
message PurchasePostRequestProto {
  optional string gaiaAuthToken = 1;
  optional string assetId = 2;
  optional string transactionId = 3;
  optional group BillingInstrumentInfo = 4 {
    optional string billingInstrumentId = 5;
    optional ExternalCreditCard creditCard = 6;
    optional ExternalCarrierBillingInstrumentProto carrierInstrument = 9;
    optional ExternalPaypalInstrumentProto paypalInstrument = 10;
  }
  optional bool tosAccepted = 7;
  optional string cbInstrumentKey = 8;
  optional bool paypalAuthConfirmed = 11;
  optional int32 productType = 12;
  optional SignatureHashProto signatureHash = 13;
}
message PurchasePostResponseProto {
  optional int32 deprecatedResultCode = 1;
  optional PurchaseInfoProto purchaseInfo = 2;
  optional string termsOfServiceUrl = 3;
  optional string termsOfServiceText = 4;
  optional string termsOfServiceName = 5;
  optional string termsOfServiceCheckboxText = 6;
  optional string termsOfServiceHeaderText = 7;
  optional PurchaseResultProto purchaseResult = 8;
}
message PurchaseProductRequestProto {
  optional int32 productType = 1;
  optional string productId = 2;
  optional SignatureHashProto signatureHash = 3;
}
message PurchaseProductResponseProto {
  optional string title = 1;
  optional string itemTitle = 2;
  optional string itemDescription = 3;
  optional string merchantField = 4;
}
message PurchaseResultProto {
  optional int32 resultCode = 1;
  optional string resultCodeMessage = 2;
}
message QuerySuggestionProto {
  optional string query = 1;
  optional int32 estimatedNumResults = 2;
  optional int32 queryWeight = 3;
}
message QuerySuggestionRequestProto {
  optional string query = 1;
  optional int32 requestType = 2;
}
message QuerySuggestionResponseProto {
  repeated group Suggestion = 1 {
    optional AppSuggestionProto appSuggestion = 2;
    optional QuerySuggestionProto querySuggestion = 3;
  }
  optional int32 estimatedNumAppSuggestions = 4;
  optional int32 estimatedNumQuerySuggestions = 5;
}
message RateCommentRequestProto {
  optional string assetId = 1;
  optional string creatorId = 2;
  optional int32 commentRating = 3;
}
message RateCommentResponseProto {
}
message ReconstructDatabaseRequestProto {
  optional bool retrieveFullHistory = 1;
}
message ReconstructDatabaseResponseProto {
  repeated AssetIdentifierProto asset = 1;
}
message RefundRequestProto {
  optional string assetId = 1;
}
message RefundResponseProto {
  optional int32 result = 1;
  optional ExternalAssetProto asset = 2;
  optional string resultDetail = 3;
}
message RemoveAssetRequestProto {
  optional string assetId = 1;
}
message RequestPropertiesProto {
  optional string userAuthToken = 1;
  optional bool userAuthTokenSecure = 2;
  optional int32 softwareVersion = 3;
  optional string aid = 4;
  optional string productNameAndVersion = 5;
  optional string userLanguage = 6;
  optional string userCountry = 7;
  optional string operatorName = 8;
  optional string simOperatorName = 9;
  optional string operatorNumericName = 10;
  optional string simOperatorNumericName = 11;
  optional string clientId = 12;
  optional string loggingId = 13;
}
message RequestProto {
  optional RequestPropertiesProto requestProperties = 1;
  repeated group Request = 2 {
    optional RequestSpecificPropertiesProto requestSpecificProperties = 3;
    optional AssetsRequestProto assetRequest = 4;
    optional CommentsRequestProto commentsRequest = 5;
    optional ModifyCommentRequestProto modifyCommentRequest = 6;
    optional PurchasePostRequestProto purchasePostRequest = 7;
    optional PurchaseOrderRequestProto purchaseOrderRequest = 8;
    optional ContentSyncRequestProto contentSyncRequest = 9;
    optional GetAssetRequestProto getAssetRequest = 10;
    optional GetImageRequestProto getImageRequest = 11;
    optional RefundRequestProto refundRequest = 12;
    optional PurchaseMetadataRequestProto purchaseMetadataRequest = 13;
    optional GetSubCategoriesRequestProto subCategoriesRequest = 14;
    optional UninstallReasonRequestProto uninstallReasonRequest = 16;
    optional RateCommentRequestProto rateCommentRequest = 17;
    optional CheckLicenseRequestProto checkLicenseRequest = 18;
    optional GetMarketMetadataRequestProto getMarketMetadataRequest = 19;
    optional GetCategoriesRequestProto getCategoriesRequest = 21;
    optional GetCarrierInfoRequestProto getCarrierInfoRequest = 22;
    optional RemoveAssetRequestProto removeAssetRequest = 23;
    optional RestoreApplicationsRequestProto restoreApplicationsRequest = 24;
    optional QuerySuggestionRequestProto querySuggestionRequest = 25;
    optional BillingEventRequestProto billingEventRequest = 26;
    optional PaypalPreapprovalRequestProto paypalPreapprovalRequest = 27;
    optional PaypalPreapprovalDetailsRequestProto paypalPreapprovalDetailsRequest = 28;
    optional PaypalCreateAccountRequestProto paypalCreateAccountRequest = 29;
    optional PaypalPreapprovalCredentialsRequestProto paypalPreapprovalCredentialsRequest = 30;
    optional InAppRestoreTransactionsRequestProto inAppRestoreTransactionsRequest = 31;
    optional InAppPurchaseInformationRequestProto inAppPurchaseInformationRequest = 32;
    optional CheckForNotificationsRequestProto checkForNotificationsRequest = 33;
    optional AckNotificationsRequestProto ackNotificationsRequest = 34;
    optional PurchaseProductRequestProto purchaseProductRequest = 35;
    optional ReconstructDatabaseRequestProto reconstructDatabaseRequest = 36;
    optional PaypalMassageAddressRequestProto paypalMassageAddressRequest = 37;
    optional GetAddressSnippetRequestProto getAddressSnippetRequest = 38;
  }
}
message RequestSpecificPropertiesProto {
  optional string ifNoneMatch = 1;
}
message ResponsePropertiesProto {
  optional int32 result = 1;
  optional int32 maxAge = 2;
  optional string etag = 3;
  optional int32 serverVersion = 4;
  optional int32 maxAgeConsumable = 6;
  optional string errorMessage = 7;
  repeated InputValidationError errorInputField = 8;
}
message ResponseProto {
  repeated group Response = 1 {
    optional ResponsePropertiesProto responseProperties = 2;
    optional AssetsResponseProto assetsResponse = 3;
    optional CommentsResponseProto commentsResponse = 4;
    optional ModifyCommentResponseProto modifyCommentResponse = 5;
    optional PurchasePostResponseProto purchasePostResponse = 6;
    optional PurchaseOrderResponseProto purchaseOrderResponse = 7;
    optional ContentSyncResponseProto contentSyncResponse = 8;
    optional GetAssetResponseProto getAssetResponse = 9;
    optional GetImageResponseProto getImageResponse = 10;
    optional RefundResponseProto refundResponse = 11;
    optional PurchaseMetadataResponseProto purchaseMetadataResponse = 12;
    optional GetSubCategoriesResponseProto subCategoriesResponse = 13;
    optional UninstallReasonResponseProto uninstallReasonResponse = 15;
    optional RateCommentResponseProto rateCommentResponse = 16;
    optional CheckLicenseResponseProto checkLicenseResponse = 17;
    optional GetMarketMetadataResponseProto getMarketMetadataResponse = 18;
    repeated PrefetchedBundleProto prefetchedBundle = 19;
    optional GetCategoriesResponseProto getCategoriesResponse = 20;
    optional GetCarrierInfoResponseProto getCarrierInfoResponse = 21;
    optional RestoreApplicationsResponseProto restoreApplicationResponse = 23;
    optional QuerySuggestionResponseProto querySuggestionResponse = 24;
    optional BillingEventResponseProto billingEventResponse = 25;
    optional PaypalPreapprovalResponseProto paypalPreapprovalResponse = 26;
    optional PaypalPreapprovalDetailsResponseProto paypalPreapprovalDetailsResponse = 27;
    optional PaypalCreateAccountResponseProto paypalCreateAccountResponse = 28;
    optional PaypalPreapprovalCredentialsResponseProto paypalPreapprovalCredentialsResponse = 29;
    optional InAppRestoreTransactionsResponseProto inAppRestoreTransactionsResponse = 30;
    optional InAppPurchaseInformationResponseProto inAppPurchaseInformationResponse = 31;
    optional CheckForNotificationsResponseProto checkForNotificationsResponse = 32;
    optional AckNotificationsResponseProto ackNotificationsResponse = 33;
    optional PurchaseProductResponseProto purchaseProductResponse = 34;
    optional ReconstructDatabaseResponseProto reconstructDatabaseResponse = 35;
    optional PaypalMassageAddressResponseProto paypalMassageAddressResponse = 36;
    optional GetAddressSnippetResponseProto getAddressSnippetResponse = 37;
  }
  optional PendingNotificationsProto pendingNotifications = 38;
}
message RestoreApplicationsRequestProto {
  optional string backupAndroidId = 1;
  optional string tosVersion = 2;
  optional DeviceConfigurationProto deviceConfiguration = 3;
}
message RestoreApplicationsResponseProto {
  repeated GetAssetResponseProto asset = 1;
}
message RiskHeaderInfoProto {
  optional string hashedDeviceInfo = 1;
}
message SignatureHashProto {
  optional string packageName = 1;
  optional int32 versionCode = 2;
  optional bytes hash = 3;
}
message SignedDataProto {
  optional string signedData = 1;
  optional string signature = 2;
}
message SingleRequestProto {
  optional RequestSpecificPropertiesProto requestSpecificProperties = 3;
  optional AssetsRequestProto assetRequest = 4;
  optional CommentsRequestProto commentsRequest = 5;
  optional ModifyCommentRequestProto modifyCommentRequest = 6;
  optional PurchasePostRequestProto purchasePostRequest = 7;
  optional PurchaseOrderRequestProto purchaseOrderRequest = 8;
  optional ContentSyncRequestProto contentSyncRequest = 9;
  optional GetAssetRequestProto getAssetRequest = 10;
  optional GetImageRequestProto getImageRequest = 11;
  optional RefundRequestProto refundRequest = 12;
  optional PurchaseMetadataRequestProto purchaseMetadataRequest = 13;
  optional GetSubCategoriesRequestProto subCategoriesRequest = 14;
  optional UninstallReasonRequestProto uninstallReasonRequest = 16;
  optional RateCommentRequestProto rateCommentRequest = 17;
  optional CheckLicenseRequestProto checkLicenseRequest = 18;
  optional GetMarketMetadataRequestProto getMarketMetadataRequest = 19;
  optional GetCategoriesRequestProto getCategoriesRequest = 21;
  optional GetCarrierInfoRequestProto getCarrierInfoRequest = 22;
  optional RemoveAssetRequestProto removeAssetRequest = 23;
  optional RestoreApplicationsRequestProto restoreApplicationsRequest = 24;
  optional QuerySuggestionRequestProto querySuggestionRequest = 25;
  optional BillingEventRequestProto billingEventRequest = 26;
  optional PaypalPreapprovalRequestProto paypalPreapprovalRequest = 27;
  optional PaypalPreapprovalDetailsRequestProto paypalPreapprovalDetailsRequest = 28;
  optional PaypalCreateAccountRequestProto paypalCreateAccountRequest = 29;
  optional PaypalPreapprovalCredentialsRequestProto paypalPreapprovalCredentialsRequest = 30;
  optional InAppRestoreTransactionsRequestProto inAppRestoreTransactionsRequest = 31;
  optional InAppPurchaseInformationRequestProto getInAppPurchaseInformationRequest = 32;
  optional CheckForNotificationsRequestProto checkForNotificationsRequest = 33;
  optional AckNotificationsRequestProto ackNotificationsRequest = 34;
  optional PurchaseProductRequestProto purchaseProductRequest = 35;
  optional ReconstructDatabaseRequestProto reconstructDatabaseRequest = 36;
  optional PaypalMassageAddressRequestProto paypalMassageAddressRequest = 37;
  optional GetAddressSnippetRequestProto getAddressSnippetRequest = 38;
}
message SingleResponseProto {
  optional ResponsePropertiesProto responseProperties = 2;
  optional AssetsResponseProto assetsResponse = 3;
  optional CommentsResponseProto commentsResponse = 4;
  optional ModifyCommentResponseProto modifyCommentResponse = 5;
  optional PurchasePostResponseProto purchasePostResponse = 6;
  optional PurchaseOrderResponseProto purchaseOrderResponse = 7;
  optional ContentSyncResponseProto contentSyncResponse = 8;
  optional GetAssetResponseProto getAssetResponse = 9;
  optional GetImageResponseProto getImageResponse = 10;
  optional RefundResponseProto refundResponse = 11;
  optional PurchaseMetadataResponseProto purchaseMetadataResponse = 12;
  optional GetSubCategoriesResponseProto subCategoriesResponse = 13;
  optional UninstallReasonResponseProto uninstallReasonResponse = 15;
  optional RateCommentResponseProto rateCommentResponse = 16;
  optional CheckLicenseResponseProto checkLicenseResponse = 17;
  optional GetMarketMetadataResponseProto getMarketMetadataResponse = 18;
  optional GetCategoriesResponseProto getCategoriesResponse = 20;
  optional GetCarrierInfoResponseProto getCarrierInfoResponse = 21;
  optional RestoreApplicationsResponseProto restoreApplicationResponse = 23;
  optional QuerySuggestionResponseProto querySuggestionResponse = 24;
  optional BillingEventResponseProto billingEventResponse = 25;
  optional PaypalPreapprovalResponseProto paypalPreapprovalResponse = 26;
  optional PaypalPreapprovalDetailsResponseProto paypalPreapprovalDetailsResponse = 27;
  optional PaypalCreateAccountResponseProto paypalCreateAccountResponse = 28;
  optional PaypalPreapprovalCredentialsResponseProto paypalPreapprovalCredentialsResponse = 29;
  optional InAppRestoreTransactionsResponseProto inAppRestoreTransactionsResponse = 30;
  optional InAppPurchaseInformationResponseProto getInAppPurchaseInformationResponse = 31;
  optional CheckForNotificationsResponseProto checkForNotificationsResponse = 32;
  optional AckNotificationsResponseProto ackNotificationsResponse = 33;
  optional PurchaseProductResponseProto purchaseProductResponse = 34;
  optional ReconstructDatabaseResponseProto reconstructDatabaseResponse = 35;
  optional PaypalMassageAddressResponseProto paypalMassageAddressResponse = 36;
  optional GetAddressSnippetResponseProto getAddressSnippetResponse = 37;
}
message StatusBarNotificationProto {
  optional string tickerText = 1;
  optional string contentTitle = 2;
  optional string contentText = 3;
}
message UninstallReasonRequestProto {
  optional string assetId = 1;
  optional int32 reason = 2;
}
message UninstallReasonResponseProto {
}
back to top