candy_check 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.rubocop.yml +6 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +16 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +157 -0
  9. data/Rakefile +15 -0
  10. data/bin/cc_appstore +90 -0
  11. data/bin/cc_playstore +119 -0
  12. data/candy_check.gemspec +31 -0
  13. data/lib/candy_check/app_store/client.rb +57 -0
  14. data/lib/candy_check/app_store/config.rb +30 -0
  15. data/lib/candy_check/app_store/receipt.rb +83 -0
  16. data/lib/candy_check/app_store/verification.rb +49 -0
  17. data/lib/candy_check/app_store/verification_failure.rb +60 -0
  18. data/lib/candy_check/app_store/verifier.rb +69 -0
  19. data/lib/candy_check/app_store.rb +12 -0
  20. data/lib/candy_check/play_store/client.rb +102 -0
  21. data/lib/candy_check/play_store/config.rb +51 -0
  22. data/lib/candy_check/play_store/discovery_repository.rb +33 -0
  23. data/lib/candy_check/play_store/receipt.rb +81 -0
  24. data/lib/candy_check/play_store/verification.rb +46 -0
  25. data/lib/candy_check/play_store/verification_failure.rb +30 -0
  26. data/lib/candy_check/play_store/verifier.rb +52 -0
  27. data/lib/candy_check/play_store.rb +15 -0
  28. data/lib/candy_check/utils/attribute_reader.rb +30 -0
  29. data/lib/candy_check/utils/config.rb +40 -0
  30. data/lib/candy_check/utils.rb +2 -0
  31. data/lib/candy_check/version.rb +4 -0
  32. data/lib/candy_check.rb +8 -0
  33. data/spec/app_store/client_spec.rb +55 -0
  34. data/spec/app_store/config_spec.rb +41 -0
  35. data/spec/app_store/receipt_spec.rb +92 -0
  36. data/spec/app_store/verifcation_failure_spec.rb +28 -0
  37. data/spec/app_store/verification_spec.rb +66 -0
  38. data/spec/app_store/verifier_spec.rb +110 -0
  39. data/spec/candy_check_spec.rb +9 -0
  40. data/spec/fixtures/api_cache.dump +1 -0
  41. data/spec/fixtures/play_store/api_cache.dump +1 -0
  42. data/spec/fixtures/play_store/auth_failure.txt +18 -0
  43. data/spec/fixtures/play_store/auth_success.txt +20 -0
  44. data/spec/fixtures/play_store/discovery.txt +2841 -0
  45. data/spec/fixtures/play_store/dummy.p12 +0 -0
  46. data/spec/fixtures/play_store/empty.txt +17 -0
  47. data/spec/fixtures/play_store/products_failure.txt +29 -0
  48. data/spec/fixtures/play_store/products_success.txt +22 -0
  49. data/spec/play_store/client_spec.rb +104 -0
  50. data/spec/play_store/config_spec.rb +96 -0
  51. data/spec/play_store/discovery_respository_spec.rb +31 -0
  52. data/spec/play_store/receipt_spec.rb +88 -0
  53. data/spec/play_store/verification_failure_spec.rb +35 -0
  54. data/spec/play_store/verification_spec.rb +80 -0
  55. data/spec/play_store/verifier_spec.rb +95 -0
  56. data/spec/spec_helper.rb +35 -0
  57. data/spec/support/with_fixtures.rb +9 -0
  58. data/spec/support/with_temp_file.rb +23 -0
  59. metadata +270 -0
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe CandyCheck::AppStore::Config do
4
+ subject { CandyCheck::AppStore::Config.new(attributes) }
5
+
6
+ describe 'valid' do
7
+ let(:attributes) do
8
+ {
9
+ environment: :sandbox
10
+ }
11
+ end
12
+
13
+ it 'returns environment' do
14
+ subject.environment.must_equal :sandbox
15
+ end
16
+
17
+ it 'checks for production?' do
18
+ subject.production?.must_be_false
19
+
20
+ other = CandyCheck::AppStore::Config.new(
21
+ environment: :production
22
+ )
23
+ other.production?.must_be_true
24
+ end
25
+ end
26
+
27
+ describe 'invalid' do
28
+ let(:attributes) do
29
+ {}
30
+ end
31
+
32
+ it 'needs an environment' do
33
+ proc { subject }.must_raise ArgumentError
34
+ end
35
+
36
+ it 'needs an included environment' do
37
+ attributes[:environment] = :invalid
38
+ proc { subject }.must_raise ArgumentError
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,92 @@
1
+ require 'spec_helper'
2
+
3
+ describe CandyCheck::AppStore::Receipt do
4
+ subject { CandyCheck::AppStore::Receipt.new(attributes) }
5
+
6
+ let(:attributes) do
7
+ {
8
+ 'original_purchase_date_pst' => '2015-01-08 03:40:46' \
9
+ ' America/Los_Angeles',
10
+ 'purchase_date_ms' => '1420803646868',
11
+ 'unique_identifier' => 'some_uniq_identifier_from_apple' \
12
+ '_for_this',
13
+ 'original_transaction_id' => 'some_original_transaction_id',
14
+ 'bvrs' => '2.0',
15
+ 'transaction_id' => 'some_transaction_id',
16
+ 'quantity' => '1',
17
+ 'unique_vendor_identifier' => '00000000-1111-2222-3333-' \
18
+ '444444444444',
19
+ 'item_id' => 'some_item_id',
20
+ 'product_id' => 'some_product',
21
+ 'purchase_date' => '2015-01-09 11:40:46 Etc/GMT',
22
+ 'original_purchase_date' => '2015-01-08 11:40:46 Etc/GMT',
23
+ 'purchase_date_pst' => '2015-01-09 03:40:46' \
24
+ ' America/Los_Angeles',
25
+ 'bid' => 'some.test.app',
26
+ 'original_purchase_date_ms' => '1420717246868'
27
+ }
28
+ end
29
+
30
+ describe 'valid transaction' do
31
+ it 'is valid' do
32
+ subject.valid?.must_be_true
33
+ end
34
+
35
+ it 'returns the item\'s id' do
36
+ subject.item_id.must_equal 'some_item_id'
37
+ end
38
+
39
+ it 'returns the quantity' do
40
+ subject.quantity.must_equal 1
41
+ end
42
+
43
+ it 'returns the app version' do
44
+ subject.app_version.must_equal '2.0'
45
+ end
46
+
47
+ it 'returns the bundle identifier' do
48
+ subject.bundle_identifier.must_equal 'some.test.app'
49
+ end
50
+
51
+ it 'returns the purchase date' do
52
+ expected = DateTime.new(2015, 1, 9, 11, 40, 46)
53
+ subject.purchase_date.must_equal expected
54
+ end
55
+
56
+ it 'returns the original purchase date' do
57
+ expected = DateTime.new(2015, 1, 8, 11, 40, 46)
58
+ subject.original_purchase_date.must_equal expected
59
+ end
60
+
61
+ it 'returns the transaction id' do
62
+ subject.transaction_id.must_equal 'some_transaction_id'
63
+ end
64
+
65
+ it 'returns the original transaction id' do
66
+ subject.original_transaction_id.must_equal 'some_original_transaction_id'
67
+ end
68
+
69
+ it 'return nil for cancellation date' do
70
+ subject.cancellation_date.must_be_nil
71
+ end
72
+
73
+ it 'returns raw attributes' do
74
+ subject.attributes.must_be_same_as attributes
75
+ end
76
+ end
77
+
78
+ describe 'valid transaction' do
79
+ before do
80
+ attributes['cancellation_date'] = '2015-01-12 11:40:46 Etc/GMT'
81
+ end
82
+
83
+ it 'isn\'t valid' do
84
+ subject.valid?.must_be_false
85
+ end
86
+
87
+ it 'return nil for cancellation date' do
88
+ expected = DateTime.new(2015, 1, 12, 11, 40, 46)
89
+ subject.cancellation_date.must_equal expected
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe CandyCheck::AppStore::VerificationFailure do
4
+ subject { CandyCheck::AppStore::VerificationFailure }
5
+ let(:known) do
6
+ [21_000, 21_002, 21_003, 21_004, 21_005, 21_006, 21_007, 21_008]
7
+ end
8
+
9
+ it 'fetched an failure with message for every known code' do
10
+ known.each do |code|
11
+ got = subject.fetch(code)
12
+ got.code.must_equal code
13
+ got.message.wont_equal 'Unknown error'
14
+ end
15
+ end
16
+
17
+ it 'fetched an failure for unknown codes' do
18
+ got = subject.fetch(1234)
19
+ got.code.must_equal 1234
20
+ got.message.must_equal 'Unknown error'
21
+ end
22
+
23
+ it 'fetched an failure for nil code' do
24
+ got = subject.fetch(nil)
25
+ got.code.must_equal(-1)
26
+ got.message.must_equal 'Unknown error'
27
+ end
28
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe CandyCheck::AppStore::Verification do
4
+ subject { CandyCheck::AppStore::Verification.new(endpoint, data, secret) }
5
+ let(:endpoint) { 'https://some.endpoint' }
6
+ let(:data) { 'some_data' }
7
+ let(:secret) { 'some_secret' }
8
+
9
+ it 'returns a verification failure for status != 0' do
10
+ with_mocked_response('status' => 21_000) do |client, recorded|
11
+ result = subject.call!
12
+ client.receipt_data.must_equal data
13
+ client.secret.must_equal secret
14
+
15
+ recorded.first.must_equal [endpoint]
16
+
17
+ result.must_be_instance_of CandyCheck::AppStore::VerificationFailure
18
+ result.code.must_equal 21_000
19
+ end
20
+ end
21
+
22
+ it 'returns a verification failure when receipt is missing' do
23
+ with_mocked_response({}) do |client, recorded|
24
+ result = subject.call!
25
+ client.receipt_data.must_equal data
26
+ client.secret.must_equal secret
27
+
28
+ recorded.first.must_equal [endpoint]
29
+
30
+ result.must_be_instance_of CandyCheck::AppStore::VerificationFailure
31
+ result.code.must_equal(-1)
32
+ end
33
+ end
34
+
35
+ it 'returns a receipt when status is 0 and receipt exists' do
36
+ response = { 'status' => 0, 'receipt' => { 'item_id' => 'some_id' } }
37
+ with_mocked_response(response) do
38
+ result = subject.call!
39
+ result.must_be_instance_of CandyCheck::AppStore::Receipt
40
+ result.item_id.must_equal('some_id')
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ class DummyClient < Struct.new(:response)
47
+ attr_reader :receipt_data, :secret
48
+
49
+ def verify(receipt_data, secret)
50
+ @receipt_data, @secret = receipt_data, secret
51
+ response
52
+ end
53
+ end
54
+
55
+ def with_mocked_response(response)
56
+ recorded = []
57
+ dummy = DummyClient.new(response)
58
+ stub = proc do |*args|
59
+ recorded << args
60
+ dummy
61
+ end
62
+ CandyCheck::AppStore::Client.stub :new, stub do
63
+ yield dummy, recorded
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,110 @@
1
+ require 'spec_helper'
2
+
3
+ describe CandyCheck::AppStore::Verifier do
4
+ subject { CandyCheck::AppStore::Verifier.new(config) }
5
+ let(:config) do
6
+ CandyCheck::AppStore::Config.new(environment: environment)
7
+ end
8
+ let(:environment) { :production }
9
+ let(:data) { 'some_data' }
10
+ let(:secret) { 'some_secret' }
11
+ let(:receipt) { CandyCheck::AppStore::Receipt.new({}) }
12
+ let(:production_endpoint) do
13
+ 'https://buy.itunes.apple.com/verifyReceipt'
14
+ end
15
+ let(:sandbox_endpoint) do
16
+ 'https://sandbox.itunes.apple.com/verifyReceipt'
17
+ end
18
+
19
+ it 'holds the config' do
20
+ subject.config.must_be_same_as config
21
+ end
22
+
23
+ describe 'sandbox' do
24
+ let(:environment) { :sandbox }
25
+
26
+ it 'uses sandbox endpoint without retry on success' do
27
+ with_mocked_verifier(receipt) do
28
+ subject.verify(data, secret).must_be_same_as receipt
29
+ assert_recorded([sandbox_endpoint, data, secret])
30
+ end
31
+ end
32
+
33
+ it 'only uses sandbox endpoint for normal failures' do
34
+ failure = get_failure(21_000)
35
+ with_mocked_verifier(failure) do
36
+ subject.verify(data, secret).must_be_same_as failure
37
+ assert_recorded([sandbox_endpoint, data, secret])
38
+ end
39
+ end
40
+
41
+ it 'retries production endpoint for redirect error' do
42
+ failure = get_failure(21_008)
43
+ with_mocked_verifier(failure, receipt) do
44
+ subject.verify(data, secret).must_be_same_as receipt
45
+ assert_recorded(
46
+ [sandbox_endpoint, data, secret],
47
+ [production_endpoint, data, secret]
48
+ )
49
+ end
50
+ end
51
+ end
52
+
53
+ describe 'production' do
54
+ let(:environment) { :production }
55
+
56
+ it 'uses production endpoint without retry on success' do
57
+ with_mocked_verifier(receipt) do
58
+ subject.verify(data, secret).must_be_same_as receipt
59
+ assert_recorded([production_endpoint, data, secret])
60
+ end
61
+ end
62
+
63
+ it 'only uses production endpoint for normal failures' do
64
+ failure = get_failure(21_000)
65
+ with_mocked_verifier(failure) do
66
+ subject.verify(data, secret).must_be_same_as failure
67
+ assert_recorded([production_endpoint, data, secret])
68
+ end
69
+ end
70
+
71
+ it 'retries production endpoint for redirect error' do
72
+ failure = get_failure(21_007)
73
+ with_mocked_verifier(failure, receipt) do
74
+ subject.verify(data, secret).must_be_same_as receipt
75
+ assert_recorded(
76
+ [production_endpoint, data, secret],
77
+ [sandbox_endpoint, data, secret]
78
+ )
79
+ end
80
+ end
81
+ end
82
+
83
+ private
84
+
85
+ def with_mocked_verifier(*results)
86
+ @recorded ||= []
87
+ stub = proc do |*args|
88
+ @recorded << args
89
+ DummyAppStoreVerification.new(*args).tap { |v| v.results = results }
90
+ end
91
+ CandyCheck::AppStore::Verification.stub :new, stub do
92
+ yield
93
+ end
94
+ end
95
+
96
+ def assert_recorded(*calls)
97
+ @recorded.must_equal calls
98
+ end
99
+
100
+ def get_failure(code)
101
+ CandyCheck::AppStore::VerificationFailure.fetch(code)
102
+ end
103
+
104
+ class DummyAppStoreVerification < Struct.new(:endpoint, :data, :secret)
105
+ attr_accessor :results
106
+ def call!
107
+ results.shift
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe CandyCheck do
4
+ subject { CandyCheck }
5
+
6
+ it 'has a version' do
7
+ subject::VERSION.wont_be_nil
8
+ end
9
+ end
@@ -0,0 +1 @@
1
+ Iu:Google::APIClient::API}�["https://www.googleapis.com/discovery/v1/apis/androidpublisher/v2/rest",{"kind":"discovery#restDescription","etag":"\"ye6orv2F-1npMW3u9suM3a7C5Bo/xy4W57xFkYdtUdm4rpPIU-7grtg\"","discoveryVersion":"v1","id":"androidpublisher:v2","name":"androidpublisher","canonicalName":"Android Publisher","version":"v2","revision":"20141117","title":"Google Play Android Developer API","description":"Lets Android application developers access their Google Play accounts.","ownerDomain":"google.com","ownerName":"Google","icons":{"x16":"https://www.google.com/images/icons/product/android-16.png","x32":"https://www.google.com/images/icons/product/android-32.png"},"documentationLink":"https://developers.google.com/android-publisher","protocol":"rest","baseUrl":"https://www.googleapis.com/androidpublisher/v2/applications/","basePath":"/androidpublisher/v2/applications/","rootUrl":"https://www.googleapis.com/","servicePath":"androidpublisher/v2/applications/","batchPath":"batch","parameters":{"alt":{"type":"string","description":"Data format for the response.","default":"json","enum":["json"],"enumDescriptions":["Responses with Content-Type of application/json"],"location":"query"},"fields":{"type":"string","description":"Selector specifying which fields to include in a partial response.","location":"query"},"key":{"type":"string","description":"API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.","location":"query"},"oauth_token":{"type":"string","description":"OAuth 2.0 token for the current user.","location":"query"},"prettyPrint":{"type":"boolean","description":"Returns response with indentations and line breaks.","default":"true","location":"query"},"quotaUser":{"type":"string","description":"Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.","location":"query"},"userIp":{"type":"string","description":"IP address of the site where the request originates. Use this if you want to enforce per-user limits.","location":"query"}},"auth":{"oauth2":{"scopes":{"https://www.googleapis.com/auth/androidpublisher":{"description":"View and manage your Google Play Android Developer account"}}}},"schemas":{"Apk":{"id":"Apk","type":"object","properties":{"binary":{"$ref":"ApkBinary","description":"Information about the binary payload of this APK."},"versionCode":{"type":"integer","description":"The version code of the APK, as specified in the APK's manifest file.","format":"int32"}}},"ApkBinary":{"id":"ApkBinary","type":"object","description":"Represents the binary payload of an APK.","properties":{"sha1":{"type":"string","description":"A sha1 hash of the APK payload, encoded as a hex string and matching the output of the sha1sum command."}}},"ApkListing":{"id":"ApkListing","type":"object","properties":{"language":{"type":"string","description":"The language code, in BCP 47 format (eg \"en-US\")."},"recentChanges":{"type":"string","description":"Describe what's new in your APK."}}},"ApkListingsListResponse":{"id":"ApkListingsListResponse","type":"object","properties":{"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#apkListingsListResponse\".","default":"androidpublisher#apkListingsListResponse"},"listings":{"type":"array","items":{"$ref":"ApkListing"}}}},"ApksListResponse":{"id":"ApksListResponse","type":"object","properties":{"apks":{"type":"array","items":{"$ref":"Apk"}},"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#apksListResponse\".","default":"androidpublisher#apksListResponse"}}},"AppDetails":{"id":"AppDetails","type":"object","properties":{"contactEmail":{"type":"string","description":"The user-visible support email for this app."},"contactPhone":{"type":"string","description":"The user-visible support telephone number for this app."},"contactWebsite":{"type":"string","description":"The user-visible website for this app."},"defaultLanguage":{"type":"string","description":"Default language code, in BCP 47 format (eg \"en-US\")."}}},"AppEdit":{"id":"AppEdit","type":"object","description":"Represents an edit of an app. An edit allows clients to make multiple changes before committing them in one operation.","properties":{"expiryTimeSeconds":{"type":"string","description":"The time at which the edit will expire and will be no longer valid for use in any subsequent API calls (encoded as seconds since the Epoch)."},"id":{"type":"string","description":"The ID of the edit that can be used in subsequent API calls."}}},"ExpansionFile":{"id":"ExpansionFile","type":"object","properties":{"fileSize":{"type":"string","description":"If set this field indicates that this APK has an Expansion File uploaded to it: this APK does not reference another APK's Expansion File. The field's value is the size of the uploaded Expansion File in bytes.","format":"int64"},"referencesVersion":{"type":"integer","description":"If set this APK's Expansion File references another APK's Expansion File. The file_size field will not be set.","format":"int32"}}},"ExpansionFilesUploadResponse":{"id":"ExpansionFilesUploadResponse","type":"object","properties":{"expansionFile":{"$ref":"ExpansionFile"}}},"Image":{"id":"Image","type":"object","properties":{"id":{"type":"string","description":"A unique id representing this image."},"sha1":{"type":"string","description":"A sha1 hash of the image that was uploaded."},"url":{"type":"string","description":"A URL that will serve a preview of the image."}}},"ImagesDeleteAllResponse":{"id":"ImagesDeleteAllResponse","type":"object","properties":{"deleted":{"type":"array","items":{"$ref":"Image"}}}},"ImagesListResponse":{"id":"ImagesListResponse","type":"object","properties":{"images":{"type":"array","items":{"$ref":"Image"}}}},"ImagesUploadResponse":{"id":"ImagesUploadResponse","type":"object","properties":{"image":{"$ref":"Image"}}},"InAppProduct":{"id":"InAppProduct","type":"object","properties":{"defaultLanguage":{"type":"string","description":"The default language of the localized data, as defined by BCP 47. e.g. \"en-US\", \"en-GB\"."},"defaultPrice":{"$ref":"Price","description":"Default price cannot be zero. In-app products can never be free. Default price is always in the developer's Checkout merchant currency."},"listings":{"type":"object","description":"List of localized title and description data.","additionalProperties":{"$ref":"InAppProductListing","description":"The language of the localized data, as defined by BCP 47. i.e.: \"en-US\", \"en-GB\"."}},"packageName":{"type":"string","description":"The package name of the parent app."},"prices":{"type":"object","description":"Prices per buyer region. None of these prices should be zero. In-app products can never be free.","additionalProperties":{"$ref":"Price","description":"Region code, as defined by ISO 3166-2."}},"purchaseType":{"type":"string","description":"Purchase type enum value. Unmodifiable after creation."},"season":{"$ref":"Season","description":"Definition of a season for a seasonal subscription. Can be defined only for yearly subscriptions."},"sku":{"type":"string","description":"The stock-keeping-unit (SKU) of the product, unique within an app."},"status":{"type":"string"},"subscriptionPeriod":{"type":"string","description":"The period of the subscription (if any), i.e. period at which payments must happen. Defined as ISO 8601 duration, i.e. \"P1M\" for 1 month period."},"trialPeriod":{"type":"string","description":"Trial period, specified in ISO 8601 format. Acceptable values are anything between \"P7D\" (seven days) and \"P999D\" (999 days). Seasonal subscriptions cannot have a trial period."}}},"InAppProductListing":{"id":"InAppProductListing","type":"object","properties":{"description":{"type":"string"},"title":{"type":"string"}}},"InappproductsBatchRequest":{"id":"InappproductsBatchRequest","type":"object","properties":{"entrys":{"type":"array","items":{"$ref":"InappproductsBatchRequestEntry"}}}},"InappproductsBatchRequestEntry":{"id":"InappproductsBatchRequestEntry","type":"object","properties":{"batchId":{"type":"integer","format":"uint32"},"inappproductsinsertrequest":{"$ref":"InappproductsInsertRequest"},"inappproductsupdaterequest":{"$ref":"InappproductsUpdateRequest"},"methodName":{"type":"string"}}},"InappproductsBatchResponse":{"id":"InappproductsBatchResponse","type":"object","properties":{"entrys":{"type":"array","items":{"$ref":"InappproductsBatchResponseEntry"}},"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#inappproductsBatchResponse\".","default":"androidpublisher#inappproductsBatchResponse"}}},"InappproductsBatchResponseEntry":{"id":"InappproductsBatchResponseEntry","type":"object","properties":{"batchId":{"type":"integer","format":"uint32"},"inappproductsinsertresponse":{"$ref":"InappproductsInsertResponse"},"inappproductsupdateresponse":{"$ref":"InappproductsUpdateResponse"}}},"InappproductsInsertRequest":{"id":"InappproductsInsertRequest","type":"object","properties":{"inappproduct":{"$ref":"InAppProduct"}}},"InappproductsInsertResponse":{"id":"InappproductsInsertResponse","type":"object","properties":{"inappproduct":{"$ref":"InAppProduct"}}},"InappproductsListResponse":{"id":"InappproductsListResponse","type":"object","properties":{"inappproduct":{"type":"array","items":{"$ref":"InAppProduct"}},"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#inappproductsListResponse\".","default":"androidpublisher#inappproductsListResponse"},"pageInfo":{"$ref":"PageInfo"},"tokenPagination":{"$ref":"TokenPagination"}}},"InappproductsUpdateRequest":{"id":"InappproductsUpdateRequest","type":"object","properties":{"inappproduct":{"$ref":"InAppProduct"}}},"InappproductsUpdateResponse":{"id":"InappproductsUpdateResponse","type":"object","properties":{"inappproduct":{"$ref":"InAppProduct"}}},"Listing":{"id":"Listing","type":"object","properties":{"fullDescription":{"type":"string","description":"Full description of the app; this may be up to 4000 characters in length."},"language":{"type":"string","description":"Language localization code (for example, \"de-AT\" for Austrian German)."},"shortDescription":{"type":"string","description":"Short description of the app (previously known as promo text); this may be up to 80 characters in length."},"title":{"type":"string","description":"App's localized title."},"video":{"type":"string","description":"URL of a promotional YouTube video for the app."}}},"ListingsListResponse":{"id":"ListingsListResponse","type":"object","properties":{"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#listingsListResponse\".","default":"androidpublisher#listingsListResponse"},"listings":{"type":"array","items":{"$ref":"Listing"}}}},"MonthDay":{"id":"MonthDay","type":"object","properties":{"day":{"type":"integer","description":"Day of a month, value in [1, 31] range. Valid range depends on the specified month.","format":"uint32"},"month":{"type":"integer","description":"Month of a year. e.g. 1 = JAN, 2 = FEB etc.","format":"uint32"}}},"PageInfo":{"id":"PageInfo","type":"object","properties":{"resultPerPage":{"type":"integer","format":"int32"},"startIndex":{"type":"integer","format":"int32"},"totalResults":{"type":"integer","format":"int32"}}},"Price":{"id":"Price","type":"object","properties":{"currency":{"type":"string","description":"3 letter Currency code, as defined by ISO 4217."},"priceMicros":{"type":"string","description":"The price in millionths of the currency base unit represented as a string."}}},"ProductPurchase":{"id":"ProductPurchase","type":"object","description":"A ProductPurchase resource indicates the status of a user's inapp product purchase.","properties":{"consumptionState":{"type":"integer","description":"The consumption state of the inapp product. Possible values are: \n- Yet to be consumed \n- Consumed","format":"int32"},"developerPayload":{"type":"string","description":"A developer-specified string that contains supplemental information about an order."},"kind":{"type":"string","description":"This kind represents an inappPurchase object in the androidpublisher service.","default":"androidpublisher#productPurchase"},"purchaseState":{"type":"integer","description":"The purchase state of the order. Possible values are: \n- Purchased \n- Cancelled","format":"int32"},"purchaseTimeMillis":{"type":"string","description":"The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).","format":"int64"}}},"Season":{"id":"Season","type":"object","properties":{"end":{"$ref":"MonthDay","description":"Inclusive end date of the recurrence period."},"start":{"$ref":"MonthDay","description":"Inclusive start date of the recurrence period."}}},"SubscriptionDeferralInfo":{"id":"SubscriptionDeferralInfo","type":"object","description":"A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry time.","properties":{"desiredExpiryTimeMillis":{"type":"string","description":"The desired next expiry time for the subscription in milliseconds since Epoch. The given time must be after the current expiry time for the subscription.","format":"int64"},"expectedExpiryTimeMillis":{"type":"string","description":"The expected expiry time for the subscription. If the current expiry time for the subscription is not the value specified here, the deferral will not occur.","format":"int64"}}},"SubscriptionPurchase":{"id":"SubscriptionPurchase","type":"object","description":"A SubscriptionPurchase resource indicates the status of a user's subscription purchase.","properties":{"autoRenewing":{"type":"boolean","description":"Whether the subscription will automatically be renewed when it reaches its current expiry time."},"expiryTimeMillis":{"type":"string","description":"Time at which the subscription will expire, in milliseconds since Epoch.","format":"int64"},"kind":{"type":"string","description":"This kind represents a subscriptionPurchase object in the androidpublisher service.","default":"androidpublisher#subscriptionPurchase"},"startTimeMillis":{"type":"string","description":"Time at which the subscription was granted, in milliseconds since Epoch.","format":"int64"}}},"SubscriptionPurchasesDeferRequest":{"id":"SubscriptionPurchasesDeferRequest","type":"object","properties":{"deferralInfo":{"$ref":"SubscriptionDeferralInfo","description":"The information about the new desired expiry time for the subscription."}}},"SubscriptionPurchasesDeferResponse":{"id":"SubscriptionPurchasesDeferResponse","type":"object","properties":{"newExpiryTimeMillis":{"type":"string","description":"The new expiry time for the subscription in milliseconds since the Epoch.","format":"int64"}}},"Testers":{"id":"Testers","type":"object","properties":{"googleGroups":{"type":"array","items":{"type":"string"}},"googlePlusCommunities":{"type":"array","items":{"type":"string"}}}},"TokenPagination":{"id":"TokenPagination","type":"object","properties":{"nextPageToken":{"type":"string"},"previousPageToken":{"type":"string"}}},"Track":{"id":"Track","type":"object","properties":{"track":{"type":"string"},"userFraction":{"type":"number","format":"double"},"versionCodes":{"type":"array","items":{"type":"integer","format":"int32"}}}},"TracksListResponse":{"id":"TracksListResponse","type":"object","properties":{"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#tracksListResponse\".","default":"androidpublisher#tracksListResponse"},"tracks":{"type":"array","items":{"$ref":"Track"}}}}},"resources":{"edits":{"methods":{"commit":{"id":"androidpublisher.edits.commit","path":"{packageName}/edits/{editId}:commit","httpMethod":"POST","description":"Commits/applies the changes made in this edit back to the app.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"AppEdit"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"delete":{"id":"androidpublisher.edits.delete","path":"{packageName}/edits/{editId}","httpMethod":"DELETE","description":"Deletes an edit for an app. Creating a new edit will automatically delete any of your previous edits so this method need only be called if you want to preemptively abandon an edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.edits.get","path":"{packageName}/edits/{editId}","httpMethod":"GET","description":"Returns information about the edit specified. Calls will fail if the edit is no long active (e.g. has been deleted, superseded or expired).","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"AppEdit"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"insert":{"id":"androidpublisher.edits.insert","path":"{packageName}/edits","httpMethod":"POST","description":"Creates a new edit for an app, populated with the app's current state.","parameters":{"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName"],"request":{"$ref":"AppEdit"},"response":{"$ref":"AppEdit"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"validate":{"id":"androidpublisher.edits.validate","path":"{packageName}/edits/{editId}:validate","httpMethod":"POST","description":"Checks that the edit can be successfully committed. The edit's changes are not applied to the live app.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"AppEdit"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}},"resources":{"apklistings":{"methods":{"delete":{"id":"androidpublisher.edits.apklistings.delete","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}","httpMethod":"DELETE","description":"Deletes the APK-specific localized listing for a specified APK and language code.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","language"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"deleteall":{"id":"androidpublisher.edits.apklistings.deleteall","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings","httpMethod":"DELETE","description":"Deletes all the APK-specific localized listings for a specified APK.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.edits.apklistings.get","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}","httpMethod":"GET","description":"Fetches the APK-specific localized listing for a specified APK and language code.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","language"],"response":{"$ref":"ApkListing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.edits.apklistings.list","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings","httpMethod":"GET","description":"Lists all the APK-specific localized listings for a specified APK.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode"],"response":{"$ref":"ApkListingsListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.apklistings.patch","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}","httpMethod":"PATCH","description":"Updates or creates the APK-specific localized listing for a specified APK and language code. This method supports patch semantics.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","language"],"request":{"$ref":"ApkListing"},"response":{"$ref":"ApkListing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.apklistings.update","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}","httpMethod":"PUT","description":"Updates or creates the APK-specific localized listing for a specified APK and language code.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","language"],"request":{"$ref":"ApkListing"},"response":{"$ref":"ApkListing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"apks":{"methods":{"list":{"id":"androidpublisher.edits.apks.list","path":"{packageName}/edits/{editId}/apks","httpMethod":"GET","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"ApksListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"upload":{"id":"androidpublisher.edits.apks.upload","path":"{packageName}/edits/{editId}/apks","httpMethod":"POST","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"Apk"},"scopes":["https://www.googleapis.com/auth/androidpublisher"],"supportsMediaUpload":true,"mediaUpload":{"accept":["application/octet-stream","application/vnd.android.package-archive"],"maxSize":"1GB","protocols":{"simple":{"multipart":true,"path":"/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks"},"resumable":{"multipart":true,"path":"/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks"}}}}}},"details":{"methods":{"get":{"id":"androidpublisher.edits.details.get","path":"{packageName}/edits/{editId}/details","httpMethod":"GET","description":"Fetches app details for this edit. This includes the default language and developer support contact information.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"AppDetails"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.details.patch","path":"{packageName}/edits/{editId}/details","httpMethod":"PATCH","description":"Updates app details for this edit. This method supports patch semantics.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"request":{"$ref":"AppDetails"},"response":{"$ref":"AppDetails"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.details.update","path":"{packageName}/edits/{editId}/details","httpMethod":"PUT","description":"Updates app details for this edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"request":{"$ref":"AppDetails"},"response":{"$ref":"AppDetails"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"expansionfiles":{"methods":{"get":{"id":"androidpublisher.edits.expansionfiles.get","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}","httpMethod":"GET","description":"Fetches the Expansion File configuration for the APK specified.","parameters":{"apkVersionCode":{"type":"integer","description":"The version code of the APK whose Expansion File configuration is being read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"expansionFileType":{"type":"string","required":true,"enum":["main","patch"],"enumDescriptions":["",""],"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","expansionFileType"],"response":{"$ref":"ExpansionFile"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.expansionfiles.patch","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}","httpMethod":"PATCH","description":"Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To add a new Expansion File use the Upload method. This method supports patch semantics.","parameters":{"apkVersionCode":{"type":"integer","description":"The version code of the APK whose Expansion File configuration is being read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"expansionFileType":{"type":"string","required":true,"enum":["main","patch"],"enumDescriptions":["",""],"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","expansionFileType"],"request":{"$ref":"ExpansionFile"},"response":{"$ref":"ExpansionFile"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.expansionfiles.update","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}","httpMethod":"PUT","description":"Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To add a new Expansion File use the Upload method.","parameters":{"apkVersionCode":{"type":"integer","description":"The version code of the APK whose Expansion File configuration is being read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"expansionFileType":{"type":"string","required":true,"enum":["main","patch"],"enumDescriptions":["",""],"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","expansionFileType"],"request":{"$ref":"ExpansionFile"},"response":{"$ref":"ExpansionFile"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"upload":{"id":"androidpublisher.edits.expansionfiles.upload","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}","httpMethod":"POST","description":"Uploads and attaches a new Expansion File to the APK specified.","parameters":{"apkVersionCode":{"type":"integer","description":"The version code of the APK whose Expansion File configuration is being read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"expansionFileType":{"type":"string","required":true,"enum":["main","patch"],"enumDescriptions":["",""],"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","expansionFileType"],"response":{"$ref":"ExpansionFilesUploadResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"],"supportsMediaUpload":true,"mediaUpload":{"accept":["application/octet-stream"],"maxSize":"2048MB","protocols":{"simple":{"multipart":true,"path":"/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"},"resumable":{"multipart":true,"path":"/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"}}}}}},"images":{"methods":{"delete":{"id":"androidpublisher.edits.images.delete","path":"{packageName}/edits/{editId}/listings/{language}/{imageType}/{imageId}","httpMethod":"DELETE","description":"Deletes the image (specified by id) from the edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"imageId":{"type":"string","description":"Unique identifier an image within the set of images attached to this edit.","required":true,"location":"path"},"imageType":{"type":"string","required":true,"enum":["featureGraphic","icon","phoneScreenshots","promoGraphic","sevenInchScreenshots","tenInchScreenshots","tvBanner","tvScreenshots"],"enumDescriptions":["","","","","","","",""],"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language","imageType","imageId"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"deleteall":{"id":"androidpublisher.edits.images.deleteall","path":"{packageName}/edits/{editId}/listings/{language}/{imageType}","httpMethod":"DELETE","description":"Deletes all images for the specified language and image type.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"imageType":{"type":"string","required":true,"enum":["featureGraphic","icon","phoneScreenshots","promoGraphic","sevenInchScreenshots","tenInchScreenshots","tvBanner","tvScreenshots"],"enumDescriptions":["","","","","","","",""],"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language","imageType"],"response":{"$ref":"ImagesDeleteAllResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.edits.images.list","path":"{packageName}/edits/{editId}/listings/{language}/{imageType}","httpMethod":"GET","description":"Lists all images for the specified language and image type.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"imageType":{"type":"string","required":true,"enum":["featureGraphic","icon","phoneScreenshots","promoGraphic","sevenInchScreenshots","tenInchScreenshots","tvBanner","tvScreenshots"],"enumDescriptions":["","","","","","","",""],"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language","imageType"],"response":{"$ref":"ImagesListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"upload":{"id":"androidpublisher.edits.images.upload","path":"{packageName}/edits/{editId}/listings/{language}/{imageType}","httpMethod":"POST","description":"Uploads a new image and adds it to the list of images for the specified language and image type.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"imageType":{"type":"string","required":true,"enum":["featureGraphic","icon","phoneScreenshots","promoGraphic","sevenInchScreenshots","tenInchScreenshots","tvBanner","tvScreenshots"],"enumDescriptions":["","","","","","","",""],"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language","imageType"],"response":{"$ref":"ImagesUploadResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"],"supportsMediaUpload":true,"mediaUpload":{"accept":["image/*"],"maxSize":"15MB","protocols":{"simple":{"multipart":true,"path":"/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}"},"resumable":{"multipart":true,"path":"/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}"}}}}}},"listings":{"methods":{"delete":{"id":"androidpublisher.edits.listings.delete","path":"{packageName}/edits/{editId}/listings/{language}","httpMethod":"DELETE","description":"Deletes the specified localized store listing from an edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"deleteall":{"id":"androidpublisher.edits.listings.deleteall","path":"{packageName}/edits/{editId}/listings","httpMethod":"DELETE","description":"Deletes all localized listings from an edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.edits.listings.get","path":"{packageName}/edits/{editId}/listings/{language}","httpMethod":"GET","description":"Fetches information about a localized store listing.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language"],"response":{"$ref":"Listing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.edits.listings.list","path":"{packageName}/edits/{editId}/listings","httpMethod":"GET","description":"Returns all of the localized store listings attached to this edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"ListingsListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.listings.patch","path":"{packageName}/edits/{editId}/listings/{language}","httpMethod":"PATCH","description":"Creates or updates a localized store listing. This method supports patch semantics.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language"],"request":{"$ref":"Listing"},"response":{"$ref":"Listing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.listings.update","path":"{packageName}/edits/{editId}/listings/{language}","httpMethod":"PUT","description":"Creates or updates a localized store listing.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language"],"request":{"$ref":"Listing"},"response":{"$ref":"Listing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"testers":{"methods":{"get":{"id":"androidpublisher.edits.testers.get","path":"{packageName}/edits/{editId}/testers/{track}","httpMethod":"GET","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"response":{"$ref":"Testers"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.testers.patch","path":"{packageName}/edits/{editId}/testers/{track}","httpMethod":"PATCH","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"request":{"$ref":"Testers"},"response":{"$ref":"Testers"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.testers.update","path":"{packageName}/edits/{editId}/testers/{track}","httpMethod":"PUT","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"request":{"$ref":"Testers"},"response":{"$ref":"Testers"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"tracks":{"methods":{"get":{"id":"androidpublisher.edits.tracks.get","path":"{packageName}/edits/{editId}/tracks/{track}","httpMethod":"GET","description":"Fetches the track configuration for the specified track type. Includes the APK version codes that are in this track.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","description":"The track type to read or modify.","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"response":{"$ref":"Track"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.edits.tracks.list","path":"{packageName}/edits/{editId}/tracks","httpMethod":"GET","description":"Lists all the track configurations for this edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"TracksListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.tracks.patch","path":"{packageName}/edits/{editId}/tracks/{track}","httpMethod":"PATCH","description":"Updates the track configuration for the specified track type. This method supports patch semantics.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","description":"The track type to read or modify.","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"request":{"$ref":"Track"},"response":{"$ref":"Track"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.tracks.update","path":"{packageName}/edits/{editId}/tracks/{track}","httpMethod":"PUT","description":"Updates the track configuration for the specified track type.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","description":"The track type to read or modify.","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"request":{"$ref":"Track"},"response":{"$ref":"Track"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}}}},"inappproducts":{"methods":{"batch":{"id":"androidpublisher.inappproducts.batch","path":"inappproducts/batch","httpMethod":"POST","request":{"$ref":"InappproductsBatchRequest"},"response":{"$ref":"InappproductsBatchResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"delete":{"id":"androidpublisher.inappproducts.delete","path":"{packageName}/inappproducts/{sku}","httpMethod":"DELETE","description":"Delete an in-app product for an app.","parameters":{"packageName":{"type":"string","description":"Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".","required":true,"location":"path"},"sku":{"type":"string","description":"Unique identifier for the in-app product.","required":true,"location":"path"}},"parameterOrder":["packageName","sku"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.inappproducts.get","path":"{packageName}/inappproducts/{sku}","httpMethod":"GET","description":"Returns information about the in-app product specified.","parameters":{"packageName":{"type":"string","required":true,"location":"path"},"sku":{"type":"string","description":"Unique identifier for the in-app product.","required":true,"location":"path"}},"parameterOrder":["packageName","sku"],"response":{"$ref":"InAppProduct"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"insert":{"id":"androidpublisher.inappproducts.insert","path":"{packageName}/inappproducts","httpMethod":"POST","description":"Creates a new in-app product for an app.","parameters":{"autoConvertMissingPrices":{"type":"boolean","description":"If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.","location":"query"},"packageName":{"type":"string","description":"Unique identifier for the Android app; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName"],"request":{"$ref":"InAppProduct"},"response":{"$ref":"InAppProduct"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.inappproducts.list","path":"{packageName}/inappproducts","httpMethod":"GET","description":"List all the in-app products for an Android app, both subscriptions and managed in-app products..","parameters":{"maxResults":{"type":"integer","format":"uint32","location":"query"},"packageName":{"type":"string","description":"Unique identifier for the Android app with in-app products; for example, \"com.spiffygame\".","required":true,"location":"path"},"startIndex":{"type":"integer","format":"uint32","location":"query"},"token":{"type":"string","location":"query"}},"parameterOrder":["packageName"],"response":{"$ref":"InappproductsListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.inappproducts.patch","path":"{packageName}/inappproducts/{sku}","httpMethod":"PATCH","description":"Updates the details of an in-app product. This method supports patch semantics.","parameters":{"autoConvertMissingPrices":{"type":"boolean","description":"If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.","location":"query"},"packageName":{"type":"string","description":"Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".","required":true,"location":"path"},"sku":{"type":"string","description":"Unique identifier for the in-app product.","required":true,"location":"path"}},"parameterOrder":["packageName","sku"],"request":{"$ref":"InAppProduct"},"response":{"$ref":"InAppProduct"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.inappproducts.update","path":"{packageName}/inappproducts/{sku}","httpMethod":"PUT","description":"Updates the details of an in-app product.","parameters":{"autoConvertMissingPrices":{"type":"boolean","description":"If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.","location":"query"},"packageName":{"type":"string","description":"Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".","required":true,"location":"path"},"sku":{"type":"string","description":"Unique identifier for the in-app product.","required":true,"location":"path"}},"parameterOrder":["packageName","sku"],"request":{"$ref":"InAppProduct"},"response":{"$ref":"InAppProduct"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"purchases":{"resources":{"products":{"methods":{"get":{"id":"androidpublisher.purchases.products.get","path":"{packageName}/purchases/products/{productId}/tokens/{token}","httpMethod":"GET","description":"Checks the purchase and consumption status of an inapp item.","parameters":{"packageName":{"type":"string","description":"The package name of the application the inapp product was sold in (for example, 'com.some.thing').","required":true,"location":"path"},"productId":{"type":"string","description":"The inapp product SKU (for example, 'com.some.thing.inapp1').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the inapp product was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","productId","token"],"response":{"$ref":"ProductPurchase"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"subscriptions":{"methods":{"cancel":{"id":"androidpublisher.purchases.subscriptions.cancel","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel","httpMethod":"POST","description":"Cancels a user's subscription purchase. The subscription remains valid until its expiration time.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"defer":{"id":"androidpublisher.purchases.subscriptions.defer","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:defer","httpMethod":"POST","description":"Defers a user's subscription purchase until a specified future expiration time.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"request":{"$ref":"SubscriptionPurchasesDeferRequest"},"response":{"$ref":"SubscriptionPurchasesDeferResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.purchases.subscriptions.get","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}","httpMethod":"GET","description":"Checks whether a user's subscription purchase is valid and returns its expiry time.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"response":{"$ref":"SubscriptionPurchase"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"refund":{"id":"androidpublisher.purchases.subscriptions.refund","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:refund","httpMethod":"POST","description":"Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"revoke":{"id":"androidpublisher.purchases.subscriptions.revoke","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:revoke","httpMethod":"POST","description":"Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}}}}}}]:ET
@@ -0,0 +1 @@
1
+ Iu:Google::APIClient::API}�["https://www.googleapis.com/discovery/v1/apis/androidpublisher/v2/rest",{"kind":"discovery#restDescription","etag":"\"ye6orv2F-1npMW3u9suM3a7C5Bo/xy4W57xFkYdtUdm4rpPIU-7grtg\"","discoveryVersion":"v1","id":"androidpublisher:v2","name":"androidpublisher","canonicalName":"Android Publisher","version":"v2","revision":"20141117","title":"Google Play Android Developer API","description":"Lets Android application developers access their Google Play accounts.","ownerDomain":"google.com","ownerName":"Google","icons":{"x16":"https://www.google.com/images/icons/product/android-16.png","x32":"https://www.google.com/images/icons/product/android-32.png"},"documentationLink":"https://developers.google.com/android-publisher","protocol":"rest","baseUrl":"https://www.googleapis.com/androidpublisher/v2/applications/","basePath":"/androidpublisher/v2/applications/","rootUrl":"https://www.googleapis.com/","servicePath":"androidpublisher/v2/applications/","batchPath":"batch","parameters":{"alt":{"type":"string","description":"Data format for the response.","default":"json","enum":["json"],"enumDescriptions":["Responses with Content-Type of application/json"],"location":"query"},"fields":{"type":"string","description":"Selector specifying which fields to include in a partial response.","location":"query"},"key":{"type":"string","description":"API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.","location":"query"},"oauth_token":{"type":"string","description":"OAuth 2.0 token for the current user.","location":"query"},"prettyPrint":{"type":"boolean","description":"Returns response with indentations and line breaks.","default":"true","location":"query"},"quotaUser":{"type":"string","description":"Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.","location":"query"},"userIp":{"type":"string","description":"IP address of the site where the request originates. Use this if you want to enforce per-user limits.","location":"query"}},"auth":{"oauth2":{"scopes":{"https://www.googleapis.com/auth/androidpublisher":{"description":"View and manage your Google Play Android Developer account"}}}},"schemas":{"Apk":{"id":"Apk","type":"object","properties":{"binary":{"$ref":"ApkBinary","description":"Information about the binary payload of this APK."},"versionCode":{"type":"integer","description":"The version code of the APK, as specified in the APK's manifest file.","format":"int32"}}},"ApkBinary":{"id":"ApkBinary","type":"object","description":"Represents the binary payload of an APK.","properties":{"sha1":{"type":"string","description":"A sha1 hash of the APK payload, encoded as a hex string and matching the output of the sha1sum command."}}},"ApkListing":{"id":"ApkListing","type":"object","properties":{"language":{"type":"string","description":"The language code, in BCP 47 format (eg \"en-US\")."},"recentChanges":{"type":"string","description":"Describe what's new in your APK."}}},"ApkListingsListResponse":{"id":"ApkListingsListResponse","type":"object","properties":{"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#apkListingsListResponse\".","default":"androidpublisher#apkListingsListResponse"},"listings":{"type":"array","items":{"$ref":"ApkListing"}}}},"ApksListResponse":{"id":"ApksListResponse","type":"object","properties":{"apks":{"type":"array","items":{"$ref":"Apk"}},"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#apksListResponse\".","default":"androidpublisher#apksListResponse"}}},"AppDetails":{"id":"AppDetails","type":"object","properties":{"contactEmail":{"type":"string","description":"The user-visible support email for this app."},"contactPhone":{"type":"string","description":"The user-visible support telephone number for this app."},"contactWebsite":{"type":"string","description":"The user-visible website for this app."},"defaultLanguage":{"type":"string","description":"Default language code, in BCP 47 format (eg \"en-US\")."}}},"AppEdit":{"id":"AppEdit","type":"object","description":"Represents an edit of an app. An edit allows clients to make multiple changes before committing them in one operation.","properties":{"expiryTimeSeconds":{"type":"string","description":"The time at which the edit will expire and will be no longer valid for use in any subsequent API calls (encoded as seconds since the Epoch)."},"id":{"type":"string","description":"The ID of the edit that can be used in subsequent API calls."}}},"ExpansionFile":{"id":"ExpansionFile","type":"object","properties":{"fileSize":{"type":"string","description":"If set this field indicates that this APK has an Expansion File uploaded to it: this APK does not reference another APK's Expansion File. The field's value is the size of the uploaded Expansion File in bytes.","format":"int64"},"referencesVersion":{"type":"integer","description":"If set this APK's Expansion File references another APK's Expansion File. The file_size field will not be set.","format":"int32"}}},"ExpansionFilesUploadResponse":{"id":"ExpansionFilesUploadResponse","type":"object","properties":{"expansionFile":{"$ref":"ExpansionFile"}}},"Image":{"id":"Image","type":"object","properties":{"id":{"type":"string","description":"A unique id representing this image."},"sha1":{"type":"string","description":"A sha1 hash of the image that was uploaded."},"url":{"type":"string","description":"A URL that will serve a preview of the image."}}},"ImagesDeleteAllResponse":{"id":"ImagesDeleteAllResponse","type":"object","properties":{"deleted":{"type":"array","items":{"$ref":"Image"}}}},"ImagesListResponse":{"id":"ImagesListResponse","type":"object","properties":{"images":{"type":"array","items":{"$ref":"Image"}}}},"ImagesUploadResponse":{"id":"ImagesUploadResponse","type":"object","properties":{"image":{"$ref":"Image"}}},"InAppProduct":{"id":"InAppProduct","type":"object","properties":{"defaultLanguage":{"type":"string","description":"The default language of the localized data, as defined by BCP 47. e.g. \"en-US\", \"en-GB\"."},"defaultPrice":{"$ref":"Price","description":"Default price cannot be zero. In-app products can never be free. Default price is always in the developer's Checkout merchant currency."},"listings":{"type":"object","description":"List of localized title and description data.","additionalProperties":{"$ref":"InAppProductListing","description":"The language of the localized data, as defined by BCP 47. i.e.: \"en-US\", \"en-GB\"."}},"packageName":{"type":"string","description":"The package name of the parent app."},"prices":{"type":"object","description":"Prices per buyer region. None of these prices should be zero. In-app products can never be free.","additionalProperties":{"$ref":"Price","description":"Region code, as defined by ISO 3166-2."}},"purchaseType":{"type":"string","description":"Purchase type enum value. Unmodifiable after creation."},"season":{"$ref":"Season","description":"Definition of a season for a seasonal subscription. Can be defined only for yearly subscriptions."},"sku":{"type":"string","description":"The stock-keeping-unit (SKU) of the product, unique within an app."},"status":{"type":"string"},"subscriptionPeriod":{"type":"string","description":"The period of the subscription (if any), i.e. period at which payments must happen. Defined as ISO 8601 duration, i.e. \"P1M\" for 1 month period."},"trialPeriod":{"type":"string","description":"Trial period, specified in ISO 8601 format. Acceptable values are anything between \"P7D\" (seven days) and \"P999D\" (999 days). Seasonal subscriptions cannot have a trial period."}}},"InAppProductListing":{"id":"InAppProductListing","type":"object","properties":{"description":{"type":"string"},"title":{"type":"string"}}},"InappproductsBatchRequest":{"id":"InappproductsBatchRequest","type":"object","properties":{"entrys":{"type":"array","items":{"$ref":"InappproductsBatchRequestEntry"}}}},"InappproductsBatchRequestEntry":{"id":"InappproductsBatchRequestEntry","type":"object","properties":{"batchId":{"type":"integer","format":"uint32"},"inappproductsinsertrequest":{"$ref":"InappproductsInsertRequest"},"inappproductsupdaterequest":{"$ref":"InappproductsUpdateRequest"},"methodName":{"type":"string"}}},"InappproductsBatchResponse":{"id":"InappproductsBatchResponse","type":"object","properties":{"entrys":{"type":"array","items":{"$ref":"InappproductsBatchResponseEntry"}},"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#inappproductsBatchResponse\".","default":"androidpublisher#inappproductsBatchResponse"}}},"InappproductsBatchResponseEntry":{"id":"InappproductsBatchResponseEntry","type":"object","properties":{"batchId":{"type":"integer","format":"uint32"},"inappproductsinsertresponse":{"$ref":"InappproductsInsertResponse"},"inappproductsupdateresponse":{"$ref":"InappproductsUpdateResponse"}}},"InappproductsInsertRequest":{"id":"InappproductsInsertRequest","type":"object","properties":{"inappproduct":{"$ref":"InAppProduct"}}},"InappproductsInsertResponse":{"id":"InappproductsInsertResponse","type":"object","properties":{"inappproduct":{"$ref":"InAppProduct"}}},"InappproductsListResponse":{"id":"InappproductsListResponse","type":"object","properties":{"inappproduct":{"type":"array","items":{"$ref":"InAppProduct"}},"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#inappproductsListResponse\".","default":"androidpublisher#inappproductsListResponse"},"pageInfo":{"$ref":"PageInfo"},"tokenPagination":{"$ref":"TokenPagination"}}},"InappproductsUpdateRequest":{"id":"InappproductsUpdateRequest","type":"object","properties":{"inappproduct":{"$ref":"InAppProduct"}}},"InappproductsUpdateResponse":{"id":"InappproductsUpdateResponse","type":"object","properties":{"inappproduct":{"$ref":"InAppProduct"}}},"Listing":{"id":"Listing","type":"object","properties":{"fullDescription":{"type":"string","description":"Full description of the app; this may be up to 4000 characters in length."},"language":{"type":"string","description":"Language localization code (for example, \"de-AT\" for Austrian German)."},"shortDescription":{"type":"string","description":"Short description of the app (previously known as promo text); this may be up to 80 characters in length."},"title":{"type":"string","description":"App's localized title."},"video":{"type":"string","description":"URL of a promotional YouTube video for the app."}}},"ListingsListResponse":{"id":"ListingsListResponse","type":"object","properties":{"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#listingsListResponse\".","default":"androidpublisher#listingsListResponse"},"listings":{"type":"array","items":{"$ref":"Listing"}}}},"MonthDay":{"id":"MonthDay","type":"object","properties":{"day":{"type":"integer","description":"Day of a month, value in [1, 31] range. Valid range depends on the specified month.","format":"uint32"},"month":{"type":"integer","description":"Month of a year. e.g. 1 = JAN, 2 = FEB etc.","format":"uint32"}}},"PageInfo":{"id":"PageInfo","type":"object","properties":{"resultPerPage":{"type":"integer","format":"int32"},"startIndex":{"type":"integer","format":"int32"},"totalResults":{"type":"integer","format":"int32"}}},"Price":{"id":"Price","type":"object","properties":{"currency":{"type":"string","description":"3 letter Currency code, as defined by ISO 4217."},"priceMicros":{"type":"string","description":"The price in millionths of the currency base unit represented as a string."}}},"ProductPurchase":{"id":"ProductPurchase","type":"object","description":"A ProductPurchase resource indicates the status of a user's inapp product purchase.","properties":{"consumptionState":{"type":"integer","description":"The consumption state of the inapp product. Possible values are: \n- Yet to be consumed \n- Consumed","format":"int32"},"developerPayload":{"type":"string","description":"A developer-specified string that contains supplemental information about an order."},"kind":{"type":"string","description":"This kind represents an inappPurchase object in the androidpublisher service.","default":"androidpublisher#productPurchase"},"purchaseState":{"type":"integer","description":"The purchase state of the order. Possible values are: \n- Purchased \n- Cancelled","format":"int32"},"purchaseTimeMillis":{"type":"string","description":"The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).","format":"int64"}}},"Season":{"id":"Season","type":"object","properties":{"end":{"$ref":"MonthDay","description":"Inclusive end date of the recurrence period."},"start":{"$ref":"MonthDay","description":"Inclusive start date of the recurrence period."}}},"SubscriptionDeferralInfo":{"id":"SubscriptionDeferralInfo","type":"object","description":"A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry time.","properties":{"desiredExpiryTimeMillis":{"type":"string","description":"The desired next expiry time for the subscription in milliseconds since Epoch. The given time must be after the current expiry time for the subscription.","format":"int64"},"expectedExpiryTimeMillis":{"type":"string","description":"The expected expiry time for the subscription. If the current expiry time for the subscription is not the value specified here, the deferral will not occur.","format":"int64"}}},"SubscriptionPurchase":{"id":"SubscriptionPurchase","type":"object","description":"A SubscriptionPurchase resource indicates the status of a user's subscription purchase.","properties":{"autoRenewing":{"type":"boolean","description":"Whether the subscription will automatically be renewed when it reaches its current expiry time."},"expiryTimeMillis":{"type":"string","description":"Time at which the subscription will expire, in milliseconds since Epoch.","format":"int64"},"kind":{"type":"string","description":"This kind represents a subscriptionPurchase object in the androidpublisher service.","default":"androidpublisher#subscriptionPurchase"},"startTimeMillis":{"type":"string","description":"Time at which the subscription was granted, in milliseconds since Epoch.","format":"int64"}}},"SubscriptionPurchasesDeferRequest":{"id":"SubscriptionPurchasesDeferRequest","type":"object","properties":{"deferralInfo":{"$ref":"SubscriptionDeferralInfo","description":"The information about the new desired expiry time for the subscription."}}},"SubscriptionPurchasesDeferResponse":{"id":"SubscriptionPurchasesDeferResponse","type":"object","properties":{"newExpiryTimeMillis":{"type":"string","description":"The new expiry time for the subscription in milliseconds since the Epoch.","format":"int64"}}},"Testers":{"id":"Testers","type":"object","properties":{"googleGroups":{"type":"array","items":{"type":"string"}},"googlePlusCommunities":{"type":"array","items":{"type":"string"}}}},"TokenPagination":{"id":"TokenPagination","type":"object","properties":{"nextPageToken":{"type":"string"},"previousPageToken":{"type":"string"}}},"Track":{"id":"Track","type":"object","properties":{"track":{"type":"string"},"userFraction":{"type":"number","format":"double"},"versionCodes":{"type":"array","items":{"type":"integer","format":"int32"}}}},"TracksListResponse":{"id":"TracksListResponse","type":"object","properties":{"kind":{"type":"string","description":"Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#tracksListResponse\".","default":"androidpublisher#tracksListResponse"},"tracks":{"type":"array","items":{"$ref":"Track"}}}}},"resources":{"edits":{"methods":{"commit":{"id":"androidpublisher.edits.commit","path":"{packageName}/edits/{editId}:commit","httpMethod":"POST","description":"Commits/applies the changes made in this edit back to the app.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"AppEdit"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"delete":{"id":"androidpublisher.edits.delete","path":"{packageName}/edits/{editId}","httpMethod":"DELETE","description":"Deletes an edit for an app. Creating a new edit will automatically delete any of your previous edits so this method need only be called if you want to preemptively abandon an edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.edits.get","path":"{packageName}/edits/{editId}","httpMethod":"GET","description":"Returns information about the edit specified. Calls will fail if the edit is no long active (e.g. has been deleted, superseded or expired).","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"AppEdit"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"insert":{"id":"androidpublisher.edits.insert","path":"{packageName}/edits","httpMethod":"POST","description":"Creates a new edit for an app, populated with the app's current state.","parameters":{"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName"],"request":{"$ref":"AppEdit"},"response":{"$ref":"AppEdit"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"validate":{"id":"androidpublisher.edits.validate","path":"{packageName}/edits/{editId}:validate","httpMethod":"POST","description":"Checks that the edit can be successfully committed. The edit's changes are not applied to the live app.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"AppEdit"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}},"resources":{"apklistings":{"methods":{"delete":{"id":"androidpublisher.edits.apklistings.delete","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}","httpMethod":"DELETE","description":"Deletes the APK-specific localized listing for a specified APK and language code.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","language"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"deleteall":{"id":"androidpublisher.edits.apklistings.deleteall","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings","httpMethod":"DELETE","description":"Deletes all the APK-specific localized listings for a specified APK.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.edits.apklistings.get","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}","httpMethod":"GET","description":"Fetches the APK-specific localized listing for a specified APK and language code.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","language"],"response":{"$ref":"ApkListing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.edits.apklistings.list","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings","httpMethod":"GET","description":"Lists all the APK-specific localized listings for a specified APK.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode"],"response":{"$ref":"ApkListingsListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.apklistings.patch","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}","httpMethod":"PATCH","description":"Updates or creates the APK-specific localized listing for a specified APK and language code. This method supports patch semantics.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","language"],"request":{"$ref":"ApkListing"},"response":{"$ref":"ApkListing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.apklistings.update","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}","httpMethod":"PUT","description":"Updates or creates the APK-specific localized listing for a specified APK and language code.","parameters":{"apkVersionCode":{"type":"integer","description":"The APK version code whose APK-specific listings should be read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","language"],"request":{"$ref":"ApkListing"},"response":{"$ref":"ApkListing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"apks":{"methods":{"list":{"id":"androidpublisher.edits.apks.list","path":"{packageName}/edits/{editId}/apks","httpMethod":"GET","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"ApksListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"upload":{"id":"androidpublisher.edits.apks.upload","path":"{packageName}/edits/{editId}/apks","httpMethod":"POST","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"Apk"},"scopes":["https://www.googleapis.com/auth/androidpublisher"],"supportsMediaUpload":true,"mediaUpload":{"accept":["application/octet-stream","application/vnd.android.package-archive"],"maxSize":"1GB","protocols":{"simple":{"multipart":true,"path":"/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks"},"resumable":{"multipart":true,"path":"/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks"}}}}}},"details":{"methods":{"get":{"id":"androidpublisher.edits.details.get","path":"{packageName}/edits/{editId}/details","httpMethod":"GET","description":"Fetches app details for this edit. This includes the default language and developer support contact information.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"AppDetails"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.details.patch","path":"{packageName}/edits/{editId}/details","httpMethod":"PATCH","description":"Updates app details for this edit. This method supports patch semantics.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"request":{"$ref":"AppDetails"},"response":{"$ref":"AppDetails"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.details.update","path":"{packageName}/edits/{editId}/details","httpMethod":"PUT","description":"Updates app details for this edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"request":{"$ref":"AppDetails"},"response":{"$ref":"AppDetails"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"expansionfiles":{"methods":{"get":{"id":"androidpublisher.edits.expansionfiles.get","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}","httpMethod":"GET","description":"Fetches the Expansion File configuration for the APK specified.","parameters":{"apkVersionCode":{"type":"integer","description":"The version code of the APK whose Expansion File configuration is being read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"expansionFileType":{"type":"string","required":true,"enum":["main","patch"],"enumDescriptions":["",""],"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","expansionFileType"],"response":{"$ref":"ExpansionFile"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.expansionfiles.patch","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}","httpMethod":"PATCH","description":"Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To add a new Expansion File use the Upload method. This method supports patch semantics.","parameters":{"apkVersionCode":{"type":"integer","description":"The version code of the APK whose Expansion File configuration is being read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"expansionFileType":{"type":"string","required":true,"enum":["main","patch"],"enumDescriptions":["",""],"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","expansionFileType"],"request":{"$ref":"ExpansionFile"},"response":{"$ref":"ExpansionFile"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.expansionfiles.update","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}","httpMethod":"PUT","description":"Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To add a new Expansion File use the Upload method.","parameters":{"apkVersionCode":{"type":"integer","description":"The version code of the APK whose Expansion File configuration is being read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"expansionFileType":{"type":"string","required":true,"enum":["main","patch"],"enumDescriptions":["",""],"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","expansionFileType"],"request":{"$ref":"ExpansionFile"},"response":{"$ref":"ExpansionFile"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"upload":{"id":"androidpublisher.edits.expansionfiles.upload","path":"{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}","httpMethod":"POST","description":"Uploads and attaches a new Expansion File to the APK specified.","parameters":{"apkVersionCode":{"type":"integer","description":"The version code of the APK whose Expansion File configuration is being read or modified.","required":true,"format":"int32","location":"path"},"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"expansionFileType":{"type":"string","required":true,"enum":["main","patch"],"enumDescriptions":["",""],"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","apkVersionCode","expansionFileType"],"response":{"$ref":"ExpansionFilesUploadResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"],"supportsMediaUpload":true,"mediaUpload":{"accept":["application/octet-stream"],"maxSize":"2048MB","protocols":{"simple":{"multipart":true,"path":"/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"},"resumable":{"multipart":true,"path":"/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"}}}}}},"images":{"methods":{"delete":{"id":"androidpublisher.edits.images.delete","path":"{packageName}/edits/{editId}/listings/{language}/{imageType}/{imageId}","httpMethod":"DELETE","description":"Deletes the image (specified by id) from the edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"imageId":{"type":"string","description":"Unique identifier an image within the set of images attached to this edit.","required":true,"location":"path"},"imageType":{"type":"string","required":true,"enum":["featureGraphic","icon","phoneScreenshots","promoGraphic","sevenInchScreenshots","tenInchScreenshots","tvBanner","tvScreenshots"],"enumDescriptions":["","","","","","","",""],"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language","imageType","imageId"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"deleteall":{"id":"androidpublisher.edits.images.deleteall","path":"{packageName}/edits/{editId}/listings/{language}/{imageType}","httpMethod":"DELETE","description":"Deletes all images for the specified language and image type.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"imageType":{"type":"string","required":true,"enum":["featureGraphic","icon","phoneScreenshots","promoGraphic","sevenInchScreenshots","tenInchScreenshots","tvBanner","tvScreenshots"],"enumDescriptions":["","","","","","","",""],"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language","imageType"],"response":{"$ref":"ImagesDeleteAllResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.edits.images.list","path":"{packageName}/edits/{editId}/listings/{language}/{imageType}","httpMethod":"GET","description":"Lists all images for the specified language and image type.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"imageType":{"type":"string","required":true,"enum":["featureGraphic","icon","phoneScreenshots","promoGraphic","sevenInchScreenshots","tenInchScreenshots","tvBanner","tvScreenshots"],"enumDescriptions":["","","","","","","",""],"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language","imageType"],"response":{"$ref":"ImagesListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"upload":{"id":"androidpublisher.edits.images.upload","path":"{packageName}/edits/{editId}/listings/{language}/{imageType}","httpMethod":"POST","description":"Uploads a new image and adds it to the list of images for the specified language and image type.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"imageType":{"type":"string","required":true,"enum":["featureGraphic","icon","phoneScreenshots","promoGraphic","sevenInchScreenshots","tenInchScreenshots","tvBanner","tvScreenshots"],"enumDescriptions":["","","","","","","",""],"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language","imageType"],"response":{"$ref":"ImagesUploadResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"],"supportsMediaUpload":true,"mediaUpload":{"accept":["image/*"],"maxSize":"15MB","protocols":{"simple":{"multipart":true,"path":"/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}"},"resumable":{"multipart":true,"path":"/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}"}}}}}},"listings":{"methods":{"delete":{"id":"androidpublisher.edits.listings.delete","path":"{packageName}/edits/{editId}/listings/{language}","httpMethod":"DELETE","description":"Deletes the specified localized store listing from an edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"deleteall":{"id":"androidpublisher.edits.listings.deleteall","path":"{packageName}/edits/{editId}/listings","httpMethod":"DELETE","description":"Deletes all localized listings from an edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.edits.listings.get","path":"{packageName}/edits/{editId}/listings/{language}","httpMethod":"GET","description":"Fetches information about a localized store listing.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language"],"response":{"$ref":"Listing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.edits.listings.list","path":"{packageName}/edits/{editId}/listings","httpMethod":"GET","description":"Returns all of the localized store listings attached to this edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"ListingsListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.listings.patch","path":"{packageName}/edits/{editId}/listings/{language}","httpMethod":"PATCH","description":"Creates or updates a localized store listing. This method supports patch semantics.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language"],"request":{"$ref":"Listing"},"response":{"$ref":"Listing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.listings.update","path":"{packageName}/edits/{editId}/listings/{language}","httpMethod":"PUT","description":"Creates or updates a localized store listing.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"language":{"type":"string","description":"The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId","language"],"request":{"$ref":"Listing"},"response":{"$ref":"Listing"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"testers":{"methods":{"get":{"id":"androidpublisher.edits.testers.get","path":"{packageName}/edits/{editId}/testers/{track}","httpMethod":"GET","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"response":{"$ref":"Testers"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.testers.patch","path":"{packageName}/edits/{editId}/testers/{track}","httpMethod":"PATCH","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"request":{"$ref":"Testers"},"response":{"$ref":"Testers"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.testers.update","path":"{packageName}/edits/{editId}/testers/{track}","httpMethod":"PUT","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"request":{"$ref":"Testers"},"response":{"$ref":"Testers"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"tracks":{"methods":{"get":{"id":"androidpublisher.edits.tracks.get","path":"{packageName}/edits/{editId}/tracks/{track}","httpMethod":"GET","description":"Fetches the track configuration for the specified track type. Includes the APK version codes that are in this track.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","description":"The track type to read or modify.","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"response":{"$ref":"Track"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.edits.tracks.list","path":"{packageName}/edits/{editId}/tracks","httpMethod":"GET","description":"Lists all the track configurations for this edit.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName","editId"],"response":{"$ref":"TracksListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.edits.tracks.patch","path":"{packageName}/edits/{editId}/tracks/{track}","httpMethod":"PATCH","description":"Updates the track configuration for the specified track type. This method supports patch semantics.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","description":"The track type to read or modify.","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"request":{"$ref":"Track"},"response":{"$ref":"Track"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.edits.tracks.update","path":"{packageName}/edits/{editId}/tracks/{track}","httpMethod":"PUT","description":"Updates the track configuration for the specified track type.","parameters":{"editId":{"type":"string","description":"Unique identifier for this edit.","required":true,"location":"path"},"packageName":{"type":"string","description":"Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".","required":true,"location":"path"},"track":{"type":"string","description":"The track type to read or modify.","required":true,"enum":["alpha","beta","production","rollout"],"enumDescriptions":["","","",""],"location":"path"}},"parameterOrder":["packageName","editId","track"],"request":{"$ref":"Track"},"response":{"$ref":"Track"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}}}},"inappproducts":{"methods":{"batch":{"id":"androidpublisher.inappproducts.batch","path":"inappproducts/batch","httpMethod":"POST","request":{"$ref":"InappproductsBatchRequest"},"response":{"$ref":"InappproductsBatchResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"delete":{"id":"androidpublisher.inappproducts.delete","path":"{packageName}/inappproducts/{sku}","httpMethod":"DELETE","description":"Delete an in-app product for an app.","parameters":{"packageName":{"type":"string","description":"Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".","required":true,"location":"path"},"sku":{"type":"string","description":"Unique identifier for the in-app product.","required":true,"location":"path"}},"parameterOrder":["packageName","sku"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.inappproducts.get","path":"{packageName}/inappproducts/{sku}","httpMethod":"GET","description":"Returns information about the in-app product specified.","parameters":{"packageName":{"type":"string","required":true,"location":"path"},"sku":{"type":"string","description":"Unique identifier for the in-app product.","required":true,"location":"path"}},"parameterOrder":["packageName","sku"],"response":{"$ref":"InAppProduct"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"insert":{"id":"androidpublisher.inappproducts.insert","path":"{packageName}/inappproducts","httpMethod":"POST","description":"Creates a new in-app product for an app.","parameters":{"autoConvertMissingPrices":{"type":"boolean","description":"If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.","location":"query"},"packageName":{"type":"string","description":"Unique identifier for the Android app; for example, \"com.spiffygame\".","required":true,"location":"path"}},"parameterOrder":["packageName"],"request":{"$ref":"InAppProduct"},"response":{"$ref":"InAppProduct"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"list":{"id":"androidpublisher.inappproducts.list","path":"{packageName}/inappproducts","httpMethod":"GET","description":"List all the in-app products for an Android app, both subscriptions and managed in-app products..","parameters":{"maxResults":{"type":"integer","format":"uint32","location":"query"},"packageName":{"type":"string","description":"Unique identifier for the Android app with in-app products; for example, \"com.spiffygame\".","required":true,"location":"path"},"startIndex":{"type":"integer","format":"uint32","location":"query"},"token":{"type":"string","location":"query"}},"parameterOrder":["packageName"],"response":{"$ref":"InappproductsListResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"patch":{"id":"androidpublisher.inappproducts.patch","path":"{packageName}/inappproducts/{sku}","httpMethod":"PATCH","description":"Updates the details of an in-app product. This method supports patch semantics.","parameters":{"autoConvertMissingPrices":{"type":"boolean","description":"If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.","location":"query"},"packageName":{"type":"string","description":"Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".","required":true,"location":"path"},"sku":{"type":"string","description":"Unique identifier for the in-app product.","required":true,"location":"path"}},"parameterOrder":["packageName","sku"],"request":{"$ref":"InAppProduct"},"response":{"$ref":"InAppProduct"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"update":{"id":"androidpublisher.inappproducts.update","path":"{packageName}/inappproducts/{sku}","httpMethod":"PUT","description":"Updates the details of an in-app product.","parameters":{"autoConvertMissingPrices":{"type":"boolean","description":"If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.","location":"query"},"packageName":{"type":"string","description":"Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".","required":true,"location":"path"},"sku":{"type":"string","description":"Unique identifier for the in-app product.","required":true,"location":"path"}},"parameterOrder":["packageName","sku"],"request":{"$ref":"InAppProduct"},"response":{"$ref":"InAppProduct"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"purchases":{"resources":{"products":{"methods":{"get":{"id":"androidpublisher.purchases.products.get","path":"{packageName}/purchases/products/{productId}/tokens/{token}","httpMethod":"GET","description":"Checks the purchase and consumption status of an inapp item.","parameters":{"packageName":{"type":"string","description":"The package name of the application the inapp product was sold in (for example, 'com.some.thing').","required":true,"location":"path"},"productId":{"type":"string","description":"The inapp product SKU (for example, 'com.some.thing.inapp1').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the inapp product was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","productId","token"],"response":{"$ref":"ProductPurchase"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}},"subscriptions":{"methods":{"cancel":{"id":"androidpublisher.purchases.subscriptions.cancel","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel","httpMethod":"POST","description":"Cancels a user's subscription purchase. The subscription remains valid until its expiration time.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"defer":{"id":"androidpublisher.purchases.subscriptions.defer","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:defer","httpMethod":"POST","description":"Defers a user's subscription purchase until a specified future expiration time.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"request":{"$ref":"SubscriptionPurchasesDeferRequest"},"response":{"$ref":"SubscriptionPurchasesDeferResponse"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"get":{"id":"androidpublisher.purchases.subscriptions.get","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}","httpMethod":"GET","description":"Checks whether a user's subscription purchase is valid and returns its expiry time.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"response":{"$ref":"SubscriptionPurchase"},"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"refund":{"id":"androidpublisher.purchases.subscriptions.refund","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:refund","httpMethod":"POST","description":"Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]},"revoke":{"id":"androidpublisher.purchases.subscriptions.revoke","path":"{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:revoke","httpMethod":"POST","description":"Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.","parameters":{"packageName":{"type":"string","description":"The package name of the application for which this subscription was purchased (for example, 'com.some.thing').","required":true,"location":"path"},"subscriptionId":{"type":"string","description":"The purchased subscription ID (for example, 'monthly001').","required":true,"location":"path"},"token":{"type":"string","description":"The token provided to the user's device when the subscription was purchased.","required":true,"location":"path"}},"parameterOrder":["packageName","subscriptionId","token"],"scopes":["https://www.googleapis.com/auth/androidpublisher"]}}}}}}}]:ET
@@ -0,0 +1,18 @@
1
+ HTTP/1.1 400 Bad Request
2
+ Content-Type: application/json
3
+ Cache-Control: no-cache, no-store, max-age=0, must-revalidate
4
+ Pragma: no-cache
5
+ Expires: Fri, 01 Jan 1990 00:00:00 GMT
6
+ Date: Mon, 19 Jan 2015 13:08:32 GMT
7
+ X-Content-Type-Options: nosniff
8
+ X-Frame-Options: SAMEORIGIN
9
+ X-XSS-Protection: 1; mode=block
10
+ Server: GSE
11
+ Alternate-Protocol: 443:quic,p=0.02
12
+ Accept-Ranges: none
13
+ Vary: Accept-Encoding
14
+ Transfer-Encoding: chunked
15
+
16
+ {
17
+ "error" : "invalid_grant"
18
+ }
@@ -0,0 +1,20 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json
3
+ Cache-Control: no-cache, no-store, max-age=0, must-revalidate
4
+ Pragma: no-cache
5
+ Expires: Fri, 01 Jan 1990 00:00:00 GMT
6
+ Date: Mon, 19 Jan 2015 13:08:32 GMT
7
+ X-Content-Type-Options: nosniff
8
+ X-Frame-Options: SAMEORIGIN
9
+ X-XSS-Protection: 1; mode=block
10
+ Server: GSE
11
+ Alternate-Protocol: 443:quic,p=0.02
12
+ Accept-Ranges: none
13
+ Vary: Accept-Encoding
14
+ Transfer-Encoding: chunked
15
+
16
+ {
17
+ "access_token": "some-random-garbage-32c6f0a0b4cc27392769e520aa6ab686c4e5e168",
18
+ "token_type": "Bearer",
19
+ "expires_in": 3600
20
+ }
@@ -0,0 +1,2841 @@
1
+ HTTP/1.1 200 OK
2
+ Expires: Mon, 19 Jan 2015 12:14:41 GMT
3
+ Date: Mon, 19 Jan 2015 12:09:41 GMT
4
+ Cache-Control: public, max-age=300, must-revalidate, no-transform
5
+ ETag: "ye6orv2F-1npMW3u9suM3a7C5Bo/xy4W57xFkYdtUdm4rpPIU-7grtg"
6
+ Vary: Origin
7
+ Vary: X-Origin
8
+ Content-Type: application/json; charset=UTF-8
9
+ X-Content-Type-Options: nosniff
10
+ X-Frame-Options: SAMEORIGIN
11
+ X-XSS-Protection: 1; mode=block
12
+ Content-Length: 83495
13
+ Server: GSE
14
+ Alternate-Protocol: 443:quic,p=0.02
15
+
16
+ {
17
+ "kind": "discovery#restDescription",
18
+ "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/xy4W57xFkYdtUdm4rpPIU-7grtg\"",
19
+ "discoveryVersion": "v1",
20
+ "id": "androidpublisher:v2",
21
+ "name": "androidpublisher",
22
+ "canonicalName": "Android Publisher",
23
+ "version": "v2",
24
+ "revision": "20141117",
25
+ "title": "Google Play Android Developer API",
26
+ "description": "Lets Android application developers access their Google Play accounts.",
27
+ "ownerDomain": "google.com",
28
+ "ownerName": "Google",
29
+ "icons": {
30
+ "x16": "https://www.google.com/images/icons/product/android-16.png",
31
+ "x32": "https://www.google.com/images/icons/product/android-32.png"
32
+ },
33
+ "documentationLink": "https://developers.google.com/android-publisher",
34
+ "protocol": "rest",
35
+ "baseUrl": "https://www.googleapis.com/androidpublisher/v2/applications/",
36
+ "basePath": "/androidpublisher/v2/applications/",
37
+ "rootUrl": "https://www.googleapis.com/",
38
+ "servicePath": "androidpublisher/v2/applications/",
39
+ "batchPath": "batch",
40
+ "parameters": {
41
+ "alt": {
42
+ "type": "string",
43
+ "description": "Data format for the response.",
44
+ "default": "json",
45
+ "enum": [
46
+ "json"
47
+ ],
48
+ "enumDescriptions": [
49
+ "Responses with Content-Type of application/json"
50
+ ],
51
+ "location": "query"
52
+ },
53
+ "fields": {
54
+ "type": "string",
55
+ "description": "Selector specifying which fields to include in a partial response.",
56
+ "location": "query"
57
+ },
58
+ "key": {
59
+ "type": "string",
60
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
61
+ "location": "query"
62
+ },
63
+ "oauth_token": {
64
+ "type": "string",
65
+ "description": "OAuth 2.0 token for the current user.",
66
+ "location": "query"
67
+ },
68
+ "prettyPrint": {
69
+ "type": "boolean",
70
+ "description": "Returns response with indentations and line breaks.",
71
+ "default": "true",
72
+ "location": "query"
73
+ },
74
+ "quotaUser": {
75
+ "type": "string",
76
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
77
+ "location": "query"
78
+ },
79
+ "userIp": {
80
+ "type": "string",
81
+ "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
82
+ "location": "query"
83
+ }
84
+ },
85
+ "auth": {
86
+ "oauth2": {
87
+ "scopes": {
88
+ "https://www.googleapis.com/auth/androidpublisher": {
89
+ "description": "View and manage your Google Play Android Developer account"
90
+ }
91
+ }
92
+ }
93
+ },
94
+ "schemas": {
95
+ "Apk": {
96
+ "id": "Apk",
97
+ "type": "object",
98
+ "properties": {
99
+ "binary": {
100
+ "$ref": "ApkBinary",
101
+ "description": "Information about the binary payload of this APK."
102
+ },
103
+ "versionCode": {
104
+ "type": "integer",
105
+ "description": "The version code of the APK, as specified in the APK's manifest file.",
106
+ "format": "int32"
107
+ }
108
+ }
109
+ },
110
+ "ApkBinary": {
111
+ "id": "ApkBinary",
112
+ "type": "object",
113
+ "description": "Represents the binary payload of an APK.",
114
+ "properties": {
115
+ "sha1": {
116
+ "type": "string",
117
+ "description": "A sha1 hash of the APK payload, encoded as a hex string and matching the output of the sha1sum command."
118
+ }
119
+ }
120
+ },
121
+ "ApkListing": {
122
+ "id": "ApkListing",
123
+ "type": "object",
124
+ "properties": {
125
+ "language": {
126
+ "type": "string",
127
+ "description": "The language code, in BCP 47 format (eg \"en-US\")."
128
+ },
129
+ "recentChanges": {
130
+ "type": "string",
131
+ "description": "Describe what's new in your APK."
132
+ }
133
+ }
134
+ },
135
+ "ApkListingsListResponse": {
136
+ "id": "ApkListingsListResponse",
137
+ "type": "object",
138
+ "properties": {
139
+ "kind": {
140
+ "type": "string",
141
+ "description": "Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#apkListingsListResponse\".",
142
+ "default": "androidpublisher#apkListingsListResponse"
143
+ },
144
+ "listings": {
145
+ "type": "array",
146
+ "items": {
147
+ "$ref": "ApkListing"
148
+ }
149
+ }
150
+ }
151
+ },
152
+ "ApksListResponse": {
153
+ "id": "ApksListResponse",
154
+ "type": "object",
155
+ "properties": {
156
+ "apks": {
157
+ "type": "array",
158
+ "items": {
159
+ "$ref": "Apk"
160
+ }
161
+ },
162
+ "kind": {
163
+ "type": "string",
164
+ "description": "Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#apksListResponse\".",
165
+ "default": "androidpublisher#apksListResponse"
166
+ }
167
+ }
168
+ },
169
+ "AppDetails": {
170
+ "id": "AppDetails",
171
+ "type": "object",
172
+ "properties": {
173
+ "contactEmail": {
174
+ "type": "string",
175
+ "description": "The user-visible support email for this app."
176
+ },
177
+ "contactPhone": {
178
+ "type": "string",
179
+ "description": "The user-visible support telephone number for this app."
180
+ },
181
+ "contactWebsite": {
182
+ "type": "string",
183
+ "description": "The user-visible website for this app."
184
+ },
185
+ "defaultLanguage": {
186
+ "type": "string",
187
+ "description": "Default language code, in BCP 47 format (eg \"en-US\")."
188
+ }
189
+ }
190
+ },
191
+ "AppEdit": {
192
+ "id": "AppEdit",
193
+ "type": "object",
194
+ "description": "Represents an edit of an app. An edit allows clients to make multiple changes before committing them in one operation.",
195
+ "properties": {
196
+ "expiryTimeSeconds": {
197
+ "type": "string",
198
+ "description": "The time at which the edit will expire and will be no longer valid for use in any subsequent API calls (encoded as seconds since the Epoch)."
199
+ },
200
+ "id": {
201
+ "type": "string",
202
+ "description": "The ID of the edit that can be used in subsequent API calls."
203
+ }
204
+ }
205
+ },
206
+ "ExpansionFile": {
207
+ "id": "ExpansionFile",
208
+ "type": "object",
209
+ "properties": {
210
+ "fileSize": {
211
+ "type": "string",
212
+ "description": "If set this field indicates that this APK has an Expansion File uploaded to it: this APK does not reference another APK's Expansion File. The field's value is the size of the uploaded Expansion File in bytes.",
213
+ "format": "int64"
214
+ },
215
+ "referencesVersion": {
216
+ "type": "integer",
217
+ "description": "If set this APK's Expansion File references another APK's Expansion File. The file_size field will not be set.",
218
+ "format": "int32"
219
+ }
220
+ }
221
+ },
222
+ "ExpansionFilesUploadResponse": {
223
+ "id": "ExpansionFilesUploadResponse",
224
+ "type": "object",
225
+ "properties": {
226
+ "expansionFile": {
227
+ "$ref": "ExpansionFile"
228
+ }
229
+ }
230
+ },
231
+ "Image": {
232
+ "id": "Image",
233
+ "type": "object",
234
+ "properties": {
235
+ "id": {
236
+ "type": "string",
237
+ "description": "A unique id representing this image."
238
+ },
239
+ "sha1": {
240
+ "type": "string",
241
+ "description": "A sha1 hash of the image that was uploaded."
242
+ },
243
+ "url": {
244
+ "type": "string",
245
+ "description": "A URL that will serve a preview of the image."
246
+ }
247
+ }
248
+ },
249
+ "ImagesDeleteAllResponse": {
250
+ "id": "ImagesDeleteAllResponse",
251
+ "type": "object",
252
+ "properties": {
253
+ "deleted": {
254
+ "type": "array",
255
+ "items": {
256
+ "$ref": "Image"
257
+ }
258
+ }
259
+ }
260
+ },
261
+ "ImagesListResponse": {
262
+ "id": "ImagesListResponse",
263
+ "type": "object",
264
+ "properties": {
265
+ "images": {
266
+ "type": "array",
267
+ "items": {
268
+ "$ref": "Image"
269
+ }
270
+ }
271
+ }
272
+ },
273
+ "ImagesUploadResponse": {
274
+ "id": "ImagesUploadResponse",
275
+ "type": "object",
276
+ "properties": {
277
+ "image": {
278
+ "$ref": "Image"
279
+ }
280
+ }
281
+ },
282
+ "InAppProduct": {
283
+ "id": "InAppProduct",
284
+ "type": "object",
285
+ "properties": {
286
+ "defaultLanguage": {
287
+ "type": "string",
288
+ "description": "The default language of the localized data, as defined by BCP 47. e.g. \"en-US\", \"en-GB\"."
289
+ },
290
+ "defaultPrice": {
291
+ "$ref": "Price",
292
+ "description": "Default price cannot be zero. In-app products can never be free. Default price is always in the developer's Checkout merchant currency."
293
+ },
294
+ "listings": {
295
+ "type": "object",
296
+ "description": "List of localized title and description data.",
297
+ "additionalProperties": {
298
+ "$ref": "InAppProductListing",
299
+ "description": "The language of the localized data, as defined by BCP 47. i.e.: \"en-US\", \"en-GB\"."
300
+ }
301
+ },
302
+ "packageName": {
303
+ "type": "string",
304
+ "description": "The package name of the parent app."
305
+ },
306
+ "prices": {
307
+ "type": "object",
308
+ "description": "Prices per buyer region. None of these prices should be zero. In-app products can never be free.",
309
+ "additionalProperties": {
310
+ "$ref": "Price",
311
+ "description": "Region code, as defined by ISO 3166-2."
312
+ }
313
+ },
314
+ "purchaseType": {
315
+ "type": "string",
316
+ "description": "Purchase type enum value. Unmodifiable after creation."
317
+ },
318
+ "season": {
319
+ "$ref": "Season",
320
+ "description": "Definition of a season for a seasonal subscription. Can be defined only for yearly subscriptions."
321
+ },
322
+ "sku": {
323
+ "type": "string",
324
+ "description": "The stock-keeping-unit (SKU) of the product, unique within an app."
325
+ },
326
+ "status": {
327
+ "type": "string"
328
+ },
329
+ "subscriptionPeriod": {
330
+ "type": "string",
331
+ "description": "The period of the subscription (if any), i.e. period at which payments must happen. Defined as ISO 8601 duration, i.e. \"P1M\" for 1 month period."
332
+ },
333
+ "trialPeriod": {
334
+ "type": "string",
335
+ "description": "Trial period, specified in ISO 8601 format. Acceptable values are anything between \"P7D\" (seven days) and \"P999D\" (999 days). Seasonal subscriptions cannot have a trial period."
336
+ }
337
+ }
338
+ },
339
+ "InAppProductListing": {
340
+ "id": "InAppProductListing",
341
+ "type": "object",
342
+ "properties": {
343
+ "description": {
344
+ "type": "string"
345
+ },
346
+ "title": {
347
+ "type": "string"
348
+ }
349
+ }
350
+ },
351
+ "InappproductsBatchRequest": {
352
+ "id": "InappproductsBatchRequest",
353
+ "type": "object",
354
+ "properties": {
355
+ "entrys": {
356
+ "type": "array",
357
+ "items": {
358
+ "$ref": "InappproductsBatchRequestEntry"
359
+ }
360
+ }
361
+ }
362
+ },
363
+ "InappproductsBatchRequestEntry": {
364
+ "id": "InappproductsBatchRequestEntry",
365
+ "type": "object",
366
+ "properties": {
367
+ "batchId": {
368
+ "type": "integer",
369
+ "format": "uint32"
370
+ },
371
+ "inappproductsinsertrequest": {
372
+ "$ref": "InappproductsInsertRequest"
373
+ },
374
+ "inappproductsupdaterequest": {
375
+ "$ref": "InappproductsUpdateRequest"
376
+ },
377
+ "methodName": {
378
+ "type": "string"
379
+ }
380
+ }
381
+ },
382
+ "InappproductsBatchResponse": {
383
+ "id": "InappproductsBatchResponse",
384
+ "type": "object",
385
+ "properties": {
386
+ "entrys": {
387
+ "type": "array",
388
+ "items": {
389
+ "$ref": "InappproductsBatchResponseEntry"
390
+ }
391
+ },
392
+ "kind": {
393
+ "type": "string",
394
+ "description": "Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#inappproductsBatchResponse\".",
395
+ "default": "androidpublisher#inappproductsBatchResponse"
396
+ }
397
+ }
398
+ },
399
+ "InappproductsBatchResponseEntry": {
400
+ "id": "InappproductsBatchResponseEntry",
401
+ "type": "object",
402
+ "properties": {
403
+ "batchId": {
404
+ "type": "integer",
405
+ "format": "uint32"
406
+ },
407
+ "inappproductsinsertresponse": {
408
+ "$ref": "InappproductsInsertResponse"
409
+ },
410
+ "inappproductsupdateresponse": {
411
+ "$ref": "InappproductsUpdateResponse"
412
+ }
413
+ }
414
+ },
415
+ "InappproductsInsertRequest": {
416
+ "id": "InappproductsInsertRequest",
417
+ "type": "object",
418
+ "properties": {
419
+ "inappproduct": {
420
+ "$ref": "InAppProduct"
421
+ }
422
+ }
423
+ },
424
+ "InappproductsInsertResponse": {
425
+ "id": "InappproductsInsertResponse",
426
+ "type": "object",
427
+ "properties": {
428
+ "inappproduct": {
429
+ "$ref": "InAppProduct"
430
+ }
431
+ }
432
+ },
433
+ "InappproductsListResponse": {
434
+ "id": "InappproductsListResponse",
435
+ "type": "object",
436
+ "properties": {
437
+ "inappproduct": {
438
+ "type": "array",
439
+ "items": {
440
+ "$ref": "InAppProduct"
441
+ }
442
+ },
443
+ "kind": {
444
+ "type": "string",
445
+ "description": "Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#inappproductsListResponse\".",
446
+ "default": "androidpublisher#inappproductsListResponse"
447
+ },
448
+ "pageInfo": {
449
+ "$ref": "PageInfo"
450
+ },
451
+ "tokenPagination": {
452
+ "$ref": "TokenPagination"
453
+ }
454
+ }
455
+ },
456
+ "InappproductsUpdateRequest": {
457
+ "id": "InappproductsUpdateRequest",
458
+ "type": "object",
459
+ "properties": {
460
+ "inappproduct": {
461
+ "$ref": "InAppProduct"
462
+ }
463
+ }
464
+ },
465
+ "InappproductsUpdateResponse": {
466
+ "id": "InappproductsUpdateResponse",
467
+ "type": "object",
468
+ "properties": {
469
+ "inappproduct": {
470
+ "$ref": "InAppProduct"
471
+ }
472
+ }
473
+ },
474
+ "Listing": {
475
+ "id": "Listing",
476
+ "type": "object",
477
+ "properties": {
478
+ "fullDescription": {
479
+ "type": "string",
480
+ "description": "Full description of the app; this may be up to 4000 characters in length."
481
+ },
482
+ "language": {
483
+ "type": "string",
484
+ "description": "Language localization code (for example, \"de-AT\" for Austrian German)."
485
+ },
486
+ "shortDescription": {
487
+ "type": "string",
488
+ "description": "Short description of the app (previously known as promo text); this may be up to 80 characters in length."
489
+ },
490
+ "title": {
491
+ "type": "string",
492
+ "description": "App's localized title."
493
+ },
494
+ "video": {
495
+ "type": "string",
496
+ "description": "URL of a promotional YouTube video for the app."
497
+ }
498
+ }
499
+ },
500
+ "ListingsListResponse": {
501
+ "id": "ListingsListResponse",
502
+ "type": "object",
503
+ "properties": {
504
+ "kind": {
505
+ "type": "string",
506
+ "description": "Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#listingsListResponse\".",
507
+ "default": "androidpublisher#listingsListResponse"
508
+ },
509
+ "listings": {
510
+ "type": "array",
511
+ "items": {
512
+ "$ref": "Listing"
513
+ }
514
+ }
515
+ }
516
+ },
517
+ "MonthDay": {
518
+ "id": "MonthDay",
519
+ "type": "object",
520
+ "properties": {
521
+ "day": {
522
+ "type": "integer",
523
+ "description": "Day of a month, value in [1, 31] range. Valid range depends on the specified month.",
524
+ "format": "uint32"
525
+ },
526
+ "month": {
527
+ "type": "integer",
528
+ "description": "Month of a year. e.g. 1 = JAN, 2 = FEB etc.",
529
+ "format": "uint32"
530
+ }
531
+ }
532
+ },
533
+ "PageInfo": {
534
+ "id": "PageInfo",
535
+ "type": "object",
536
+ "properties": {
537
+ "resultPerPage": {
538
+ "type": "integer",
539
+ "format": "int32"
540
+ },
541
+ "startIndex": {
542
+ "type": "integer",
543
+ "format": "int32"
544
+ },
545
+ "totalResults": {
546
+ "type": "integer",
547
+ "format": "int32"
548
+ }
549
+ }
550
+ },
551
+ "Price": {
552
+ "id": "Price",
553
+ "type": "object",
554
+ "properties": {
555
+ "currency": {
556
+ "type": "string",
557
+ "description": "3 letter Currency code, as defined by ISO 4217."
558
+ },
559
+ "priceMicros": {
560
+ "type": "string",
561
+ "description": "The price in millionths of the currency base unit represented as a string."
562
+ }
563
+ }
564
+ },
565
+ "ProductPurchase": {
566
+ "id": "ProductPurchase",
567
+ "type": "object",
568
+ "description": "A ProductPurchase resource indicates the status of a user's inapp product purchase.",
569
+ "properties": {
570
+ "consumptionState": {
571
+ "type": "integer",
572
+ "description": "The consumption state of the inapp product. Possible values are: \n- Yet to be consumed \n- Consumed",
573
+ "format": "int32"
574
+ },
575
+ "developerPayload": {
576
+ "type": "string",
577
+ "description": "A developer-specified string that contains supplemental information about an order."
578
+ },
579
+ "kind": {
580
+ "type": "string",
581
+ "description": "This kind represents an inappPurchase object in the androidpublisher service.",
582
+ "default": "androidpublisher#productPurchase"
583
+ },
584
+ "purchaseState": {
585
+ "type": "integer",
586
+ "description": "The purchase state of the order. Possible values are: \n- Purchased \n- Cancelled",
587
+ "format": "int32"
588
+ },
589
+ "purchaseTimeMillis": {
590
+ "type": "string",
591
+ "description": "The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).",
592
+ "format": "int64"
593
+ }
594
+ }
595
+ },
596
+ "Season": {
597
+ "id": "Season",
598
+ "type": "object",
599
+ "properties": {
600
+ "end": {
601
+ "$ref": "MonthDay",
602
+ "description": "Inclusive end date of the recurrence period."
603
+ },
604
+ "start": {
605
+ "$ref": "MonthDay",
606
+ "description": "Inclusive start date of the recurrence period."
607
+ }
608
+ }
609
+ },
610
+ "SubscriptionDeferralInfo": {
611
+ "id": "SubscriptionDeferralInfo",
612
+ "type": "object",
613
+ "description": "A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry time.",
614
+ "properties": {
615
+ "desiredExpiryTimeMillis": {
616
+ "type": "string",
617
+ "description": "The desired next expiry time for the subscription in milliseconds since Epoch. The given time must be after the current expiry time for the subscription.",
618
+ "format": "int64"
619
+ },
620
+ "expectedExpiryTimeMillis": {
621
+ "type": "string",
622
+ "description": "The expected expiry time for the subscription. If the current expiry time for the subscription is not the value specified here, the deferral will not occur.",
623
+ "format": "int64"
624
+ }
625
+ }
626
+ },
627
+ "SubscriptionPurchase": {
628
+ "id": "SubscriptionPurchase",
629
+ "type": "object",
630
+ "description": "A SubscriptionPurchase resource indicates the status of a user's subscription purchase.",
631
+ "properties": {
632
+ "autoRenewing": {
633
+ "type": "boolean",
634
+ "description": "Whether the subscription will automatically be renewed when it reaches its current expiry time."
635
+ },
636
+ "expiryTimeMillis": {
637
+ "type": "string",
638
+ "description": "Time at which the subscription will expire, in milliseconds since Epoch.",
639
+ "format": "int64"
640
+ },
641
+ "kind": {
642
+ "type": "string",
643
+ "description": "This kind represents a subscriptionPurchase object in the androidpublisher service.",
644
+ "default": "androidpublisher#subscriptionPurchase"
645
+ },
646
+ "startTimeMillis": {
647
+ "type": "string",
648
+ "description": "Time at which the subscription was granted, in milliseconds since Epoch.",
649
+ "format": "int64"
650
+ }
651
+ }
652
+ },
653
+ "SubscriptionPurchasesDeferRequest": {
654
+ "id": "SubscriptionPurchasesDeferRequest",
655
+ "type": "object",
656
+ "properties": {
657
+ "deferralInfo": {
658
+ "$ref": "SubscriptionDeferralInfo",
659
+ "description": "The information about the new desired expiry time for the subscription."
660
+ }
661
+ }
662
+ },
663
+ "SubscriptionPurchasesDeferResponse": {
664
+ "id": "SubscriptionPurchasesDeferResponse",
665
+ "type": "object",
666
+ "properties": {
667
+ "newExpiryTimeMillis": {
668
+ "type": "string",
669
+ "description": "The new expiry time for the subscription in milliseconds since the Epoch.",
670
+ "format": "int64"
671
+ }
672
+ }
673
+ },
674
+ "Testers": {
675
+ "id": "Testers",
676
+ "type": "object",
677
+ "properties": {
678
+ "googleGroups": {
679
+ "type": "array",
680
+ "items": {
681
+ "type": "string"
682
+ }
683
+ },
684
+ "googlePlusCommunities": {
685
+ "type": "array",
686
+ "items": {
687
+ "type": "string"
688
+ }
689
+ }
690
+ }
691
+ },
692
+ "TokenPagination": {
693
+ "id": "TokenPagination",
694
+ "type": "object",
695
+ "properties": {
696
+ "nextPageToken": {
697
+ "type": "string"
698
+ },
699
+ "previousPageToken": {
700
+ "type": "string"
701
+ }
702
+ }
703
+ },
704
+ "Track": {
705
+ "id": "Track",
706
+ "type": "object",
707
+ "properties": {
708
+ "track": {
709
+ "type": "string"
710
+ },
711
+ "userFraction": {
712
+ "type": "number",
713
+ "format": "double"
714
+ },
715
+ "versionCodes": {
716
+ "type": "array",
717
+ "items": {
718
+ "type": "integer",
719
+ "format": "int32"
720
+ }
721
+ }
722
+ }
723
+ },
724
+ "TracksListResponse": {
725
+ "id": "TracksListResponse",
726
+ "type": "object",
727
+ "properties": {
728
+ "kind": {
729
+ "type": "string",
730
+ "description": "Identifies what kind of resource this is. Value: the fixed string \"androidpublisher#tracksListResponse\".",
731
+ "default": "androidpublisher#tracksListResponse"
732
+ },
733
+ "tracks": {
734
+ "type": "array",
735
+ "items": {
736
+ "$ref": "Track"
737
+ }
738
+ }
739
+ }
740
+ }
741
+ },
742
+ "resources": {
743
+ "edits": {
744
+ "methods": {
745
+ "commit": {
746
+ "id": "androidpublisher.edits.commit",
747
+ "path": "{packageName}/edits/{editId}:commit",
748
+ "httpMethod": "POST",
749
+ "description": "Commits/applies the changes made in this edit back to the app.",
750
+ "parameters": {
751
+ "editId": {
752
+ "type": "string",
753
+ "description": "Unique identifier for this edit.",
754
+ "required": true,
755
+ "location": "path"
756
+ },
757
+ "packageName": {
758
+ "type": "string",
759
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
760
+ "required": true,
761
+ "location": "path"
762
+ }
763
+ },
764
+ "parameterOrder": [
765
+ "packageName",
766
+ "editId"
767
+ ],
768
+ "response": {
769
+ "$ref": "AppEdit"
770
+ },
771
+ "scopes": [
772
+ "https://www.googleapis.com/auth/androidpublisher"
773
+ ]
774
+ },
775
+ "delete": {
776
+ "id": "androidpublisher.edits.delete",
777
+ "path": "{packageName}/edits/{editId}",
778
+ "httpMethod": "DELETE",
779
+ "description": "Deletes an edit for an app. Creating a new edit will automatically delete any of your previous edits so this method need only be called if you want to preemptively abandon an edit.",
780
+ "parameters": {
781
+ "editId": {
782
+ "type": "string",
783
+ "description": "Unique identifier for this edit.",
784
+ "required": true,
785
+ "location": "path"
786
+ },
787
+ "packageName": {
788
+ "type": "string",
789
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
790
+ "required": true,
791
+ "location": "path"
792
+ }
793
+ },
794
+ "parameterOrder": [
795
+ "packageName",
796
+ "editId"
797
+ ],
798
+ "scopes": [
799
+ "https://www.googleapis.com/auth/androidpublisher"
800
+ ]
801
+ },
802
+ "get": {
803
+ "id": "androidpublisher.edits.get",
804
+ "path": "{packageName}/edits/{editId}",
805
+ "httpMethod": "GET",
806
+ "description": "Returns information about the edit specified. Calls will fail if the edit is no long active (e.g. has been deleted, superseded or expired).",
807
+ "parameters": {
808
+ "editId": {
809
+ "type": "string",
810
+ "description": "Unique identifier for this edit.",
811
+ "required": true,
812
+ "location": "path"
813
+ },
814
+ "packageName": {
815
+ "type": "string",
816
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
817
+ "required": true,
818
+ "location": "path"
819
+ }
820
+ },
821
+ "parameterOrder": [
822
+ "packageName",
823
+ "editId"
824
+ ],
825
+ "response": {
826
+ "$ref": "AppEdit"
827
+ },
828
+ "scopes": [
829
+ "https://www.googleapis.com/auth/androidpublisher"
830
+ ]
831
+ },
832
+ "insert": {
833
+ "id": "androidpublisher.edits.insert",
834
+ "path": "{packageName}/edits",
835
+ "httpMethod": "POST",
836
+ "description": "Creates a new edit for an app, populated with the app's current state.",
837
+ "parameters": {
838
+ "packageName": {
839
+ "type": "string",
840
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
841
+ "required": true,
842
+ "location": "path"
843
+ }
844
+ },
845
+ "parameterOrder": [
846
+ "packageName"
847
+ ],
848
+ "request": {
849
+ "$ref": "AppEdit"
850
+ },
851
+ "response": {
852
+ "$ref": "AppEdit"
853
+ },
854
+ "scopes": [
855
+ "https://www.googleapis.com/auth/androidpublisher"
856
+ ]
857
+ },
858
+ "validate": {
859
+ "id": "androidpublisher.edits.validate",
860
+ "path": "{packageName}/edits/{editId}:validate",
861
+ "httpMethod": "POST",
862
+ "description": "Checks that the edit can be successfully committed. The edit's changes are not applied to the live app.",
863
+ "parameters": {
864
+ "editId": {
865
+ "type": "string",
866
+ "description": "Unique identifier for this edit.",
867
+ "required": true,
868
+ "location": "path"
869
+ },
870
+ "packageName": {
871
+ "type": "string",
872
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
873
+ "required": true,
874
+ "location": "path"
875
+ }
876
+ },
877
+ "parameterOrder": [
878
+ "packageName",
879
+ "editId"
880
+ ],
881
+ "response": {
882
+ "$ref": "AppEdit"
883
+ },
884
+ "scopes": [
885
+ "https://www.googleapis.com/auth/androidpublisher"
886
+ ]
887
+ }
888
+ },
889
+ "resources": {
890
+ "apklistings": {
891
+ "methods": {
892
+ "delete": {
893
+ "id": "androidpublisher.edits.apklistings.delete",
894
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}",
895
+ "httpMethod": "DELETE",
896
+ "description": "Deletes the APK-specific localized listing for a specified APK and language code.",
897
+ "parameters": {
898
+ "apkVersionCode": {
899
+ "type": "integer",
900
+ "description": "The APK version code whose APK-specific listings should be read or modified.",
901
+ "required": true,
902
+ "format": "int32",
903
+ "location": "path"
904
+ },
905
+ "editId": {
906
+ "type": "string",
907
+ "description": "Unique identifier for this edit.",
908
+ "required": true,
909
+ "location": "path"
910
+ },
911
+ "language": {
912
+ "type": "string",
913
+ "description": "The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".",
914
+ "required": true,
915
+ "location": "path"
916
+ },
917
+ "packageName": {
918
+ "type": "string",
919
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
920
+ "required": true,
921
+ "location": "path"
922
+ }
923
+ },
924
+ "parameterOrder": [
925
+ "packageName",
926
+ "editId",
927
+ "apkVersionCode",
928
+ "language"
929
+ ],
930
+ "scopes": [
931
+ "https://www.googleapis.com/auth/androidpublisher"
932
+ ]
933
+ },
934
+ "deleteall": {
935
+ "id": "androidpublisher.edits.apklistings.deleteall",
936
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings",
937
+ "httpMethod": "DELETE",
938
+ "description": "Deletes all the APK-specific localized listings for a specified APK.",
939
+ "parameters": {
940
+ "apkVersionCode": {
941
+ "type": "integer",
942
+ "description": "The APK version code whose APK-specific listings should be read or modified.",
943
+ "required": true,
944
+ "format": "int32",
945
+ "location": "path"
946
+ },
947
+ "editId": {
948
+ "type": "string",
949
+ "description": "Unique identifier for this edit.",
950
+ "required": true,
951
+ "location": "path"
952
+ },
953
+ "packageName": {
954
+ "type": "string",
955
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
956
+ "required": true,
957
+ "location": "path"
958
+ }
959
+ },
960
+ "parameterOrder": [
961
+ "packageName",
962
+ "editId",
963
+ "apkVersionCode"
964
+ ],
965
+ "scopes": [
966
+ "https://www.googleapis.com/auth/androidpublisher"
967
+ ]
968
+ },
969
+ "get": {
970
+ "id": "androidpublisher.edits.apklistings.get",
971
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}",
972
+ "httpMethod": "GET",
973
+ "description": "Fetches the APK-specific localized listing for a specified APK and language code.",
974
+ "parameters": {
975
+ "apkVersionCode": {
976
+ "type": "integer",
977
+ "description": "The APK version code whose APK-specific listings should be read or modified.",
978
+ "required": true,
979
+ "format": "int32",
980
+ "location": "path"
981
+ },
982
+ "editId": {
983
+ "type": "string",
984
+ "description": "Unique identifier for this edit.",
985
+ "required": true,
986
+ "location": "path"
987
+ },
988
+ "language": {
989
+ "type": "string",
990
+ "description": "The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".",
991
+ "required": true,
992
+ "location": "path"
993
+ },
994
+ "packageName": {
995
+ "type": "string",
996
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
997
+ "required": true,
998
+ "location": "path"
999
+ }
1000
+ },
1001
+ "parameterOrder": [
1002
+ "packageName",
1003
+ "editId",
1004
+ "apkVersionCode",
1005
+ "language"
1006
+ ],
1007
+ "response": {
1008
+ "$ref": "ApkListing"
1009
+ },
1010
+ "scopes": [
1011
+ "https://www.googleapis.com/auth/androidpublisher"
1012
+ ]
1013
+ },
1014
+ "list": {
1015
+ "id": "androidpublisher.edits.apklistings.list",
1016
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings",
1017
+ "httpMethod": "GET",
1018
+ "description": "Lists all the APK-specific localized listings for a specified APK.",
1019
+ "parameters": {
1020
+ "apkVersionCode": {
1021
+ "type": "integer",
1022
+ "description": "The APK version code whose APK-specific listings should be read or modified.",
1023
+ "required": true,
1024
+ "format": "int32",
1025
+ "location": "path"
1026
+ },
1027
+ "editId": {
1028
+ "type": "string",
1029
+ "description": "Unique identifier for this edit.",
1030
+ "required": true,
1031
+ "location": "path"
1032
+ },
1033
+ "packageName": {
1034
+ "type": "string",
1035
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1036
+ "required": true,
1037
+ "location": "path"
1038
+ }
1039
+ },
1040
+ "parameterOrder": [
1041
+ "packageName",
1042
+ "editId",
1043
+ "apkVersionCode"
1044
+ ],
1045
+ "response": {
1046
+ "$ref": "ApkListingsListResponse"
1047
+ },
1048
+ "scopes": [
1049
+ "https://www.googleapis.com/auth/androidpublisher"
1050
+ ]
1051
+ },
1052
+ "patch": {
1053
+ "id": "androidpublisher.edits.apklistings.patch",
1054
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}",
1055
+ "httpMethod": "PATCH",
1056
+ "description": "Updates or creates the APK-specific localized listing for a specified APK and language code. This method supports patch semantics.",
1057
+ "parameters": {
1058
+ "apkVersionCode": {
1059
+ "type": "integer",
1060
+ "description": "The APK version code whose APK-specific listings should be read or modified.",
1061
+ "required": true,
1062
+ "format": "int32",
1063
+ "location": "path"
1064
+ },
1065
+ "editId": {
1066
+ "type": "string",
1067
+ "description": "Unique identifier for this edit.",
1068
+ "required": true,
1069
+ "location": "path"
1070
+ },
1071
+ "language": {
1072
+ "type": "string",
1073
+ "description": "The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".",
1074
+ "required": true,
1075
+ "location": "path"
1076
+ },
1077
+ "packageName": {
1078
+ "type": "string",
1079
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1080
+ "required": true,
1081
+ "location": "path"
1082
+ }
1083
+ },
1084
+ "parameterOrder": [
1085
+ "packageName",
1086
+ "editId",
1087
+ "apkVersionCode",
1088
+ "language"
1089
+ ],
1090
+ "request": {
1091
+ "$ref": "ApkListing"
1092
+ },
1093
+ "response": {
1094
+ "$ref": "ApkListing"
1095
+ },
1096
+ "scopes": [
1097
+ "https://www.googleapis.com/auth/androidpublisher"
1098
+ ]
1099
+ },
1100
+ "update": {
1101
+ "id": "androidpublisher.edits.apklistings.update",
1102
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}",
1103
+ "httpMethod": "PUT",
1104
+ "description": "Updates or creates the APK-specific localized listing for a specified APK and language code.",
1105
+ "parameters": {
1106
+ "apkVersionCode": {
1107
+ "type": "integer",
1108
+ "description": "The APK version code whose APK-specific listings should be read or modified.",
1109
+ "required": true,
1110
+ "format": "int32",
1111
+ "location": "path"
1112
+ },
1113
+ "editId": {
1114
+ "type": "string",
1115
+ "description": "Unique identifier for this edit.",
1116
+ "required": true,
1117
+ "location": "path"
1118
+ },
1119
+ "language": {
1120
+ "type": "string",
1121
+ "description": "The language code (a BCP-47 language tag) of the APK-specific localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".",
1122
+ "required": true,
1123
+ "location": "path"
1124
+ },
1125
+ "packageName": {
1126
+ "type": "string",
1127
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1128
+ "required": true,
1129
+ "location": "path"
1130
+ }
1131
+ },
1132
+ "parameterOrder": [
1133
+ "packageName",
1134
+ "editId",
1135
+ "apkVersionCode",
1136
+ "language"
1137
+ ],
1138
+ "request": {
1139
+ "$ref": "ApkListing"
1140
+ },
1141
+ "response": {
1142
+ "$ref": "ApkListing"
1143
+ },
1144
+ "scopes": [
1145
+ "https://www.googleapis.com/auth/androidpublisher"
1146
+ ]
1147
+ }
1148
+ }
1149
+ },
1150
+ "apks": {
1151
+ "methods": {
1152
+ "list": {
1153
+ "id": "androidpublisher.edits.apks.list",
1154
+ "path": "{packageName}/edits/{editId}/apks",
1155
+ "httpMethod": "GET",
1156
+ "parameters": {
1157
+ "editId": {
1158
+ "type": "string",
1159
+ "description": "Unique identifier for this edit.",
1160
+ "required": true,
1161
+ "location": "path"
1162
+ },
1163
+ "packageName": {
1164
+ "type": "string",
1165
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1166
+ "required": true,
1167
+ "location": "path"
1168
+ }
1169
+ },
1170
+ "parameterOrder": [
1171
+ "packageName",
1172
+ "editId"
1173
+ ],
1174
+ "response": {
1175
+ "$ref": "ApksListResponse"
1176
+ },
1177
+ "scopes": [
1178
+ "https://www.googleapis.com/auth/androidpublisher"
1179
+ ]
1180
+ },
1181
+ "upload": {
1182
+ "id": "androidpublisher.edits.apks.upload",
1183
+ "path": "{packageName}/edits/{editId}/apks",
1184
+ "httpMethod": "POST",
1185
+ "parameters": {
1186
+ "editId": {
1187
+ "type": "string",
1188
+ "description": "Unique identifier for this edit.",
1189
+ "required": true,
1190
+ "location": "path"
1191
+ },
1192
+ "packageName": {
1193
+ "type": "string",
1194
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1195
+ "required": true,
1196
+ "location": "path"
1197
+ }
1198
+ },
1199
+ "parameterOrder": [
1200
+ "packageName",
1201
+ "editId"
1202
+ ],
1203
+ "response": {
1204
+ "$ref": "Apk"
1205
+ },
1206
+ "scopes": [
1207
+ "https://www.googleapis.com/auth/androidpublisher"
1208
+ ],
1209
+ "supportsMediaUpload": true,
1210
+ "mediaUpload": {
1211
+ "accept": [
1212
+ "application/octet-stream",
1213
+ "application/vnd.android.package-archive"
1214
+ ],
1215
+ "maxSize": "1GB",
1216
+ "protocols": {
1217
+ "simple": {
1218
+ "multipart": true,
1219
+ "path": "/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks"
1220
+ },
1221
+ "resumable": {
1222
+ "multipart": true,
1223
+ "path": "/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks"
1224
+ }
1225
+ }
1226
+ }
1227
+ }
1228
+ }
1229
+ },
1230
+ "details": {
1231
+ "methods": {
1232
+ "get": {
1233
+ "id": "androidpublisher.edits.details.get",
1234
+ "path": "{packageName}/edits/{editId}/details",
1235
+ "httpMethod": "GET",
1236
+ "description": "Fetches app details for this edit. This includes the default language and developer support contact information.",
1237
+ "parameters": {
1238
+ "editId": {
1239
+ "type": "string",
1240
+ "description": "Unique identifier for this edit.",
1241
+ "required": true,
1242
+ "location": "path"
1243
+ },
1244
+ "packageName": {
1245
+ "type": "string",
1246
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1247
+ "required": true,
1248
+ "location": "path"
1249
+ }
1250
+ },
1251
+ "parameterOrder": [
1252
+ "packageName",
1253
+ "editId"
1254
+ ],
1255
+ "response": {
1256
+ "$ref": "AppDetails"
1257
+ },
1258
+ "scopes": [
1259
+ "https://www.googleapis.com/auth/androidpublisher"
1260
+ ]
1261
+ },
1262
+ "patch": {
1263
+ "id": "androidpublisher.edits.details.patch",
1264
+ "path": "{packageName}/edits/{editId}/details",
1265
+ "httpMethod": "PATCH",
1266
+ "description": "Updates app details for this edit. This method supports patch semantics.",
1267
+ "parameters": {
1268
+ "editId": {
1269
+ "type": "string",
1270
+ "description": "Unique identifier for this edit.",
1271
+ "required": true,
1272
+ "location": "path"
1273
+ },
1274
+ "packageName": {
1275
+ "type": "string",
1276
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1277
+ "required": true,
1278
+ "location": "path"
1279
+ }
1280
+ },
1281
+ "parameterOrder": [
1282
+ "packageName",
1283
+ "editId"
1284
+ ],
1285
+ "request": {
1286
+ "$ref": "AppDetails"
1287
+ },
1288
+ "response": {
1289
+ "$ref": "AppDetails"
1290
+ },
1291
+ "scopes": [
1292
+ "https://www.googleapis.com/auth/androidpublisher"
1293
+ ]
1294
+ },
1295
+ "update": {
1296
+ "id": "androidpublisher.edits.details.update",
1297
+ "path": "{packageName}/edits/{editId}/details",
1298
+ "httpMethod": "PUT",
1299
+ "description": "Updates app details for this edit.",
1300
+ "parameters": {
1301
+ "editId": {
1302
+ "type": "string",
1303
+ "description": "Unique identifier for this edit.",
1304
+ "required": true,
1305
+ "location": "path"
1306
+ },
1307
+ "packageName": {
1308
+ "type": "string",
1309
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1310
+ "required": true,
1311
+ "location": "path"
1312
+ }
1313
+ },
1314
+ "parameterOrder": [
1315
+ "packageName",
1316
+ "editId"
1317
+ ],
1318
+ "request": {
1319
+ "$ref": "AppDetails"
1320
+ },
1321
+ "response": {
1322
+ "$ref": "AppDetails"
1323
+ },
1324
+ "scopes": [
1325
+ "https://www.googleapis.com/auth/androidpublisher"
1326
+ ]
1327
+ }
1328
+ }
1329
+ },
1330
+ "expansionfiles": {
1331
+ "methods": {
1332
+ "get": {
1333
+ "id": "androidpublisher.edits.expansionfiles.get",
1334
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}",
1335
+ "httpMethod": "GET",
1336
+ "description": "Fetches the Expansion File configuration for the APK specified.",
1337
+ "parameters": {
1338
+ "apkVersionCode": {
1339
+ "type": "integer",
1340
+ "description": "The version code of the APK whose Expansion File configuration is being read or modified.",
1341
+ "required": true,
1342
+ "format": "int32",
1343
+ "location": "path"
1344
+ },
1345
+ "editId": {
1346
+ "type": "string",
1347
+ "description": "Unique identifier for this edit.",
1348
+ "required": true,
1349
+ "location": "path"
1350
+ },
1351
+ "expansionFileType": {
1352
+ "type": "string",
1353
+ "required": true,
1354
+ "enum": [
1355
+ "main",
1356
+ "patch"
1357
+ ],
1358
+ "enumDescriptions": [
1359
+ "",
1360
+ ""
1361
+ ],
1362
+ "location": "path"
1363
+ },
1364
+ "packageName": {
1365
+ "type": "string",
1366
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1367
+ "required": true,
1368
+ "location": "path"
1369
+ }
1370
+ },
1371
+ "parameterOrder": [
1372
+ "packageName",
1373
+ "editId",
1374
+ "apkVersionCode",
1375
+ "expansionFileType"
1376
+ ],
1377
+ "response": {
1378
+ "$ref": "ExpansionFile"
1379
+ },
1380
+ "scopes": [
1381
+ "https://www.googleapis.com/auth/androidpublisher"
1382
+ ]
1383
+ },
1384
+ "patch": {
1385
+ "id": "androidpublisher.edits.expansionfiles.patch",
1386
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}",
1387
+ "httpMethod": "PATCH",
1388
+ "description": "Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To add a new Expansion File use the Upload method. This method supports patch semantics.",
1389
+ "parameters": {
1390
+ "apkVersionCode": {
1391
+ "type": "integer",
1392
+ "description": "The version code of the APK whose Expansion File configuration is being read or modified.",
1393
+ "required": true,
1394
+ "format": "int32",
1395
+ "location": "path"
1396
+ },
1397
+ "editId": {
1398
+ "type": "string",
1399
+ "description": "Unique identifier for this edit.",
1400
+ "required": true,
1401
+ "location": "path"
1402
+ },
1403
+ "expansionFileType": {
1404
+ "type": "string",
1405
+ "required": true,
1406
+ "enum": [
1407
+ "main",
1408
+ "patch"
1409
+ ],
1410
+ "enumDescriptions": [
1411
+ "",
1412
+ ""
1413
+ ],
1414
+ "location": "path"
1415
+ },
1416
+ "packageName": {
1417
+ "type": "string",
1418
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1419
+ "required": true,
1420
+ "location": "path"
1421
+ }
1422
+ },
1423
+ "parameterOrder": [
1424
+ "packageName",
1425
+ "editId",
1426
+ "apkVersionCode",
1427
+ "expansionFileType"
1428
+ ],
1429
+ "request": {
1430
+ "$ref": "ExpansionFile"
1431
+ },
1432
+ "response": {
1433
+ "$ref": "ExpansionFile"
1434
+ },
1435
+ "scopes": [
1436
+ "https://www.googleapis.com/auth/androidpublisher"
1437
+ ]
1438
+ },
1439
+ "update": {
1440
+ "id": "androidpublisher.edits.expansionfiles.update",
1441
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}",
1442
+ "httpMethod": "PUT",
1443
+ "description": "Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To add a new Expansion File use the Upload method.",
1444
+ "parameters": {
1445
+ "apkVersionCode": {
1446
+ "type": "integer",
1447
+ "description": "The version code of the APK whose Expansion File configuration is being read or modified.",
1448
+ "required": true,
1449
+ "format": "int32",
1450
+ "location": "path"
1451
+ },
1452
+ "editId": {
1453
+ "type": "string",
1454
+ "description": "Unique identifier for this edit.",
1455
+ "required": true,
1456
+ "location": "path"
1457
+ },
1458
+ "expansionFileType": {
1459
+ "type": "string",
1460
+ "required": true,
1461
+ "enum": [
1462
+ "main",
1463
+ "patch"
1464
+ ],
1465
+ "enumDescriptions": [
1466
+ "",
1467
+ ""
1468
+ ],
1469
+ "location": "path"
1470
+ },
1471
+ "packageName": {
1472
+ "type": "string",
1473
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1474
+ "required": true,
1475
+ "location": "path"
1476
+ }
1477
+ },
1478
+ "parameterOrder": [
1479
+ "packageName",
1480
+ "editId",
1481
+ "apkVersionCode",
1482
+ "expansionFileType"
1483
+ ],
1484
+ "request": {
1485
+ "$ref": "ExpansionFile"
1486
+ },
1487
+ "response": {
1488
+ "$ref": "ExpansionFile"
1489
+ },
1490
+ "scopes": [
1491
+ "https://www.googleapis.com/auth/androidpublisher"
1492
+ ]
1493
+ },
1494
+ "upload": {
1495
+ "id": "androidpublisher.edits.expansionfiles.upload",
1496
+ "path": "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}",
1497
+ "httpMethod": "POST",
1498
+ "description": "Uploads and attaches a new Expansion File to the APK specified.",
1499
+ "parameters": {
1500
+ "apkVersionCode": {
1501
+ "type": "integer",
1502
+ "description": "The version code of the APK whose Expansion File configuration is being read or modified.",
1503
+ "required": true,
1504
+ "format": "int32",
1505
+ "location": "path"
1506
+ },
1507
+ "editId": {
1508
+ "type": "string",
1509
+ "description": "Unique identifier for this edit.",
1510
+ "required": true,
1511
+ "location": "path"
1512
+ },
1513
+ "expansionFileType": {
1514
+ "type": "string",
1515
+ "required": true,
1516
+ "enum": [
1517
+ "main",
1518
+ "patch"
1519
+ ],
1520
+ "enumDescriptions": [
1521
+ "",
1522
+ ""
1523
+ ],
1524
+ "location": "path"
1525
+ },
1526
+ "packageName": {
1527
+ "type": "string",
1528
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1529
+ "required": true,
1530
+ "location": "path"
1531
+ }
1532
+ },
1533
+ "parameterOrder": [
1534
+ "packageName",
1535
+ "editId",
1536
+ "apkVersionCode",
1537
+ "expansionFileType"
1538
+ ],
1539
+ "response": {
1540
+ "$ref": "ExpansionFilesUploadResponse"
1541
+ },
1542
+ "scopes": [
1543
+ "https://www.googleapis.com/auth/androidpublisher"
1544
+ ],
1545
+ "supportsMediaUpload": true,
1546
+ "mediaUpload": {
1547
+ "accept": [
1548
+ "application/octet-stream"
1549
+ ],
1550
+ "maxSize": "2048MB",
1551
+ "protocols": {
1552
+ "simple": {
1553
+ "multipart": true,
1554
+ "path": "/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"
1555
+ },
1556
+ "resumable": {
1557
+ "multipart": true,
1558
+ "path": "/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"
1559
+ }
1560
+ }
1561
+ }
1562
+ }
1563
+ }
1564
+ },
1565
+ "images": {
1566
+ "methods": {
1567
+ "delete": {
1568
+ "id": "androidpublisher.edits.images.delete",
1569
+ "path": "{packageName}/edits/{editId}/listings/{language}/{imageType}/{imageId}",
1570
+ "httpMethod": "DELETE",
1571
+ "description": "Deletes the image (specified by id) from the edit.",
1572
+ "parameters": {
1573
+ "editId": {
1574
+ "type": "string",
1575
+ "description": "Unique identifier for this edit.",
1576
+ "required": true,
1577
+ "location": "path"
1578
+ },
1579
+ "imageId": {
1580
+ "type": "string",
1581
+ "description": "Unique identifier an image within the set of images attached to this edit.",
1582
+ "required": true,
1583
+ "location": "path"
1584
+ },
1585
+ "imageType": {
1586
+ "type": "string",
1587
+ "required": true,
1588
+ "enum": [
1589
+ "featureGraphic",
1590
+ "icon",
1591
+ "phoneScreenshots",
1592
+ "promoGraphic",
1593
+ "sevenInchScreenshots",
1594
+ "tenInchScreenshots",
1595
+ "tvBanner",
1596
+ "tvScreenshots"
1597
+ ],
1598
+ "enumDescriptions": [
1599
+ "",
1600
+ "",
1601
+ "",
1602
+ "",
1603
+ "",
1604
+ "",
1605
+ "",
1606
+ ""
1607
+ ],
1608
+ "location": "path"
1609
+ },
1610
+ "language": {
1611
+ "type": "string",
1612
+ "description": "The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".",
1613
+ "required": true,
1614
+ "location": "path"
1615
+ },
1616
+ "packageName": {
1617
+ "type": "string",
1618
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1619
+ "required": true,
1620
+ "location": "path"
1621
+ }
1622
+ },
1623
+ "parameterOrder": [
1624
+ "packageName",
1625
+ "editId",
1626
+ "language",
1627
+ "imageType",
1628
+ "imageId"
1629
+ ],
1630
+ "scopes": [
1631
+ "https://www.googleapis.com/auth/androidpublisher"
1632
+ ]
1633
+ },
1634
+ "deleteall": {
1635
+ "id": "androidpublisher.edits.images.deleteall",
1636
+ "path": "{packageName}/edits/{editId}/listings/{language}/{imageType}",
1637
+ "httpMethod": "DELETE",
1638
+ "description": "Deletes all images for the specified language and image type.",
1639
+ "parameters": {
1640
+ "editId": {
1641
+ "type": "string",
1642
+ "description": "Unique identifier for this edit.",
1643
+ "required": true,
1644
+ "location": "path"
1645
+ },
1646
+ "imageType": {
1647
+ "type": "string",
1648
+ "required": true,
1649
+ "enum": [
1650
+ "featureGraphic",
1651
+ "icon",
1652
+ "phoneScreenshots",
1653
+ "promoGraphic",
1654
+ "sevenInchScreenshots",
1655
+ "tenInchScreenshots",
1656
+ "tvBanner",
1657
+ "tvScreenshots"
1658
+ ],
1659
+ "enumDescriptions": [
1660
+ "",
1661
+ "",
1662
+ "",
1663
+ "",
1664
+ "",
1665
+ "",
1666
+ "",
1667
+ ""
1668
+ ],
1669
+ "location": "path"
1670
+ },
1671
+ "language": {
1672
+ "type": "string",
1673
+ "description": "The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".",
1674
+ "required": true,
1675
+ "location": "path"
1676
+ },
1677
+ "packageName": {
1678
+ "type": "string",
1679
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1680
+ "required": true,
1681
+ "location": "path"
1682
+ }
1683
+ },
1684
+ "parameterOrder": [
1685
+ "packageName",
1686
+ "editId",
1687
+ "language",
1688
+ "imageType"
1689
+ ],
1690
+ "response": {
1691
+ "$ref": "ImagesDeleteAllResponse"
1692
+ },
1693
+ "scopes": [
1694
+ "https://www.googleapis.com/auth/androidpublisher"
1695
+ ]
1696
+ },
1697
+ "list": {
1698
+ "id": "androidpublisher.edits.images.list",
1699
+ "path": "{packageName}/edits/{editId}/listings/{language}/{imageType}",
1700
+ "httpMethod": "GET",
1701
+ "description": "Lists all images for the specified language and image type.",
1702
+ "parameters": {
1703
+ "editId": {
1704
+ "type": "string",
1705
+ "description": "Unique identifier for this edit.",
1706
+ "required": true,
1707
+ "location": "path"
1708
+ },
1709
+ "imageType": {
1710
+ "type": "string",
1711
+ "required": true,
1712
+ "enum": [
1713
+ "featureGraphic",
1714
+ "icon",
1715
+ "phoneScreenshots",
1716
+ "promoGraphic",
1717
+ "sevenInchScreenshots",
1718
+ "tenInchScreenshots",
1719
+ "tvBanner",
1720
+ "tvScreenshots"
1721
+ ],
1722
+ "enumDescriptions": [
1723
+ "",
1724
+ "",
1725
+ "",
1726
+ "",
1727
+ "",
1728
+ "",
1729
+ "",
1730
+ ""
1731
+ ],
1732
+ "location": "path"
1733
+ },
1734
+ "language": {
1735
+ "type": "string",
1736
+ "description": "The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".",
1737
+ "required": true,
1738
+ "location": "path"
1739
+ },
1740
+ "packageName": {
1741
+ "type": "string",
1742
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1743
+ "required": true,
1744
+ "location": "path"
1745
+ }
1746
+ },
1747
+ "parameterOrder": [
1748
+ "packageName",
1749
+ "editId",
1750
+ "language",
1751
+ "imageType"
1752
+ ],
1753
+ "response": {
1754
+ "$ref": "ImagesListResponse"
1755
+ },
1756
+ "scopes": [
1757
+ "https://www.googleapis.com/auth/androidpublisher"
1758
+ ]
1759
+ },
1760
+ "upload": {
1761
+ "id": "androidpublisher.edits.images.upload",
1762
+ "path": "{packageName}/edits/{editId}/listings/{language}/{imageType}",
1763
+ "httpMethod": "POST",
1764
+ "description": "Uploads a new image and adds it to the list of images for the specified language and image type.",
1765
+ "parameters": {
1766
+ "editId": {
1767
+ "type": "string",
1768
+ "description": "Unique identifier for this edit.",
1769
+ "required": true,
1770
+ "location": "path"
1771
+ },
1772
+ "imageType": {
1773
+ "type": "string",
1774
+ "required": true,
1775
+ "enum": [
1776
+ "featureGraphic",
1777
+ "icon",
1778
+ "phoneScreenshots",
1779
+ "promoGraphic",
1780
+ "sevenInchScreenshots",
1781
+ "tenInchScreenshots",
1782
+ "tvBanner",
1783
+ "tvScreenshots"
1784
+ ],
1785
+ "enumDescriptions": [
1786
+ "",
1787
+ "",
1788
+ "",
1789
+ "",
1790
+ "",
1791
+ "",
1792
+ "",
1793
+ ""
1794
+ ],
1795
+ "location": "path"
1796
+ },
1797
+ "language": {
1798
+ "type": "string",
1799
+ "description": "The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass \"de-AT\".",
1800
+ "required": true,
1801
+ "location": "path"
1802
+ },
1803
+ "packageName": {
1804
+ "type": "string",
1805
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1806
+ "required": true,
1807
+ "location": "path"
1808
+ }
1809
+ },
1810
+ "parameterOrder": [
1811
+ "packageName",
1812
+ "editId",
1813
+ "language",
1814
+ "imageType"
1815
+ ],
1816
+ "response": {
1817
+ "$ref": "ImagesUploadResponse"
1818
+ },
1819
+ "scopes": [
1820
+ "https://www.googleapis.com/auth/androidpublisher"
1821
+ ],
1822
+ "supportsMediaUpload": true,
1823
+ "mediaUpload": {
1824
+ "accept": [
1825
+ "image/*"
1826
+ ],
1827
+ "maxSize": "15MB",
1828
+ "protocols": {
1829
+ "simple": {
1830
+ "multipart": true,
1831
+ "path": "/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}"
1832
+ },
1833
+ "resumable": {
1834
+ "multipart": true,
1835
+ "path": "/resumable/upload/androidpublisher/v2/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}"
1836
+ }
1837
+ }
1838
+ }
1839
+ }
1840
+ }
1841
+ },
1842
+ "listings": {
1843
+ "methods": {
1844
+ "delete": {
1845
+ "id": "androidpublisher.edits.listings.delete",
1846
+ "path": "{packageName}/edits/{editId}/listings/{language}",
1847
+ "httpMethod": "DELETE",
1848
+ "description": "Deletes the specified localized store listing from an edit.",
1849
+ "parameters": {
1850
+ "editId": {
1851
+ "type": "string",
1852
+ "description": "Unique identifier for this edit.",
1853
+ "required": true,
1854
+ "location": "path"
1855
+ },
1856
+ "language": {
1857
+ "type": "string",
1858
+ "description": "The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".",
1859
+ "required": true,
1860
+ "location": "path"
1861
+ },
1862
+ "packageName": {
1863
+ "type": "string",
1864
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1865
+ "required": true,
1866
+ "location": "path"
1867
+ }
1868
+ },
1869
+ "parameterOrder": [
1870
+ "packageName",
1871
+ "editId",
1872
+ "language"
1873
+ ],
1874
+ "scopes": [
1875
+ "https://www.googleapis.com/auth/androidpublisher"
1876
+ ]
1877
+ },
1878
+ "deleteall": {
1879
+ "id": "androidpublisher.edits.listings.deleteall",
1880
+ "path": "{packageName}/edits/{editId}/listings",
1881
+ "httpMethod": "DELETE",
1882
+ "description": "Deletes all localized listings from an edit.",
1883
+ "parameters": {
1884
+ "editId": {
1885
+ "type": "string",
1886
+ "description": "Unique identifier for this edit.",
1887
+ "required": true,
1888
+ "location": "path"
1889
+ },
1890
+ "packageName": {
1891
+ "type": "string",
1892
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1893
+ "required": true,
1894
+ "location": "path"
1895
+ }
1896
+ },
1897
+ "parameterOrder": [
1898
+ "packageName",
1899
+ "editId"
1900
+ ],
1901
+ "scopes": [
1902
+ "https://www.googleapis.com/auth/androidpublisher"
1903
+ ]
1904
+ },
1905
+ "get": {
1906
+ "id": "androidpublisher.edits.listings.get",
1907
+ "path": "{packageName}/edits/{editId}/listings/{language}",
1908
+ "httpMethod": "GET",
1909
+ "description": "Fetches information about a localized store listing.",
1910
+ "parameters": {
1911
+ "editId": {
1912
+ "type": "string",
1913
+ "description": "Unique identifier for this edit.",
1914
+ "required": true,
1915
+ "location": "path"
1916
+ },
1917
+ "language": {
1918
+ "type": "string",
1919
+ "description": "The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".",
1920
+ "required": true,
1921
+ "location": "path"
1922
+ },
1923
+ "packageName": {
1924
+ "type": "string",
1925
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1926
+ "required": true,
1927
+ "location": "path"
1928
+ }
1929
+ },
1930
+ "parameterOrder": [
1931
+ "packageName",
1932
+ "editId",
1933
+ "language"
1934
+ ],
1935
+ "response": {
1936
+ "$ref": "Listing"
1937
+ },
1938
+ "scopes": [
1939
+ "https://www.googleapis.com/auth/androidpublisher"
1940
+ ]
1941
+ },
1942
+ "list": {
1943
+ "id": "androidpublisher.edits.listings.list",
1944
+ "path": "{packageName}/edits/{editId}/listings",
1945
+ "httpMethod": "GET",
1946
+ "description": "Returns all of the localized store listings attached to this edit.",
1947
+ "parameters": {
1948
+ "editId": {
1949
+ "type": "string",
1950
+ "description": "Unique identifier for this edit.",
1951
+ "required": true,
1952
+ "location": "path"
1953
+ },
1954
+ "packageName": {
1955
+ "type": "string",
1956
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1957
+ "required": true,
1958
+ "location": "path"
1959
+ }
1960
+ },
1961
+ "parameterOrder": [
1962
+ "packageName",
1963
+ "editId"
1964
+ ],
1965
+ "response": {
1966
+ "$ref": "ListingsListResponse"
1967
+ },
1968
+ "scopes": [
1969
+ "https://www.googleapis.com/auth/androidpublisher"
1970
+ ]
1971
+ },
1972
+ "patch": {
1973
+ "id": "androidpublisher.edits.listings.patch",
1974
+ "path": "{packageName}/edits/{editId}/listings/{language}",
1975
+ "httpMethod": "PATCH",
1976
+ "description": "Creates or updates a localized store listing. This method supports patch semantics.",
1977
+ "parameters": {
1978
+ "editId": {
1979
+ "type": "string",
1980
+ "description": "Unique identifier for this edit.",
1981
+ "required": true,
1982
+ "location": "path"
1983
+ },
1984
+ "language": {
1985
+ "type": "string",
1986
+ "description": "The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".",
1987
+ "required": true,
1988
+ "location": "path"
1989
+ },
1990
+ "packageName": {
1991
+ "type": "string",
1992
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
1993
+ "required": true,
1994
+ "location": "path"
1995
+ }
1996
+ },
1997
+ "parameterOrder": [
1998
+ "packageName",
1999
+ "editId",
2000
+ "language"
2001
+ ],
2002
+ "request": {
2003
+ "$ref": "Listing"
2004
+ },
2005
+ "response": {
2006
+ "$ref": "Listing"
2007
+ },
2008
+ "scopes": [
2009
+ "https://www.googleapis.com/auth/androidpublisher"
2010
+ ]
2011
+ },
2012
+ "update": {
2013
+ "id": "androidpublisher.edits.listings.update",
2014
+ "path": "{packageName}/edits/{editId}/listings/{language}",
2015
+ "httpMethod": "PUT",
2016
+ "description": "Creates or updates a localized store listing.",
2017
+ "parameters": {
2018
+ "editId": {
2019
+ "type": "string",
2020
+ "description": "Unique identifier for this edit.",
2021
+ "required": true,
2022
+ "location": "path"
2023
+ },
2024
+ "language": {
2025
+ "type": "string",
2026
+ "description": "The language code (a BCP-47 language tag) of the localized listing to read or modify. For example, to select Austrian German, pass \"de-AT\".",
2027
+ "required": true,
2028
+ "location": "path"
2029
+ },
2030
+ "packageName": {
2031
+ "type": "string",
2032
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
2033
+ "required": true,
2034
+ "location": "path"
2035
+ }
2036
+ },
2037
+ "parameterOrder": [
2038
+ "packageName",
2039
+ "editId",
2040
+ "language"
2041
+ ],
2042
+ "request": {
2043
+ "$ref": "Listing"
2044
+ },
2045
+ "response": {
2046
+ "$ref": "Listing"
2047
+ },
2048
+ "scopes": [
2049
+ "https://www.googleapis.com/auth/androidpublisher"
2050
+ ]
2051
+ }
2052
+ }
2053
+ },
2054
+ "testers": {
2055
+ "methods": {
2056
+ "get": {
2057
+ "id": "androidpublisher.edits.testers.get",
2058
+ "path": "{packageName}/edits/{editId}/testers/{track}",
2059
+ "httpMethod": "GET",
2060
+ "parameters": {
2061
+ "editId": {
2062
+ "type": "string",
2063
+ "description": "Unique identifier for this edit.",
2064
+ "required": true,
2065
+ "location": "path"
2066
+ },
2067
+ "packageName": {
2068
+ "type": "string",
2069
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
2070
+ "required": true,
2071
+ "location": "path"
2072
+ },
2073
+ "track": {
2074
+ "type": "string",
2075
+ "required": true,
2076
+ "enum": [
2077
+ "alpha",
2078
+ "beta",
2079
+ "production",
2080
+ "rollout"
2081
+ ],
2082
+ "enumDescriptions": [
2083
+ "",
2084
+ "",
2085
+ "",
2086
+ ""
2087
+ ],
2088
+ "location": "path"
2089
+ }
2090
+ },
2091
+ "parameterOrder": [
2092
+ "packageName",
2093
+ "editId",
2094
+ "track"
2095
+ ],
2096
+ "response": {
2097
+ "$ref": "Testers"
2098
+ },
2099
+ "scopes": [
2100
+ "https://www.googleapis.com/auth/androidpublisher"
2101
+ ]
2102
+ },
2103
+ "patch": {
2104
+ "id": "androidpublisher.edits.testers.patch",
2105
+ "path": "{packageName}/edits/{editId}/testers/{track}",
2106
+ "httpMethod": "PATCH",
2107
+ "parameters": {
2108
+ "editId": {
2109
+ "type": "string",
2110
+ "description": "Unique identifier for this edit.",
2111
+ "required": true,
2112
+ "location": "path"
2113
+ },
2114
+ "packageName": {
2115
+ "type": "string",
2116
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
2117
+ "required": true,
2118
+ "location": "path"
2119
+ },
2120
+ "track": {
2121
+ "type": "string",
2122
+ "required": true,
2123
+ "enum": [
2124
+ "alpha",
2125
+ "beta",
2126
+ "production",
2127
+ "rollout"
2128
+ ],
2129
+ "enumDescriptions": [
2130
+ "",
2131
+ "",
2132
+ "",
2133
+ ""
2134
+ ],
2135
+ "location": "path"
2136
+ }
2137
+ },
2138
+ "parameterOrder": [
2139
+ "packageName",
2140
+ "editId",
2141
+ "track"
2142
+ ],
2143
+ "request": {
2144
+ "$ref": "Testers"
2145
+ },
2146
+ "response": {
2147
+ "$ref": "Testers"
2148
+ },
2149
+ "scopes": [
2150
+ "https://www.googleapis.com/auth/androidpublisher"
2151
+ ]
2152
+ },
2153
+ "update": {
2154
+ "id": "androidpublisher.edits.testers.update",
2155
+ "path": "{packageName}/edits/{editId}/testers/{track}",
2156
+ "httpMethod": "PUT",
2157
+ "parameters": {
2158
+ "editId": {
2159
+ "type": "string",
2160
+ "description": "Unique identifier for this edit.",
2161
+ "required": true,
2162
+ "location": "path"
2163
+ },
2164
+ "packageName": {
2165
+ "type": "string",
2166
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
2167
+ "required": true,
2168
+ "location": "path"
2169
+ },
2170
+ "track": {
2171
+ "type": "string",
2172
+ "required": true,
2173
+ "enum": [
2174
+ "alpha",
2175
+ "beta",
2176
+ "production",
2177
+ "rollout"
2178
+ ],
2179
+ "enumDescriptions": [
2180
+ "",
2181
+ "",
2182
+ "",
2183
+ ""
2184
+ ],
2185
+ "location": "path"
2186
+ }
2187
+ },
2188
+ "parameterOrder": [
2189
+ "packageName",
2190
+ "editId",
2191
+ "track"
2192
+ ],
2193
+ "request": {
2194
+ "$ref": "Testers"
2195
+ },
2196
+ "response": {
2197
+ "$ref": "Testers"
2198
+ },
2199
+ "scopes": [
2200
+ "https://www.googleapis.com/auth/androidpublisher"
2201
+ ]
2202
+ }
2203
+ }
2204
+ },
2205
+ "tracks": {
2206
+ "methods": {
2207
+ "get": {
2208
+ "id": "androidpublisher.edits.tracks.get",
2209
+ "path": "{packageName}/edits/{editId}/tracks/{track}",
2210
+ "httpMethod": "GET",
2211
+ "description": "Fetches the track configuration for the specified track type. Includes the APK version codes that are in this track.",
2212
+ "parameters": {
2213
+ "editId": {
2214
+ "type": "string",
2215
+ "description": "Unique identifier for this edit.",
2216
+ "required": true,
2217
+ "location": "path"
2218
+ },
2219
+ "packageName": {
2220
+ "type": "string",
2221
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
2222
+ "required": true,
2223
+ "location": "path"
2224
+ },
2225
+ "track": {
2226
+ "type": "string",
2227
+ "description": "The track type to read or modify.",
2228
+ "required": true,
2229
+ "enum": [
2230
+ "alpha",
2231
+ "beta",
2232
+ "production",
2233
+ "rollout"
2234
+ ],
2235
+ "enumDescriptions": [
2236
+ "",
2237
+ "",
2238
+ "",
2239
+ ""
2240
+ ],
2241
+ "location": "path"
2242
+ }
2243
+ },
2244
+ "parameterOrder": [
2245
+ "packageName",
2246
+ "editId",
2247
+ "track"
2248
+ ],
2249
+ "response": {
2250
+ "$ref": "Track"
2251
+ },
2252
+ "scopes": [
2253
+ "https://www.googleapis.com/auth/androidpublisher"
2254
+ ]
2255
+ },
2256
+ "list": {
2257
+ "id": "androidpublisher.edits.tracks.list",
2258
+ "path": "{packageName}/edits/{editId}/tracks",
2259
+ "httpMethod": "GET",
2260
+ "description": "Lists all the track configurations for this edit.",
2261
+ "parameters": {
2262
+ "editId": {
2263
+ "type": "string",
2264
+ "description": "Unique identifier for this edit.",
2265
+ "required": true,
2266
+ "location": "path"
2267
+ },
2268
+ "packageName": {
2269
+ "type": "string",
2270
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
2271
+ "required": true,
2272
+ "location": "path"
2273
+ }
2274
+ },
2275
+ "parameterOrder": [
2276
+ "packageName",
2277
+ "editId"
2278
+ ],
2279
+ "response": {
2280
+ "$ref": "TracksListResponse"
2281
+ },
2282
+ "scopes": [
2283
+ "https://www.googleapis.com/auth/androidpublisher"
2284
+ ]
2285
+ },
2286
+ "patch": {
2287
+ "id": "androidpublisher.edits.tracks.patch",
2288
+ "path": "{packageName}/edits/{editId}/tracks/{track}",
2289
+ "httpMethod": "PATCH",
2290
+ "description": "Updates the track configuration for the specified track type. This method supports patch semantics.",
2291
+ "parameters": {
2292
+ "editId": {
2293
+ "type": "string",
2294
+ "description": "Unique identifier for this edit.",
2295
+ "required": true,
2296
+ "location": "path"
2297
+ },
2298
+ "packageName": {
2299
+ "type": "string",
2300
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
2301
+ "required": true,
2302
+ "location": "path"
2303
+ },
2304
+ "track": {
2305
+ "type": "string",
2306
+ "description": "The track type to read or modify.",
2307
+ "required": true,
2308
+ "enum": [
2309
+ "alpha",
2310
+ "beta",
2311
+ "production",
2312
+ "rollout"
2313
+ ],
2314
+ "enumDescriptions": [
2315
+ "",
2316
+ "",
2317
+ "",
2318
+ ""
2319
+ ],
2320
+ "location": "path"
2321
+ }
2322
+ },
2323
+ "parameterOrder": [
2324
+ "packageName",
2325
+ "editId",
2326
+ "track"
2327
+ ],
2328
+ "request": {
2329
+ "$ref": "Track"
2330
+ },
2331
+ "response": {
2332
+ "$ref": "Track"
2333
+ },
2334
+ "scopes": [
2335
+ "https://www.googleapis.com/auth/androidpublisher"
2336
+ ]
2337
+ },
2338
+ "update": {
2339
+ "id": "androidpublisher.edits.tracks.update",
2340
+ "path": "{packageName}/edits/{editId}/tracks/{track}",
2341
+ "httpMethod": "PUT",
2342
+ "description": "Updates the track configuration for the specified track type.",
2343
+ "parameters": {
2344
+ "editId": {
2345
+ "type": "string",
2346
+ "description": "Unique identifier for this edit.",
2347
+ "required": true,
2348
+ "location": "path"
2349
+ },
2350
+ "packageName": {
2351
+ "type": "string",
2352
+ "description": "Unique identifier for the Android app that is being updated; for example, \"com.spiffygame\".",
2353
+ "required": true,
2354
+ "location": "path"
2355
+ },
2356
+ "track": {
2357
+ "type": "string",
2358
+ "description": "The track type to read or modify.",
2359
+ "required": true,
2360
+ "enum": [
2361
+ "alpha",
2362
+ "beta",
2363
+ "production",
2364
+ "rollout"
2365
+ ],
2366
+ "enumDescriptions": [
2367
+ "",
2368
+ "",
2369
+ "",
2370
+ ""
2371
+ ],
2372
+ "location": "path"
2373
+ }
2374
+ },
2375
+ "parameterOrder": [
2376
+ "packageName",
2377
+ "editId",
2378
+ "track"
2379
+ ],
2380
+ "request": {
2381
+ "$ref": "Track"
2382
+ },
2383
+ "response": {
2384
+ "$ref": "Track"
2385
+ },
2386
+ "scopes": [
2387
+ "https://www.googleapis.com/auth/androidpublisher"
2388
+ ]
2389
+ }
2390
+ }
2391
+ }
2392
+ }
2393
+ },
2394
+ "inappproducts": {
2395
+ "methods": {
2396
+ "batch": {
2397
+ "id": "androidpublisher.inappproducts.batch",
2398
+ "path": "inappproducts/batch",
2399
+ "httpMethod": "POST",
2400
+ "request": {
2401
+ "$ref": "InappproductsBatchRequest"
2402
+ },
2403
+ "response": {
2404
+ "$ref": "InappproductsBatchResponse"
2405
+ },
2406
+ "scopes": [
2407
+ "https://www.googleapis.com/auth/androidpublisher"
2408
+ ]
2409
+ },
2410
+ "delete": {
2411
+ "id": "androidpublisher.inappproducts.delete",
2412
+ "path": "{packageName}/inappproducts/{sku}",
2413
+ "httpMethod": "DELETE",
2414
+ "description": "Delete an in-app product for an app.",
2415
+ "parameters": {
2416
+ "packageName": {
2417
+ "type": "string",
2418
+ "description": "Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".",
2419
+ "required": true,
2420
+ "location": "path"
2421
+ },
2422
+ "sku": {
2423
+ "type": "string",
2424
+ "description": "Unique identifier for the in-app product.",
2425
+ "required": true,
2426
+ "location": "path"
2427
+ }
2428
+ },
2429
+ "parameterOrder": [
2430
+ "packageName",
2431
+ "sku"
2432
+ ],
2433
+ "scopes": [
2434
+ "https://www.googleapis.com/auth/androidpublisher"
2435
+ ]
2436
+ },
2437
+ "get": {
2438
+ "id": "androidpublisher.inappproducts.get",
2439
+ "path": "{packageName}/inappproducts/{sku}",
2440
+ "httpMethod": "GET",
2441
+ "description": "Returns information about the in-app product specified.",
2442
+ "parameters": {
2443
+ "packageName": {
2444
+ "type": "string",
2445
+ "required": true,
2446
+ "location": "path"
2447
+ },
2448
+ "sku": {
2449
+ "type": "string",
2450
+ "description": "Unique identifier for the in-app product.",
2451
+ "required": true,
2452
+ "location": "path"
2453
+ }
2454
+ },
2455
+ "parameterOrder": [
2456
+ "packageName",
2457
+ "sku"
2458
+ ],
2459
+ "response": {
2460
+ "$ref": "InAppProduct"
2461
+ },
2462
+ "scopes": [
2463
+ "https://www.googleapis.com/auth/androidpublisher"
2464
+ ]
2465
+ },
2466
+ "insert": {
2467
+ "id": "androidpublisher.inappproducts.insert",
2468
+ "path": "{packageName}/inappproducts",
2469
+ "httpMethod": "POST",
2470
+ "description": "Creates a new in-app product for an app.",
2471
+ "parameters": {
2472
+ "autoConvertMissingPrices": {
2473
+ "type": "boolean",
2474
+ "description": "If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.",
2475
+ "location": "query"
2476
+ },
2477
+ "packageName": {
2478
+ "type": "string",
2479
+ "description": "Unique identifier for the Android app; for example, \"com.spiffygame\".",
2480
+ "required": true,
2481
+ "location": "path"
2482
+ }
2483
+ },
2484
+ "parameterOrder": [
2485
+ "packageName"
2486
+ ],
2487
+ "request": {
2488
+ "$ref": "InAppProduct"
2489
+ },
2490
+ "response": {
2491
+ "$ref": "InAppProduct"
2492
+ },
2493
+ "scopes": [
2494
+ "https://www.googleapis.com/auth/androidpublisher"
2495
+ ]
2496
+ },
2497
+ "list": {
2498
+ "id": "androidpublisher.inappproducts.list",
2499
+ "path": "{packageName}/inappproducts",
2500
+ "httpMethod": "GET",
2501
+ "description": "List all the in-app products for an Android app, both subscriptions and managed in-app products..",
2502
+ "parameters": {
2503
+ "maxResults": {
2504
+ "type": "integer",
2505
+ "format": "uint32",
2506
+ "location": "query"
2507
+ },
2508
+ "packageName": {
2509
+ "type": "string",
2510
+ "description": "Unique identifier for the Android app with in-app products; for example, \"com.spiffygame\".",
2511
+ "required": true,
2512
+ "location": "path"
2513
+ },
2514
+ "startIndex": {
2515
+ "type": "integer",
2516
+ "format": "uint32",
2517
+ "location": "query"
2518
+ },
2519
+ "token": {
2520
+ "type": "string",
2521
+ "location": "query"
2522
+ }
2523
+ },
2524
+ "parameterOrder": [
2525
+ "packageName"
2526
+ ],
2527
+ "response": {
2528
+ "$ref": "InappproductsListResponse"
2529
+ },
2530
+ "scopes": [
2531
+ "https://www.googleapis.com/auth/androidpublisher"
2532
+ ]
2533
+ },
2534
+ "patch": {
2535
+ "id": "androidpublisher.inappproducts.patch",
2536
+ "path": "{packageName}/inappproducts/{sku}",
2537
+ "httpMethod": "PATCH",
2538
+ "description": "Updates the details of an in-app product. This method supports patch semantics.",
2539
+ "parameters": {
2540
+ "autoConvertMissingPrices": {
2541
+ "type": "boolean",
2542
+ "description": "If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.",
2543
+ "location": "query"
2544
+ },
2545
+ "packageName": {
2546
+ "type": "string",
2547
+ "description": "Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".",
2548
+ "required": true,
2549
+ "location": "path"
2550
+ },
2551
+ "sku": {
2552
+ "type": "string",
2553
+ "description": "Unique identifier for the in-app product.",
2554
+ "required": true,
2555
+ "location": "path"
2556
+ }
2557
+ },
2558
+ "parameterOrder": [
2559
+ "packageName",
2560
+ "sku"
2561
+ ],
2562
+ "request": {
2563
+ "$ref": "InAppProduct"
2564
+ },
2565
+ "response": {
2566
+ "$ref": "InAppProduct"
2567
+ },
2568
+ "scopes": [
2569
+ "https://www.googleapis.com/auth/androidpublisher"
2570
+ ]
2571
+ },
2572
+ "update": {
2573
+ "id": "androidpublisher.inappproducts.update",
2574
+ "path": "{packageName}/inappproducts/{sku}",
2575
+ "httpMethod": "PUT",
2576
+ "description": "Updates the details of an in-app product.",
2577
+ "parameters": {
2578
+ "autoConvertMissingPrices": {
2579
+ "type": "boolean",
2580
+ "description": "If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.",
2581
+ "location": "query"
2582
+ },
2583
+ "packageName": {
2584
+ "type": "string",
2585
+ "description": "Unique identifier for the Android app with the in-app product; for example, \"com.spiffygame\".",
2586
+ "required": true,
2587
+ "location": "path"
2588
+ },
2589
+ "sku": {
2590
+ "type": "string",
2591
+ "description": "Unique identifier for the in-app product.",
2592
+ "required": true,
2593
+ "location": "path"
2594
+ }
2595
+ },
2596
+ "parameterOrder": [
2597
+ "packageName",
2598
+ "sku"
2599
+ ],
2600
+ "request": {
2601
+ "$ref": "InAppProduct"
2602
+ },
2603
+ "response": {
2604
+ "$ref": "InAppProduct"
2605
+ },
2606
+ "scopes": [
2607
+ "https://www.googleapis.com/auth/androidpublisher"
2608
+ ]
2609
+ }
2610
+ }
2611
+ },
2612
+ "purchases": {
2613
+ "resources": {
2614
+ "products": {
2615
+ "methods": {
2616
+ "get": {
2617
+ "id": "androidpublisher.purchases.products.get",
2618
+ "path": "{packageName}/purchases/products/{productId}/tokens/{token}",
2619
+ "httpMethod": "GET",
2620
+ "description": "Checks the purchase and consumption status of an inapp item.",
2621
+ "parameters": {
2622
+ "packageName": {
2623
+ "type": "string",
2624
+ "description": "The package name of the application the inapp product was sold in (for example, 'com.some.thing').",
2625
+ "required": true,
2626
+ "location": "path"
2627
+ },
2628
+ "productId": {
2629
+ "type": "string",
2630
+ "description": "The inapp product SKU (for example, 'com.some.thing.inapp1').",
2631
+ "required": true,
2632
+ "location": "path"
2633
+ },
2634
+ "token": {
2635
+ "type": "string",
2636
+ "description": "The token provided to the user's device when the inapp product was purchased.",
2637
+ "required": true,
2638
+ "location": "path"
2639
+ }
2640
+ },
2641
+ "parameterOrder": [
2642
+ "packageName",
2643
+ "productId",
2644
+ "token"
2645
+ ],
2646
+ "response": {
2647
+ "$ref": "ProductPurchase"
2648
+ },
2649
+ "scopes": [
2650
+ "https://www.googleapis.com/auth/androidpublisher"
2651
+ ]
2652
+ }
2653
+ }
2654
+ },
2655
+ "subscriptions": {
2656
+ "methods": {
2657
+ "cancel": {
2658
+ "id": "androidpublisher.purchases.subscriptions.cancel",
2659
+ "path": "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel",
2660
+ "httpMethod": "POST",
2661
+ "description": "Cancels a user's subscription purchase. The subscription remains valid until its expiration time.",
2662
+ "parameters": {
2663
+ "packageName": {
2664
+ "type": "string",
2665
+ "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').",
2666
+ "required": true,
2667
+ "location": "path"
2668
+ },
2669
+ "subscriptionId": {
2670
+ "type": "string",
2671
+ "description": "The purchased subscription ID (for example, 'monthly001').",
2672
+ "required": true,
2673
+ "location": "path"
2674
+ },
2675
+ "token": {
2676
+ "type": "string",
2677
+ "description": "The token provided to the user's device when the subscription was purchased.",
2678
+ "required": true,
2679
+ "location": "path"
2680
+ }
2681
+ },
2682
+ "parameterOrder": [
2683
+ "packageName",
2684
+ "subscriptionId",
2685
+ "token"
2686
+ ],
2687
+ "scopes": [
2688
+ "https://www.googleapis.com/auth/androidpublisher"
2689
+ ]
2690
+ },
2691
+ "defer": {
2692
+ "id": "androidpublisher.purchases.subscriptions.defer",
2693
+ "path": "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:defer",
2694
+ "httpMethod": "POST",
2695
+ "description": "Defers a user's subscription purchase until a specified future expiration time.",
2696
+ "parameters": {
2697
+ "packageName": {
2698
+ "type": "string",
2699
+ "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').",
2700
+ "required": true,
2701
+ "location": "path"
2702
+ },
2703
+ "subscriptionId": {
2704
+ "type": "string",
2705
+ "description": "The purchased subscription ID (for example, 'monthly001').",
2706
+ "required": true,
2707
+ "location": "path"
2708
+ },
2709
+ "token": {
2710
+ "type": "string",
2711
+ "description": "The token provided to the user's device when the subscription was purchased.",
2712
+ "required": true,
2713
+ "location": "path"
2714
+ }
2715
+ },
2716
+ "parameterOrder": [
2717
+ "packageName",
2718
+ "subscriptionId",
2719
+ "token"
2720
+ ],
2721
+ "request": {
2722
+ "$ref": "SubscriptionPurchasesDeferRequest"
2723
+ },
2724
+ "response": {
2725
+ "$ref": "SubscriptionPurchasesDeferResponse"
2726
+ },
2727
+ "scopes": [
2728
+ "https://www.googleapis.com/auth/androidpublisher"
2729
+ ]
2730
+ },
2731
+ "get": {
2732
+ "id": "androidpublisher.purchases.subscriptions.get",
2733
+ "path": "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}",
2734
+ "httpMethod": "GET",
2735
+ "description": "Checks whether a user's subscription purchase is valid and returns its expiry time.",
2736
+ "parameters": {
2737
+ "packageName": {
2738
+ "type": "string",
2739
+ "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').",
2740
+ "required": true,
2741
+ "location": "path"
2742
+ },
2743
+ "subscriptionId": {
2744
+ "type": "string",
2745
+ "description": "The purchased subscription ID (for example, 'monthly001').",
2746
+ "required": true,
2747
+ "location": "path"
2748
+ },
2749
+ "token": {
2750
+ "type": "string",
2751
+ "description": "The token provided to the user's device when the subscription was purchased.",
2752
+ "required": true,
2753
+ "location": "path"
2754
+ }
2755
+ },
2756
+ "parameterOrder": [
2757
+ "packageName",
2758
+ "subscriptionId",
2759
+ "token"
2760
+ ],
2761
+ "response": {
2762
+ "$ref": "SubscriptionPurchase"
2763
+ },
2764
+ "scopes": [
2765
+ "https://www.googleapis.com/auth/androidpublisher"
2766
+ ]
2767
+ },
2768
+ "refund": {
2769
+ "id": "androidpublisher.purchases.subscriptions.refund",
2770
+ "path": "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:refund",
2771
+ "httpMethod": "POST",
2772
+ "description": "Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.",
2773
+ "parameters": {
2774
+ "packageName": {
2775
+ "type": "string",
2776
+ "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').",
2777
+ "required": true,
2778
+ "location": "path"
2779
+ },
2780
+ "subscriptionId": {
2781
+ "type": "string",
2782
+ "description": "The purchased subscription ID (for example, 'monthly001').",
2783
+ "required": true,
2784
+ "location": "path"
2785
+ },
2786
+ "token": {
2787
+ "type": "string",
2788
+ "description": "The token provided to the user's device when the subscription was purchased.",
2789
+ "required": true,
2790
+ "location": "path"
2791
+ }
2792
+ },
2793
+ "parameterOrder": [
2794
+ "packageName",
2795
+ "subscriptionId",
2796
+ "token"
2797
+ ],
2798
+ "scopes": [
2799
+ "https://www.googleapis.com/auth/androidpublisher"
2800
+ ]
2801
+ },
2802
+ "revoke": {
2803
+ "id": "androidpublisher.purchases.subscriptions.revoke",
2804
+ "path": "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:revoke",
2805
+ "httpMethod": "POST",
2806
+ "description": "Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.",
2807
+ "parameters": {
2808
+ "packageName": {
2809
+ "type": "string",
2810
+ "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').",
2811
+ "required": true,
2812
+ "location": "path"
2813
+ },
2814
+ "subscriptionId": {
2815
+ "type": "string",
2816
+ "description": "The purchased subscription ID (for example, 'monthly001').",
2817
+ "required": true,
2818
+ "location": "path"
2819
+ },
2820
+ "token": {
2821
+ "type": "string",
2822
+ "description": "The token provided to the user's device when the subscription was purchased.",
2823
+ "required": true,
2824
+ "location": "path"
2825
+ }
2826
+ },
2827
+ "parameterOrder": [
2828
+ "packageName",
2829
+ "subscriptionId",
2830
+ "token"
2831
+ ],
2832
+ "scopes": [
2833
+ "https://www.googleapis.com/auth/androidpublisher"
2834
+ ]
2835
+ }
2836
+ }
2837
+ }
2838
+ }
2839
+ }
2840
+ }
2841
+ }