app_store_connect 0.37.0 → 0.38.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +12 -0
  3. data/CHANGELOG.md +40 -0
  4. data/Gemfile.lock +42 -33
  5. data/README.md +55 -44
  6. data/app_store_connect.gemspec +6 -3
  7. data/bin/console +3 -8
  8. data/lib/app_store_connect/app_store_version_build_linkage_request.rb +1 -3
  9. data/lib/app_store_connect/app_store_version_create_request.rb +1 -3
  10. data/lib/app_store_connect/app_store_version_phased_release_create_request.rb +1 -3
  11. data/lib/app_store_connect/app_store_version_phased_release_update_request.rb +1 -3
  12. data/lib/app_store_connect/app_store_version_release_request_create_request.rb +1 -3
  13. data/lib/app_store_connect/app_store_version_update_request.rb +1 -3
  14. data/lib/app_store_connect/base.rb +83 -0
  15. data/lib/app_store_connect/beta_build_localization_create_request.rb +1 -3
  16. data/lib/app_store_connect/beta_build_localization_modify_request.rb +2 -3
  17. data/lib/app_store_connect/build_update_request.rb +1 -3
  18. data/lib/app_store_connect/bundle_id_capability_create_request.rb +1 -3
  19. data/lib/app_store_connect/bundle_id_create_request.rb +1 -3
  20. data/lib/app_store_connect/certificate_create_request.rb +1 -3
  21. data/lib/app_store_connect/client/builder.rb +91 -0
  22. data/lib/app_store_connect/client.rb +45 -71
  23. data/lib/app_store_connect/device_create_request.rb +1 -3
  24. data/lib/app_store_connect/object/data.rb +19 -7
  25. data/lib/app_store_connect/object/data_type.rb +23 -0
  26. data/lib/app_store_connect/object/included.rb +27 -0
  27. data/lib/app_store_connect/profile_create_request.rb +1 -3
  28. data/lib/app_store_connect/request/body.rb +26 -0
  29. data/lib/app_store_connect/request/builder/create.rb +69 -0
  30. data/lib/app_store_connect/request.rb +2 -2
  31. data/lib/app_store_connect/requests/delete_with_body.rb +11 -0
  32. data/lib/app_store_connect/requests/v1/app_store_version_localization/create.rb +25 -0
  33. data/lib/app_store_connect/requests/v1/app_store_version_localization/update.rb +25 -0
  34. data/lib/app_store_connect/requests/v1/beta_app_review_submission/create.rb +15 -0
  35. data/lib/app_store_connect/requests/v1/build_beta_detail/update.rb +20 -0
  36. data/lib/app_store_connect/requests/v1/build_beta_groups/create.rb +16 -0
  37. data/lib/app_store_connect/requests/v1/build_beta_groups/delete.rb +16 -0
  38. data/lib/app_store_connect/requests/v1/in_app_purchase_localization/create.rb +1 -3
  39. data/lib/app_store_connect/requests/v1/in_app_purchase_localization/update.rb +1 -3
  40. data/lib/app_store_connect/requests/v1/in_app_purchase_price_schedule/create.rb +1 -3
  41. data/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/create.rb +1 -3
  42. data/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/update.rb +21 -0
  43. data/lib/app_store_connect/requests/v1/in_app_purchase_submission/create.rb +1 -3
  44. data/lib/app_store_connect/requests/v2/in_app_purchase/create.rb +1 -3
  45. data/lib/app_store_connect/requests/v2/in_app_purchase/update.rb +1 -3
  46. data/lib/app_store_connect/review_submission_create_request.rb +1 -3
  47. data/lib/app_store_connect/review_submission_item_create_request.rb +1 -3
  48. data/lib/app_store_connect/review_submission_update_request.rb +1 -3
  49. data/lib/app_store_connect/specification/component/schema.rb +25 -0
  50. data/lib/app_store_connect/specification.rb +54 -0
  51. data/lib/app_store_connect/user_invitation_create_request.rb +1 -3
  52. data/lib/app_store_connect/version.rb +1 -1
  53. data/lib/app_store_connect.rb +4 -32
  54. data/lib/config/schema.json +54 -23
  55. metadata +67 -10
  56. data/lib/app_store_connect/create_request.rb +0 -14
  57. data/lib/app_store_connect/modify_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
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'app_store_connect/create_request'
4
-
5
3
  module AppStoreConnect
6
4
  module Requests
7
5
  module V1
8
6
  module InAppPurchaseLocalization
9
- class Create < CreateRequest
7
+ class Create < Request::Body
10
8
  data do
11
9
  type 'inAppPurchaseLocalizations'
12
10
 
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'app_store_connect/create_request'
4
-
5
3
  module AppStoreConnect
6
4
  module Requests
7
5
  module V1
8
6
  module InAppPurchaseLocalization
9
- class Update < CreateRequest
7
+ class Update < Request::Body
10
8
  data do
11
9
  id
12
10
  type 'inAppPurchaseLocalizations'
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'app_store_connect/create_request'
4
-
5
3
  module AppStoreConnect
6
4
  module Requests
7
5
  module V1
8
6
  module InAppPurchasePriceSchedule
9
- class Create < CreateRequest
7
+ class Create < Request::Body
10
8
  data do
11
9
  type 'inAppPurchasePriceSchedules'
12
10
  end
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'app_store_connect/create_request'
4
-
5
3
  module AppStoreConnect
6
4
  module Requests
7
5
  module V1
8
6
  module InAppPurchaseReviewScreenshot
9
- class Create < CreateRequest
7
+ class Create < Request::Body
10
8
  data do
11
9
  type 'inAppPurchaseAppStoreReviewScreenshots'
12
10