leal 0.0.9

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 (127) hide show
  1. checksums.yaml +7 -0
  2. data/.fern/metadata.json +10 -0
  3. data/.fernignore +1 -0
  4. data/.rubocop.yml +103 -0
  5. data/CONTRIBUTING.md +120 -0
  6. data/LICENSE +21 -0
  7. data/README.md +185 -0
  8. data/Rakefile +20 -0
  9. data/custom.gemspec.rb +16 -0
  10. data/lib/leal/cards/client.rb +193 -0
  11. data/lib/leal/cards/types/create_cards_request.rb +13 -0
  12. data/lib/leal/cards/types/create_cards_request_card.rb +33 -0
  13. data/lib/leal/cards/types/create_cards_response.rb +45 -0
  14. data/lib/leal/cards/types/get_cards_request.rb +13 -0
  15. data/lib/leal/cards/types/get_cards_response.rb +45 -0
  16. data/lib/leal/cards/types/list_cards_request.rb +13 -0
  17. data/lib/leal/cards/types/list_cards_response_item.rb +45 -0
  18. data/lib/leal/cards/types/update_cards_request.rb +15 -0
  19. data/lib/leal/cards/types/update_cards_request_card.rb +33 -0
  20. data/lib/leal/cards/types/update_cards_response.rb +45 -0
  21. data/lib/leal/client.rb +62 -0
  22. data/lib/leal/customer_cards/client.rb +203 -0
  23. data/lib/leal/customer_cards/types/get_customer_cards_request.rb +15 -0
  24. data/lib/leal/customer_cards/types/get_customer_cards_response.rb +43 -0
  25. data/lib/leal/customer_cards/types/list_customer_cards_request.rb +13 -0
  26. data/lib/leal/customer_cards/types/list_customer_cards_response_item.rb +37 -0
  27. data/lib/leal/customer_cards/types/redeem_customer_cards_request.rb +17 -0
  28. data/lib/leal/customer_cards/types/redeem_customer_cards_response.rb +13 -0
  29. data/lib/leal/customer_cards/types/redeem_customer_cards_response_redemption.rb +21 -0
  30. data/lib/leal/customer_cards/types/stamp_customer_cards_request.rb +19 -0
  31. data/lib/leal/customer_cards/types/stamp_customer_cards_response.rb +43 -0
  32. data/lib/leal/customers/client.rb +217 -0
  33. data/lib/leal/customers/types/create_customers_request.rb +17 -0
  34. data/lib/leal/customers/types/create_customers_request_customer.rb +23 -0
  35. data/lib/leal/customers/types/create_customers_response.rb +35 -0
  36. data/lib/leal/customers/types/get_customers_request.rb +13 -0
  37. data/lib/leal/customers/types/get_customers_response.rb +35 -0
  38. data/lib/leal/customers/types/list_customers_request.rb +21 -0
  39. data/lib/leal/customers/types/list_customers_response.rb +13 -0
  40. data/lib/leal/customers/types/list_customers_response_pagination.rb +17 -0
  41. data/lib/leal/customers/types/update_customers_request.rb +15 -0
  42. data/lib/leal/customers/types/update_customers_request_customer.rb +23 -0
  43. data/lib/leal/customers/types/update_customers_response.rb +35 -0
  44. data/lib/leal/environment.rb +7 -0
  45. data/lib/leal/errors/api_error.rb +8 -0
  46. data/lib/leal/errors/client_error.rb +17 -0
  47. data/lib/leal/errors/redirect_error.rb +8 -0
  48. data/lib/leal/errors/response_error.rb +42 -0
  49. data/lib/leal/errors/server_error.rb +11 -0
  50. data/lib/leal/errors/timeout_error.rb +8 -0
  51. data/lib/leal/internal/errors/constraint_error.rb +10 -0
  52. data/lib/leal/internal/errors/type_error.rb +10 -0
  53. data/lib/leal/internal/http/base_request.rb +51 -0
  54. data/lib/leal/internal/http/raw_client.rb +265 -0
  55. data/lib/leal/internal/iterators/cursor_item_iterator.rb +28 -0
  56. data/lib/leal/internal/iterators/cursor_page_iterator.rb +63 -0
  57. data/lib/leal/internal/iterators/item_iterator.rb +65 -0
  58. data/lib/leal/internal/iterators/offset_item_iterator.rb +30 -0
  59. data/lib/leal/internal/iterators/offset_page_iterator.rb +103 -0
  60. data/lib/leal/internal/json/request.rb +41 -0
  61. data/lib/leal/internal/json/serializable.rb +25 -0
  62. data/lib/leal/internal/multipart/multipart_encoder.rb +141 -0
  63. data/lib/leal/internal/multipart/multipart_form_data.rb +78 -0
  64. data/lib/leal/internal/multipart/multipart_form_data_part.rb +51 -0
  65. data/lib/leal/internal/multipart/multipart_request.rb +40 -0
  66. data/lib/leal/internal/types/array.rb +47 -0
  67. data/lib/leal/internal/types/boolean.rb +34 -0
  68. data/lib/leal/internal/types/enum.rb +56 -0
  69. data/lib/leal/internal/types/hash.rb +36 -0
  70. data/lib/leal/internal/types/model/field.rb +38 -0
  71. data/lib/leal/internal/types/model.rb +208 -0
  72. data/lib/leal/internal/types/type.rb +35 -0
  73. data/lib/leal/internal/types/union.rb +161 -0
  74. data/lib/leal/internal/types/unknown.rb +15 -0
  75. data/lib/leal/internal/types/utils.rb +116 -0
  76. data/lib/leal/locations/client.rb +225 -0
  77. data/lib/leal/locations/types/create_locations_request.rb +13 -0
  78. data/lib/leal/locations/types/create_locations_request_location.rb +13 -0
  79. data/lib/leal/locations/types/create_locations_response.rb +25 -0
  80. data/lib/leal/locations/types/delete_locations_request.rb +13 -0
  81. data/lib/leal/locations/types/get_locations_request.rb +13 -0
  82. data/lib/leal/locations/types/get_locations_response.rb +25 -0
  83. data/lib/leal/locations/types/list_locations_request.rb +11 -0
  84. data/lib/leal/locations/types/list_locations_response_item.rb +25 -0
  85. data/lib/leal/locations/types/update_locations_request.rb +15 -0
  86. data/lib/leal/locations/types/update_locations_request_location.rb +13 -0
  87. data/lib/leal/locations/types/update_locations_response.rb +25 -0
  88. data/lib/leal/posters/client.rb +232 -0
  89. data/lib/leal/posters/types/create_posters_request.rb +13 -0
  90. data/lib/leal/posters/types/create_posters_request_poster.rb +23 -0
  91. data/lib/leal/posters/types/create_posters_response.rb +37 -0
  92. data/lib/leal/posters/types/delete_posters_request.rb +13 -0
  93. data/lib/leal/posters/types/get_posters_request.rb +13 -0
  94. data/lib/leal/posters/types/get_posters_response.rb +37 -0
  95. data/lib/leal/posters/types/list_posters_request.rb +15 -0
  96. data/lib/leal/posters/types/list_posters_response_item.rb +37 -0
  97. data/lib/leal/posters/types/update_posters_request.rb +15 -0
  98. data/lib/leal/posters/types/update_posters_request_poster.rb +21 -0
  99. data/lib/leal/posters/types/update_posters_response.rb +37 -0
  100. data/lib/leal/rewards/client.rb +233 -0
  101. data/lib/leal/rewards/types/create_rewards_request.rb +13 -0
  102. data/lib/leal/rewards/types/create_rewards_request_reward.rb +21 -0
  103. data/lib/leal/rewards/types/create_rewards_response.rb +29 -0
  104. data/lib/leal/rewards/types/delete_rewards_request.rb +13 -0
  105. data/lib/leal/rewards/types/get_rewards_request.rb +13 -0
  106. data/lib/leal/rewards/types/get_rewards_response.rb +29 -0
  107. data/lib/leal/rewards/types/list_rewards_request.rb +15 -0
  108. data/lib/leal/rewards/types/list_rewards_response_item.rb +29 -0
  109. data/lib/leal/rewards/types/update_rewards_request.rb +15 -0
  110. data/lib/leal/rewards/types/update_rewards_request_reward.rb +19 -0
  111. data/lib/leal/rewards/types/update_rewards_response.rb +29 -0
  112. data/lib/leal/status/client.rb +53 -0
  113. data/lib/leal/status/types/check_status_response.rb +23 -0
  114. data/lib/leal/status/types/check_status_response_rate_limit.rb +15 -0
  115. data/lib/leal/stores/client.rb +130 -0
  116. data/lib/leal/stores/types/get_stores_request.rb +11 -0
  117. data/lib/leal/stores/types/get_stores_response.rb +31 -0
  118. data/lib/leal/stores/types/list_stores_response_item.rb +31 -0
  119. data/lib/leal/stores/types/update_stores_request.rb +13 -0
  120. data/lib/leal/stores/types/update_stores_request_account.rb +13 -0
  121. data/lib/leal/stores/types/update_stores_response.rb +31 -0
  122. data/lib/leal/types/error.rb +13 -0
  123. data/lib/leal/types/error_errors.rb +14 -0
  124. data/lib/leal/version.rb +5 -0
  125. data/lib/leal.rb +120 -0
  126. data/reference.md +2414 -0
  127. metadata +168 -0
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Rewards
5
+ module Types
6
+ class UpdateRewardsRequestReward < Internal::Types::Model
7
+ field :active, -> { Internal::Types::Boolean }, optional: true, nullable: false
8
+
9
+ field :description, -> { String }, optional: true, nullable: false
10
+
11
+ field :name, -> { String }, optional: true, nullable: false
12
+
13
+ field :position, -> { Integer }, optional: true, nullable: false
14
+
15
+ field :stamps_required, -> { Integer }, optional: true, nullable: false
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Rewards
5
+ module Types
6
+ class UpdateRewardsResponse < Internal::Types::Model
7
+ field :account_id, -> { Integer }, optional: false, nullable: false
8
+
9
+ field :active, -> { Internal::Types::Boolean }, optional: false, nullable: false
10
+
11
+ field :card_id, -> { Integer }, optional: false, nullable: false
12
+
13
+ field :created_at, -> { String }, optional: false, nullable: false
14
+
15
+ field :description, -> { String }, optional: false, nullable: false
16
+
17
+ field :id, -> { Integer }, optional: false, nullable: false
18
+
19
+ field :name, -> { String }, optional: false, nullable: false
20
+
21
+ field :position, -> { Integer }, optional: false, nullable: false
22
+
23
+ field :stamps_required, -> { Integer }, optional: false, nullable: false
24
+
25
+ field :updated_at, -> { String }, optional: false, nullable: false
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Status
5
+ class Client
6
+ # @param client [Leal::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # Returns the status of the API. No authentication required.
14
+ #
15
+ # Every response from this API, including this one, carries `RateLimit-Limit`,
16
+ # `RateLimit-Remaining`, `RateLimit-Reset` and `RateLimit-Policy`. Exceeding
17
+ # the limit returns 429 with `Retry-After` in seconds.
18
+ #
19
+ # @param request_options [Hash]
20
+ # @param _params [Hash]
21
+ # @option request_options [String] :base_url
22
+ # @option request_options [Hash{String => Object}] :additional_headers
23
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
24
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
25
+ # @option request_options [Integer] :timeout_in_seconds
26
+ #
27
+ # @example
28
+ # client.status.check
29
+ #
30
+ # @return [Leal::Status::Types::CheckStatusResponse]
31
+ def check(request_options: {}, **_params)
32
+ request = Leal::Internal::JSON::Request.new(
33
+ base_url: request_options[:base_url],
34
+ method: "GET",
35
+ path: "api/v1/status",
36
+ request_options: request_options
37
+ )
38
+ begin
39
+ response = @client.send(request)
40
+ rescue Net::HTTPRequestTimeout
41
+ raise Leal::Errors::TimeoutError
42
+ end
43
+ code = response.code.to_i
44
+ if code.between?(200, 299)
45
+ Leal::Status::Types::CheckStatusResponse.load(response.body)
46
+ else
47
+ error_class = Leal::Errors::ResponseError.subclass_for_code(code)
48
+ raise error_class.new(response.body, code: code)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Status
5
+ module Types
6
+ class CheckStatusResponse < Internal::Types::Model
7
+ field :api_version, -> { String }, optional: false, nullable: false
8
+
9
+ field :authentication, -> { String }, optional: false, nullable: false
10
+
11
+ field :developer_portal_url, -> { String }, optional: false, nullable: false
12
+
13
+ field :documentation_url, -> { String }, optional: false, nullable: false
14
+
15
+ field :openapi_url, -> { String }, optional: false, nullable: false
16
+
17
+ field :rate_limit, -> { Leal::Status::Types::CheckStatusResponseRateLimit }, optional: false, nullable: false
18
+
19
+ field :status, -> { String }, optional: false, nullable: false
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Status
5
+ module Types
6
+ class CheckStatusResponseRateLimit < Internal::Types::Model
7
+ field :limit, -> { Integer }, optional: false, nullable: false
8
+
9
+ field :scope, -> { String }, optional: false, nullable: false
10
+
11
+ field :window_seconds, -> { Integer }, optional: false, nullable: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,130 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Stores
5
+ class Client
6
+ # @param client [Leal::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # Returns every store the authenticated user has access to, including summary counts for locations, cards,
14
+ # customers, and posters.
15
+ #
16
+ # @param request_options [Hash]
17
+ # @param _params [Hash]
18
+ # @option request_options [String] :base_url
19
+ # @option request_options [Hash{String => Object}] :additional_headers
20
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
21
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
22
+ # @option request_options [Integer] :timeout_in_seconds
23
+ #
24
+ # @example
25
+ # client.stores.list
26
+ #
27
+ # @return [Array[Leal::Stores::Types::ListStoresResponseItem]]
28
+ def list(request_options: {}, **_params)
29
+ request = Leal::Internal::JSON::Request.new(
30
+ base_url: request_options[:base_url],
31
+ method: "GET",
32
+ path: "api/v1/accounts",
33
+ request_options: request_options
34
+ )
35
+ begin
36
+ response = @client.send(request)
37
+ rescue Net::HTTPRequestTimeout
38
+ raise Leal::Errors::TimeoutError
39
+ end
40
+ code = response.code.to_i
41
+ return if code.between?(200, 299)
42
+
43
+ error_class = Leal::Errors::ResponseError.subclass_for_code(code)
44
+ raise error_class.new(response.body, code: code)
45
+ end
46
+
47
+ # Returns detailed information for a single store, including summary counts for its associated resources.
48
+ #
49
+ # @param request_options [Hash]
50
+ # @param params [Hash]
51
+ # @option request_options [String] :base_url
52
+ # @option request_options [Hash{String => Object}] :additional_headers
53
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
54
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
55
+ # @option request_options [Integer] :timeout_in_seconds
56
+ # @option params [Integer] :id
57
+ #
58
+ # @example
59
+ # client.stores.get(id: 1)
60
+ #
61
+ # @return [Leal::Stores::Types::GetStoresResponse]
62
+ def get(request_options: {}, **params)
63
+ params = Leal::Internal::Types::Utils.normalize_keys(params)
64
+ request = Leal::Internal::JSON::Request.new(
65
+ base_url: request_options[:base_url],
66
+ method: "GET",
67
+ path: "api/v1/accounts/#{URI.encode_uri_component(params[:id].to_s)}",
68
+ request_options: request_options
69
+ )
70
+ begin
71
+ response = @client.send(request)
72
+ rescue Net::HTTPRequestTimeout
73
+ raise Leal::Errors::TimeoutError
74
+ end
75
+ code = response.code.to_i
76
+ if code.between?(200, 299)
77
+ Leal::Stores::Types::GetStoresResponse.load(response.body)
78
+ else
79
+ error_class = Leal::Errors::ResponseError.subclass_for_code(code)
80
+ raise error_class.new(response.body, code: code)
81
+ end
82
+ end
83
+
84
+ # Updates the store's name or store_name. Use `store_name` for the public-facing name displayed to customers.
85
+ #
86
+ # @param request_options [Hash]
87
+ # @param params [Leal::Stores::Types::UpdateStoresRequest]
88
+ # @option request_options [String] :base_url
89
+ # @option request_options [Hash{String => Object}] :additional_headers
90
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
91
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
92
+ # @option request_options [Integer] :timeout_in_seconds
93
+ # @option params [Integer] :id
94
+ #
95
+ # @example
96
+ # client.stores.update(
97
+ # id: 1,
98
+ # account: {}
99
+ # )
100
+ #
101
+ # @return [Leal::Stores::Types::UpdateStoresResponse]
102
+ def update(request_options: {}, **params)
103
+ params = Leal::Internal::Types::Utils.normalize_keys(params)
104
+ request_data = Leal::Stores::Types::UpdateStoresRequest.new(params).to_h
105
+ non_body_param_names = %w[id]
106
+ body = request_data.except(*non_body_param_names)
107
+
108
+ request = Leal::Internal::JSON::Request.new(
109
+ base_url: request_options[:base_url],
110
+ method: "PATCH",
111
+ path: "api/v1/accounts/#{URI.encode_uri_component(params[:id].to_s)}",
112
+ body: body,
113
+ request_options: request_options
114
+ )
115
+ begin
116
+ response = @client.send(request)
117
+ rescue Net::HTTPRequestTimeout
118
+ raise Leal::Errors::TimeoutError
119
+ end
120
+ code = response.code.to_i
121
+ if code.between?(200, 299)
122
+ Leal::Stores::Types::UpdateStoresResponse.load(response.body)
123
+ else
124
+ error_class = Leal::Errors::ResponseError.subclass_for_code(code)
125
+ raise error_class.new(response.body, code: code)
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Stores
5
+ module Types
6
+ class GetStoresRequest < Internal::Types::Model
7
+ field :id, -> { Integer }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Stores
5
+ module Types
6
+ class GetStoresResponse < Internal::Types::Model
7
+ field :cards_count, -> { Integer }, optional: false, nullable: false
8
+
9
+ field :created_at, -> { String }, optional: false, nullable: false
10
+
11
+ field :customers_count, -> { Integer }, optional: false, nullable: false
12
+
13
+ field :display_store_name, -> { String }, optional: false, nullable: false
14
+
15
+ field :id, -> { Integer }, optional: false, nullable: false
16
+
17
+ field :locations_count, -> { Integer }, optional: false, nullable: false
18
+
19
+ field :name, -> { String }, optional: false, nullable: false
20
+
21
+ field :personal, -> { Internal::Types::Boolean }, optional: false, nullable: false
22
+
23
+ field :posters_count, -> { Integer }, optional: false, nullable: false
24
+
25
+ field :store_name, -> { String }, optional: false, nullable: false
26
+
27
+ field :updated_at, -> { String }, optional: false, nullable: false
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Stores
5
+ module Types
6
+ class ListStoresResponseItem < Internal::Types::Model
7
+ field :cards_count, -> { Integer }, optional: false, nullable: false
8
+
9
+ field :created_at, -> { String }, optional: false, nullable: false
10
+
11
+ field :customers_count, -> { Integer }, optional: false, nullable: false
12
+
13
+ field :display_store_name, -> { String }, optional: false, nullable: false
14
+
15
+ field :id, -> { Integer }, optional: false, nullable: false
16
+
17
+ field :locations_count, -> { Integer }, optional: false, nullable: false
18
+
19
+ field :name, -> { String }, optional: false, nullable: false
20
+
21
+ field :personal, -> { Internal::Types::Boolean }, optional: false, nullable: false
22
+
23
+ field :posters_count, -> { Integer }, optional: false, nullable: false
24
+
25
+ field :store_name, -> { String }, optional: false, nullable: false
26
+
27
+ field :updated_at, -> { String }, optional: false, nullable: false
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Stores
5
+ module Types
6
+ class UpdateStoresRequest < Internal::Types::Model
7
+ field :id, -> { Integer }, optional: false, nullable: false
8
+
9
+ field :account, -> { Leal::Stores::Types::UpdateStoresRequestAccount }, optional: false, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Stores
5
+ module Types
6
+ class UpdateStoresRequestAccount < Internal::Types::Model
7
+ field :name, -> { String }, optional: true, nullable: false
8
+
9
+ field :store_name, -> { String }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Stores
5
+ module Types
6
+ class UpdateStoresResponse < Internal::Types::Model
7
+ field :cards_count, -> { Integer }, optional: false, nullable: false
8
+
9
+ field :created_at, -> { String }, optional: false, nullable: false
10
+
11
+ field :customers_count, -> { Integer }, optional: false, nullable: false
12
+
13
+ field :display_store_name, -> { String }, optional: false, nullable: false
14
+
15
+ field :id, -> { Integer }, optional: false, nullable: false
16
+
17
+ field :locations_count, -> { Integer }, optional: false, nullable: false
18
+
19
+ field :name, -> { String }, optional: false, nullable: false
20
+
21
+ field :personal, -> { Internal::Types::Boolean }, optional: false, nullable: false
22
+
23
+ field :posters_count, -> { Integer }, optional: false, nullable: false
24
+
25
+ field :store_name, -> { String }, optional: false, nullable: false
26
+
27
+ field :updated_at, -> { String }, optional: false, nullable: false
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Types
5
+ # A JSON error payload. Agents should read `error` for a human readable summary and `errors` for per field
6
+ # validation messages when present.
7
+ class Error < Internal::Types::Model
8
+ field :error, -> { String }, optional: true, nullable: false
9
+
10
+ field :errors, -> { Leal::Types::ErrorErrors }, optional: true, nullable: false
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ module Types
5
+ # Validation messages, either a list of strings or an object keyed by field name.
6
+ class ErrorErrors < Internal::Types::Model
7
+ extend Leal::Internal::Types::Union
8
+
9
+ member -> { Internal::Types::Array[String] }
10
+
11
+ member -> { Internal::Types::Hash[String, Internal::Types::Array[String]] }
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Leal
4
+ VERSION = "0.0.9"
5
+ end
data/lib/leal.rb ADDED
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require "net/http"
5
+ require "securerandom"
6
+
7
+ require_relative "leal/internal/json/serializable"
8
+ require_relative "leal/internal/types/type"
9
+ require_relative "leal/internal/types/utils"
10
+ require_relative "leal/internal/types/union"
11
+ require_relative "leal/internal/errors/constraint_error"
12
+ require_relative "leal/internal/errors/type_error"
13
+ require_relative "leal/internal/http/base_request"
14
+ require_relative "leal/internal/json/request"
15
+ require_relative "leal/internal/http/raw_client"
16
+ require_relative "leal/internal/multipart/multipart_encoder"
17
+ require_relative "leal/internal/multipart/multipart_form_data_part"
18
+ require_relative "leal/internal/multipart/multipart_form_data"
19
+ require_relative "leal/internal/multipart/multipart_request"
20
+ require_relative "leal/internal/types/model/field"
21
+ require_relative "leal/internal/types/model"
22
+ require_relative "leal/internal/types/array"
23
+ require_relative "leal/internal/types/boolean"
24
+ require_relative "leal/internal/types/enum"
25
+ require_relative "leal/internal/types/hash"
26
+ require_relative "leal/internal/types/unknown"
27
+ require_relative "leal/errors/api_error"
28
+ require_relative "leal/errors/response_error"
29
+ require_relative "leal/errors/client_error"
30
+ require_relative "leal/errors/redirect_error"
31
+ require_relative "leal/errors/server_error"
32
+ require_relative "leal/errors/timeout_error"
33
+ require_relative "leal/internal/iterators/item_iterator"
34
+ require_relative "leal/internal/iterators/cursor_item_iterator"
35
+ require_relative "leal/internal/iterators/offset_item_iterator"
36
+ require_relative "leal/internal/iterators/cursor_page_iterator"
37
+ require_relative "leal/internal/iterators/offset_page_iterator"
38
+ require_relative "leal/stores/types/list_stores_response_item"
39
+ require_relative "leal/stores/types/get_stores_response"
40
+ require_relative "leal/stores/types/update_stores_request_account"
41
+ require_relative "leal/stores/types/update_stores_response"
42
+ require_relative "leal/cards/types/list_cards_response_item"
43
+ require_relative "leal/cards/types/create_cards_request_card"
44
+ require_relative "leal/cards/types/create_cards_response"
45
+ require_relative "leal/cards/types/get_cards_response"
46
+ require_relative "leal/cards/types/update_cards_request_card"
47
+ require_relative "leal/cards/types/update_cards_response"
48
+ require_relative "leal/customers/types/list_customers_response_pagination"
49
+ require_relative "leal/customers/types/list_customers_response"
50
+ require_relative "leal/customers/types/create_customers_request_customer"
51
+ require_relative "leal/customers/types/create_customers_response"
52
+ require_relative "leal/customers/types/get_customers_response"
53
+ require_relative "leal/customers/types/update_customers_request_customer"
54
+ require_relative "leal/customers/types/update_customers_response"
55
+ require_relative "leal/customer_cards/types/list_customer_cards_response_item"
56
+ require_relative "leal/customer_cards/types/get_customer_cards_response"
57
+ require_relative "leal/customer_cards/types/redeem_customer_cards_response_redemption"
58
+ require_relative "leal/customer_cards/types/redeem_customer_cards_response"
59
+ require_relative "leal/customer_cards/types/stamp_customer_cards_response"
60
+ require_relative "leal/locations/types/list_locations_response_item"
61
+ require_relative "leal/locations/types/create_locations_request_location"
62
+ require_relative "leal/locations/types/create_locations_response"
63
+ require_relative "leal/locations/types/get_locations_response"
64
+ require_relative "leal/locations/types/update_locations_request_location"
65
+ require_relative "leal/locations/types/update_locations_response"
66
+ require_relative "leal/posters/types/list_posters_response_item"
67
+ require_relative "leal/posters/types/create_posters_request_poster"
68
+ require_relative "leal/posters/types/create_posters_response"
69
+ require_relative "leal/posters/types/get_posters_response"
70
+ require_relative "leal/posters/types/update_posters_request_poster"
71
+ require_relative "leal/posters/types/update_posters_response"
72
+ require_relative "leal/rewards/types/list_rewards_response_item"
73
+ require_relative "leal/rewards/types/create_rewards_request_reward"
74
+ require_relative "leal/rewards/types/create_rewards_response"
75
+ require_relative "leal/rewards/types/get_rewards_response"
76
+ require_relative "leal/rewards/types/update_rewards_request_reward"
77
+ require_relative "leal/rewards/types/update_rewards_response"
78
+ require_relative "leal/status/types/check_status_response_rate_limit"
79
+ require_relative "leal/status/types/check_status_response"
80
+ require_relative "leal/types/error_errors"
81
+ require_relative "leal/types/error"
82
+ require_relative "leal/client"
83
+ require_relative "leal/stores/client"
84
+ require_relative "leal/stores/types/get_stores_request"
85
+ require_relative "leal/stores/types/update_stores_request"
86
+ require_relative "leal/cards/client"
87
+ require_relative "leal/cards/types/list_cards_request"
88
+ require_relative "leal/cards/types/create_cards_request"
89
+ require_relative "leal/cards/types/get_cards_request"
90
+ require_relative "leal/cards/types/update_cards_request"
91
+ require_relative "leal/customers/client"
92
+ require_relative "leal/customers/types/list_customers_request"
93
+ require_relative "leal/customers/types/create_customers_request"
94
+ require_relative "leal/customers/types/get_customers_request"
95
+ require_relative "leal/customers/types/update_customers_request"
96
+ require_relative "leal/customer_cards/client"
97
+ require_relative "leal/customer_cards/types/list_customer_cards_request"
98
+ require_relative "leal/customer_cards/types/get_customer_cards_request"
99
+ require_relative "leal/customer_cards/types/redeem_customer_cards_request"
100
+ require_relative "leal/customer_cards/types/stamp_customer_cards_request"
101
+ require_relative "leal/locations/client"
102
+ require_relative "leal/locations/types/list_locations_request"
103
+ require_relative "leal/locations/types/create_locations_request"
104
+ require_relative "leal/locations/types/get_locations_request"
105
+ require_relative "leal/locations/types/delete_locations_request"
106
+ require_relative "leal/locations/types/update_locations_request"
107
+ require_relative "leal/posters/client"
108
+ require_relative "leal/posters/types/list_posters_request"
109
+ require_relative "leal/posters/types/create_posters_request"
110
+ require_relative "leal/posters/types/get_posters_request"
111
+ require_relative "leal/posters/types/delete_posters_request"
112
+ require_relative "leal/posters/types/update_posters_request"
113
+ require_relative "leal/rewards/client"
114
+ require_relative "leal/rewards/types/list_rewards_request"
115
+ require_relative "leal/rewards/types/create_rewards_request"
116
+ require_relative "leal/rewards/types/get_rewards_request"
117
+ require_relative "leal/rewards/types/delete_rewards_request"
118
+ require_relative "leal/rewards/types/update_rewards_request"
119
+ require_relative "leal/status/client"
120
+ require_relative "leal/environment"