app_store_connect 0.29.0 → 0.38.0

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +12 -0
  3. data/.github/workflows/default.yml +34 -25
  4. data/.gitignore +0 -1
  5. data/.rubocop.yml +6 -2
  6. data/CHANGELOG.md +443 -0
  7. data/Gemfile.lock +201 -0
  8. data/README.md +113 -11
  9. data/app_store_connect.gemspec +8 -4
  10. data/assets/banner.png +0 -0
  11. data/bin/console +10 -0
  12. data/lib/app_store_connect/app_store_version_build_linkage_request.rb +1 -3
  13. data/lib/app_store_connect/app_store_version_create_request.rb +1 -3
  14. data/lib/app_store_connect/app_store_version_phased_release_create_request.rb +1 -3
  15. data/lib/app_store_connect/app_store_version_phased_release_update_request.rb +1 -3
  16. data/lib/app_store_connect/app_store_version_release_request_create_request.rb +1 -3
  17. data/lib/app_store_connect/app_store_version_update_request.rb +1 -3
  18. data/lib/app_store_connect/base.rb +83 -0
  19. data/lib/app_store_connect/beta_build_localization_create_request.rb +14 -0
  20. data/lib/app_store_connect/beta_build_localization_modify_request.rb +14 -0
  21. data/lib/app_store_connect/build_update_request.rb +1 -3
  22. data/lib/app_store_connect/bundle_id_capability_create_request.rb +1 -3
  23. data/lib/app_store_connect/bundle_id_create_request.rb +1 -3
  24. data/lib/app_store_connect/certificate_create_request.rb +1 -3
  25. data/lib/app_store_connect/client/builder.rb +91 -0
  26. data/lib/app_store_connect/client.rb +45 -71
  27. data/lib/app_store_connect/device_create_request.rb +1 -3
  28. data/lib/app_store_connect/object/data.rb +19 -7
  29. data/lib/app_store_connect/object/data_type.rb +23 -0
  30. data/lib/app_store_connect/object/included.rb +27 -0
  31. data/lib/app_store_connect/profile_create_request.rb +1 -3
  32. data/lib/app_store_connect/request/body.rb +26 -0
  33. data/lib/app_store_connect/request/builder/create.rb +69 -0
  34. data/lib/app_store_connect/request.rb +2 -2
  35. data/lib/app_store_connect/requests/delete_with_body.rb +11 -0
  36. data/lib/app_store_connect/requests/v1/app_store_version_localization/create.rb +25 -0
  37. data/lib/app_store_connect/requests/v1/app_store_version_localization/update.rb +25 -0
  38. data/lib/app_store_connect/requests/v1/beta_app_review_submission/create.rb +15 -0
  39. data/lib/app_store_connect/requests/v1/build_beta_detail/update.rb +20 -0
  40. data/lib/app_store_connect/requests/v1/build_beta_groups/create.rb +16 -0
  41. data/lib/app_store_connect/requests/v1/build_beta_groups/delete.rb +16 -0
  42. data/lib/app_store_connect/requests/v1/in_app_purchase_localization/create.rb +21 -0
  43. data/lib/app_store_connect/requests/v1/in_app_purchase_localization/update.rb +21 -0
  44. data/lib/app_store_connect/requests/v1/in_app_purchase_price_schedule/create.rb +15 -0
  45. data/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/create.rb +20 -0
  46. data/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/update.rb +21 -0
  47. data/lib/app_store_connect/requests/v1/in_app_purchase_submission/create.rb +15 -0
  48. data/lib/app_store_connect/requests/v2/in_app_purchase/create.rb +24 -0
  49. data/lib/app_store_connect/requests/v2/in_app_purchase/update.rb +23 -0
  50. data/lib/app_store_connect/review_submission_create_request.rb +1 -3
  51. data/lib/app_store_connect/review_submission_item_create_request.rb +1 -3
  52. data/lib/app_store_connect/review_submission_update_request.rb +1 -3
  53. data/lib/app_store_connect/specification/component/schema.rb +25 -0
  54. data/lib/app_store_connect/specification.rb +54 -0
  55. data/lib/app_store_connect/user_invitation_create_request.rb +1 -3
  56. data/lib/app_store_connect/version.rb +1 -1
  57. data/lib/app_store_connect.rb +4 -22
  58. data/lib/config/schema.json +175 -22
  59. data/lib/tasks/bundle.rake +7 -0
  60. data/lib/tasks/changelog.rake +17 -0
  61. data/lib/tasks/git.rake +19 -0
  62. data/lib/tasks/push.rake +18 -0
  63. data/lib/tasks/release.rake +11 -12
  64. data/lib/tasks/version.rake +4 -1
  65. metadata +98 -15
  66. data/lib/app_store_connect/create_request.rb +0 -14
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ class Client
5
+ class Builder
6
+ TEMPLATE = <<~'SOURCE'
7
+ # frozen_string_literal: true
8
+
9
+ # WARNING ABOUT GENERATED CODE
10
+ #
11
+ # This file is generated.
12
+ #
13
+ # WARNING ABOUT GENERATED CODE
14
+
15
+ module AppStoreConnect
16
+ class Client < Base
17
+ <%- web_service_endpoints.each do |web_service_endpoint| -%>
18
+ #
19
+ # @see <%= web_service_endpoint.delete(:see) %>
20
+ #
21
+ def <%= web_service_endpoint.delete(:alias) -%>(**kwargs)
22
+ web_service_endpoint = Schema::WebServiceEndpoint.new(
23
+ <%= web_service_endpoint.sort.to_h %>
24
+ )
25
+
26
+ call(web_service_endpoint, **kwargs)
27
+ end
28
+
29
+ <%- end -%>
30
+ end
31
+ end
32
+ SOURCE
33
+ private_constant :TEMPLATE
34
+
35
+ def web_service_endpoints
36
+ [
37
+ {
38
+ "alias": 'create_certificate',
39
+ "http_method": 'post',
40
+ "url": 'https://api.appstoreconnect.apple.com/v1/certificates',
41
+ "http_body_type": 'CertificateCreateRequest',
42
+ "see": 'https://developer.apple.com/documentation/appstoreconnectapi'
43
+ },
44
+ {
45
+ "http_method": 'delete',
46
+ "url": 'https://api.appstoreconnect.apple.com/v1/users/{id}/relationships/visibleApps',
47
+ "alias": 'delete_visible_app',
48
+ "see": 'https://developer.apple.com/documentation/appstoreconnectapi'
49
+ },
50
+ {
51
+ "alias": 'create_bundle_id',
52
+ "url": 'https://api.appstoreconnect.apple.com/v1/bundleIds',
53
+ "http_body_type": 'BundleIdCreateRequest',
54
+ "http_method": 'post',
55
+ "see": 'https://developer.apple.com/documentation/appstoreconnectapi/register_a_new_bundle_id'
56
+ },
57
+ {
58
+ "alias": 'create_bundle_id_capability',
59
+ "url": 'https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities',
60
+ "http_body_type": 'BundleIdCapabilityCreateRequest',
61
+ "http_method": 'post',
62
+ "see": 'https://developer.apple.com/documentation/appstoreconnectapi'
63
+ },
64
+ {
65
+ "alias": 'create_beta_build_localization',
66
+ "url": 'https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations',
67
+ "http_body_type": 'BetaBuildLocalizationCreateRequest',
68
+ "http_method": 'post',
69
+ "see": 'https://developer.apple.com/documentation/appstoreconnectapi'
70
+ }
71
+ ].map(&:symbolize_keys)
72
+ end
73
+
74
+ def write
75
+ File.write('lib/app_store_connect/client.rb', source)
76
+ end
77
+
78
+ def source
79
+ @source ||= begin
80
+ require 'erb'
81
+
82
+ erb = ERB.new(TEMPLATE, trim_mode: '%-')
83
+
84
+ erb.result(binding)
85
+ end
86
+
87
+ @source
88
+ end
89
+ end
90
+ end
91
+ end
@@ -1,92 +1,66 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/all'
4
-
5
- require 'app_store_connect/request'
6
- require 'app_store_connect/schema'
7
- require 'app_store_connect/client/authorization'
8
- require 'app_store_connect/client/options'
9
- require 'app_store_connect/client/registry'
10
- require 'app_store_connect/client/utils'
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated.
6
+ #
7
+ # WARNING ABOUT GENERATED CODE
11
8
 
12
9
  module AppStoreConnect
13
- class Client
14
- def initialize(**kwargs)
15
- @options = Options.new(kwargs)
16
- @authorization = Authorization.new(@options.slice(*Authorization::OPTIONS))
17
- @registry = Registry.new(@options.slice(*Registry::OPTIONS))
18
- end
19
-
20
- def respond_to_missing?(method_name, include_private = false)
21
- web_service_endpoint_aliases.include?(method_name) || super
22
- end
23
-
24
- def method_missing(method_name, **kwargs)
25
- super unless web_service_endpoint_aliases.include?(method_name)
26
-
27
- web_service_endpoint = web_service_endpoint_by(method_name)
10
+ class Client < Base
11
+ #
12
+ # @see https://developer.apple.com/documentation/appstoreconnectapi
13
+ #
14
+ def create_certificate(**kwargs)
15
+ web_service_endpoint = Schema::WebServiceEndpoint.new(
16
+ { http_body_type: 'CertificateCreateRequest', http_method: 'post', url: 'https://api.appstoreconnect.apple.com/v1/certificates' }
17
+ )
28
18
 
29
19
  call(web_service_endpoint, **kwargs)
30
20
  end
31
21
 
32
- # :nocov:
33
- def inspect
34
- "#<#{self.class.name}:#{object_id}>"
35
- end
36
- # :nocov:
22
+ #
23
+ # @see https://developer.apple.com/documentation/appstoreconnectapi
24
+ #
25
+ def delete_visible_app(**kwargs)
26
+ web_service_endpoint = Schema::WebServiceEndpoint.new(
27
+ { http_method: 'delete', url: 'https://api.appstoreconnect.apple.com/v1/users/{id}/relationships/visibleApps' }
28
+ )
37
29
 
38
- def web_service_endpoint_aliases
39
- @registry.keys
30
+ call(web_service_endpoint, **kwargs)
40
31
  end
41
32
 
42
- private
43
-
44
- def call(web_service_endpoint, **kwargs)
45
- raise "invalid http method: #{web_service_endpoint.http_method}" unless %i[get delete post patch].include?(web_service_endpoint.http_method)
46
-
47
- request = build_request(web_service_endpoint, **kwargs)
33
+ #
34
+ # @see https://developer.apple.com/documentation/appstoreconnectapi/register_a_new_bundle_id
35
+ #
36
+ def create_bundle_id(**kwargs)
37
+ web_service_endpoint = Schema::WebServiceEndpoint.new(
38
+ { http_body_type: 'BundleIdCreateRequest', http_method: 'post', url: 'https://api.appstoreconnect.apple.com/v1/bundleIds' }
39
+ )
48
40
 
49
- response = request.execute
50
-
51
- Utils.decode(response.body, response.content_type) if response.body
52
- end
53
-
54
- def build_uri(web_service_endpoint, **kwargs)
55
- URI(web_service_endpoint
56
- .url
57
- .gsub(/(\{(\w+)\})/) { kwargs.fetch(Regexp.last_match(2).to_sym) })
41
+ call(web_service_endpoint, **kwargs)
58
42
  end
59
43
 
60
- def web_service_endpoint_by(alias_sym)
61
- @registry[alias_sym]
62
- end
44
+ #
45
+ # @see https://developer.apple.com/documentation/appstoreconnectapi
46
+ #
47
+ def create_bundle_id_capability(**kwargs)
48
+ web_service_endpoint = Schema::WebServiceEndpoint.new(
49
+ { http_body_type: 'BundleIdCapabilityCreateRequest', http_method: 'post', url: 'https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities' }
50
+ )
63
51
 
64
- def http_body(web_service_endpoint, **kwargs)
65
- Utils.encode("AppStoreConnect::#{web_service_endpoint.http_body_type}"
66
- .constantize
67
- .new(**kwargs)
68
- .to_h)
52
+ call(web_service_endpoint, **kwargs)
69
53
  end
70
54
 
71
- def build_request(web_service_endpoint, **kwargs)
72
- options = {
73
- kwargs: kwargs,
74
- web_service_endpoint: web_service_endpoint,
75
- http_method: web_service_endpoint.http_method,
76
- uri: build_uri(web_service_endpoint, **kwargs),
77
- headers: headers
78
- }
79
-
80
- options[:http_body] = http_body(web_service_endpoint, **kwargs) if %i[post patch].include?(web_service_endpoint.http_method)
55
+ #
56
+ # @see https://developer.apple.com/documentation/appstoreconnectapi
57
+ #
58
+ def create_beta_build_localization(**kwargs)
59
+ web_service_endpoint = Schema::WebServiceEndpoint.new(
60
+ { http_body_type: 'BetaBuildLocalizationCreateRequest', http_method: 'post', url: 'https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations' }
61
+ )
81
62
 
82
- Request.new(**options)
83
- end
84
-
85
- def headers
86
- {
87
- 'Authorization' => "Bearer #{@authorization.token}",
88
- 'Content-Type' => 'application/json'
89
- }
63
+ call(web_service_endpoint, **kwargs)
90
64
  end
91
65
  end
92
66
  end
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'app_store_connect/create_request'
4
-
5
3
  module AppStoreConnect
6
- class DeviceCreateRequest < CreateRequest
4
+ class DeviceCreateRequest < Request::Body
7
5
  data do
8
6
  type 'devices'
9
7
 
@@ -11,12 +11,14 @@ module AppStoreConnect
11
11
  attr_reader :data
12
12
 
13
13
  klass = Class.new do |data|
14
+ include Object::DataType
14
15
  include Object::Attributes
15
16
  include Object::Type
16
17
  include Object::Id
17
18
 
18
19
  data.send(:define_method, :initialize) do |**kwargs|
19
20
  instance_variable_set('@relationships', kwargs.delete(:relationships).to_h)
21
+ instance_variable_set('@data', Array(kwargs.delete(:data)))
20
22
  instance_variable_set('@attributes', data::Attributes.new(**kwargs))
21
23
  instance_variable_set('@id', kwargs[id_arg_name])
22
24
  end
@@ -30,19 +32,29 @@ module AppStoreConnect
30
32
  props[:id] = @id if id?
31
33
  props.reject { |_k, v| v.blank? }
32
34
  end
33
- end
34
35
 
35
- const_set('Data', klass)
36
+ def to_a
37
+ @data.each do |item|
38
+ item[:type] = type
39
+ end
40
+ @data
41
+ end
36
42
 
37
- def to_h
38
- {
39
- data: data.to_h
40
- }
43
+ def to_data_type
44
+ if data_type == Array
45
+ to_a
46
+ else
47
+ to_h
48
+ end
49
+ end
41
50
  end
51
+
52
+ const_set('Data', klass)
42
53
  end
43
54
 
44
55
  class_methods do
45
- def data(&block)
56
+ def data(type = Hash, &block)
57
+ self::Data.data_type = type
46
58
  self::Data.class_eval(&block)
47
59
  end
48
60
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+
5
+ module AppStoreConnect
6
+ module Object
7
+ module DataType
8
+ extend ActiveSupport::Concern
9
+
10
+ class_methods do
11
+ def data_type=(type)
12
+ @data_type = type
13
+ end
14
+ end
15
+
16
+ included do
17
+ def data_type
18
+ self.class.instance_variable_get('@data_type')
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+
5
+ module AppStoreConnect
6
+ module Object
7
+ module Included
8
+ extend ActiveSupport::Concern
9
+
10
+ included do
11
+ attr_reader :included
12
+
13
+ klass = Class.new do |i|
14
+ i.send(:define_method, :initialize) do |objects|
15
+ instance_variable_set('@objects', [*objects])
16
+ end
17
+
18
+ def to_a
19
+ @objects
20
+ end
21
+ end
22
+
23
+ const_set('Included', klass)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'app_store_connect/create_request'
4
-
5
3
  module AppStoreConnect
6
- class ProfileCreateRequest < CreateRequest
4
+ class ProfileCreateRequest < Request::Body
7
5
  data do
8
6
  type 'profiles'
9
7
 
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ class Request
5
+ class Body
6
+ def self.inherited(klass)
7
+ super
8
+
9
+ klass.include(Object::Included)
10
+ klass.include(Object::Data)
11
+ end
12
+
13
+ def initialize(**kwargs)
14
+ @included = self.class::Included.new([*kwargs.delete(:included)])
15
+ @data = self.class::Data.new(**kwargs)
16
+ end
17
+
18
+ def to_h
19
+ {
20
+ data: data.to_data_type,
21
+ included: included.to_a
22
+ }
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/inflector'
4
+
5
+ module AppStoreConnect
6
+ class Request
7
+ module Builder
8
+ class Create
9
+ TEMPLATE = <<~SOURCE
10
+ class <%= name %>CreateRequest < Request::Body
11
+ data do
12
+ type '<%= type %>'
13
+
14
+ <%- if properties.any? -%>
15
+ attributes do
16
+ <%- properties.each do |property| -%>
17
+ property :<%= property %>
18
+ <%- end -%>
19
+ end
20
+ <%- end -%>
21
+ end
22
+ end
23
+ SOURCE
24
+ private_constant :TEMPLATE
25
+
26
+ attr_reader :name, :type, :properties
27
+
28
+ def self.from(schema)
29
+ type = schema.properties['data']['properties']['type']['enum'][0]
30
+ properties = schema.properties['data']['properties']['attributes']['properties'].keys
31
+
32
+ new(type, properties)
33
+ end
34
+
35
+ def initialize(type, properties, version = 'v1')
36
+ @name = type.singularize.classify
37
+ @name = name
38
+ @type = type
39
+ @properties = properties
40
+ @version = version
41
+ end
42
+
43
+ def source
44
+ @source ||= begin
45
+ require 'erb'
46
+
47
+ erb = ERB.new(TEMPLATE, trim_mode: '%<>-')
48
+
49
+ erb.result(binding)
50
+ end
51
+
52
+ @source
53
+ end
54
+
55
+ def alias
56
+ "create_#{@type.underscore.singularize}"
57
+ end
58
+
59
+ def url
60
+ "https://api.appstoreconnect.apple.com/#{@version}/#{@type}"
61
+ end
62
+
63
+ def http_method
64
+ 'post'
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -63,7 +63,7 @@ module AppStoreConnect
63
63
  def body
64
64
  return if http_method == :get
65
65
 
66
- @options.fetch(:http_body)
66
+ @options.fetch(:http_body, nil)
67
67
  end
68
68
 
69
69
  def url_parameter_names(web_service_endpoint)
@@ -77,7 +77,7 @@ module AppStoreConnect
77
77
  case http_method
78
78
  when :get then Net::HTTP::Get
79
79
  when :post then Net::HTTP::Post
80
- when :delete then Net::HTTP::Delete
80
+ when :delete then Requests::DeleteWithBody
81
81
  when :patch then Net::HTTP::Patch
82
82
  else
83
83
  raise UnsupportedHTTPMethod, http_method
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ class DeleteWithBody < Net::HTTPRequest
6
+ METHOD = 'DELETE'
7
+ REQUEST_HAS_BODY = true
8
+ RESPONSE_HAS_BODY = true
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module AppStoreVersionLocalization
7
+ class Create < Request::Body
8
+ data do
9
+ type 'appStoreVersionLocalizations'
10
+
11
+ attributes do
12
+ property :description
13
+ property :keywords
14
+ property :locale, required: true
15
+ property :marketing_url
16
+ property :promotional_text
17
+ property :support_url
18
+ property :whats_new
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module AppStoreVersionLocalization
7
+ class Update < Request::Body
8
+ data do
9
+ id
10
+ type 'appStoreVersionLocalizations'
11
+
12
+ attributes do
13
+ property :description
14
+ property :keywords
15
+ property :marketing_url
16
+ property :promotional_text
17
+ property :support_url
18
+ property :whats_new
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module BetaAppReviewSubmission
7
+ class Create < Request::Body
8
+ data do
9
+ type 'betaAppReviewSubmissions'
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module BuildBetaDetail
7
+ class Update < Request::Body
8
+ data do
9
+ id
10
+ type 'buildBetaDetails'
11
+
12
+ attributes do
13
+ property :auto_notify_enabled
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module BuildBetaGroups
7
+ class Create < Request::Body
8
+ data(Array) do
9
+ id
10
+ type 'betaGroups'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module BuildBetaGroups
7
+ class Delete < Request::Body
8
+ data(Array) do
9
+ id
10
+ type 'betaGroups'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module InAppPurchaseLocalization
7
+ class Create < Request::Body
8
+ data do
9
+ type 'inAppPurchaseLocalizations'
10
+
11
+ attributes do
12
+ property :description
13
+ property :locale, required: true
14
+ property :name, required: true
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module InAppPurchaseLocalization
7
+ class Update < Request::Body
8
+ data do
9
+ id
10
+ type 'inAppPurchaseLocalizations'
11
+
12
+ attributes do
13
+ property :description
14
+ property :name
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Requests
5
+ module V1
6
+ module InAppPurchasePriceSchedule
7
+ class Create < Request::Body
8
+ data do
9
+ type 'inAppPurchasePriceSchedules'
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end