-
Notifications
You must be signed in to change notification settings - Fork 208
/
googleplay.proto
1277 lines (1263 loc) · 37.8 KB
/
googleplay.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
syntax = "proto2";
// 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;
}
message AndroidAppPatchData {
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;
}
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;
optional Image icon = 5;
optional UnknownCategoryContainer unknownCategoryContainer = 4;
}
message UnknownCategoryContainer {
optional CategoryIdContainer categoryIdContainer = 5;
}
message CategoryIdContainer {
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;
}
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;
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;
}
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 DeliveryResponse {
optional AndroidAppDeliveryData appDeliveryData = 2;
}
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;
optional bool sale = 22;
optional string message = 26;
optional int64 saleEndTimestamp = 30;
optional string saleMessage = 31;
}
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 DebugInfo {
repeated string message = 1;
repeated group Timing = 2 {
optional string name = 3;
optional double timeInMs = 4;
}
}
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;
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;
}
message BadgeContainer1 {
optional BadgeContainer2 badgeContainer2 = 1;
}
message BadgeContainer2 {
optional BadgeLinkContainer badgeLinkContainer = 2;
}
message BadgeLinkContainer {
optional string link = 2;
}
message Features {
repeated Feature featurePresence = 1;
repeated Feature featureRating = 2;
}
message Feature {
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;
}
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;
}
optional string color = 15;
optional int32 screenshotSetNumber = 21;
}
message TranslatedText {
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;
}
message PlusPerson {
optional string displayName = 2;
optional string profileImageUrl = 4;
}
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;
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;
}
message Dependencies {
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;
}
message TestingProgramInfo {
optional bool subscribed = 2;
optional bool subscribed1 = 3;
optional string testingProgramEmail = 5;
}
message EarlyAccessInfo {
optional string email = 3;
}
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 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;
}
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;
}
message RelatedLinksUnknown1 {
optional RelatedLinksUnknown2 unknown2 = 2;
}
message RelatedLinksUnknown2 {
optional string homeUrl = 2;
optional string nextPageUrl = 3;
}
message Rated {
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;
}
message CategoryInfo {
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;
}
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 LibraryInAppDetails {
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;
}
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 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 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 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 BillingConfig {
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;
}
message Experiments {
repeated string experimentId = 1;
}
message SelfUpdateConfig {
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;
}
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;
}
message PreFetch {
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;
}
message Targets {
repeated int64 targetId = 1;
optional bytes signature = 2;
}
message ServerCookie {
optional int32 type = 1;
optional bytes token = 2;
}
message ServerCookies {
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;
}
message ResponseWrapperApi {
optional PayloadApi payload = 1;
}
message PayloadApi {
optional UserProfileResponse userProfileResponse = 5;
}
message UserProfileResponse {
optional UserProfile userProfile = 1;
}
message ServerCommands {
optional bool clearCache = 1;
optional string displayErrorMessage = 2;