candy_check 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }