weft-sdk 0.6.2 → 0.9.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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/docs/APIKeysApi.md +1 -2
  3. data/docs/AccountApi.md +6 -5
  4. data/docs/AccountDetails.md +10 -13
  5. data/docs/ApiKey.md +0 -1
  6. data/docs/ApiKeyCreated.md +0 -1
  7. data/docs/ApiKeyCreatedResponse.md +0 -1
  8. data/docs/ApiKeyListResponse.md +0 -1
  9. data/docs/AuthApi.md +6 -7
  10. data/docs/AuthResponse.md +0 -1
  11. data/docs/AuthResponseData.md +0 -1
  12. data/docs/BalanceApi.md +1 -2
  13. data/docs/BalanceResponse.md +3 -4
  14. data/docs/ConfirmRequest.md +0 -1
  15. data/docs/CreateApiKeyRequest.md +0 -1
  16. data/docs/DefaultApi.md +0 -1
  17. data/docs/EnrolledResource.md +43 -0
  18. data/docs/Error.md +0 -1
  19. data/docs/ErrorResponse.md +0 -1
  20. data/docs/Fetch403Response.md +48 -0
  21. data/docs/FetchApi.md +10 -7
  22. data/docs/FetchBalanceSnapshot.md +5 -2
  23. data/docs/FetchErrorResponse.md +0 -1
  24. data/docs/FetchRequest.md +0 -1
  25. data/docs/FetchRequestBody.md +0 -1
  26. data/docs/FetchResponse.md +6 -3
  27. data/docs/InsufficientScopeResponse.md +21 -0
  28. data/docs/MeApiKey.md +25 -0
  29. data/docs/MeApiKeyCreator.md +21 -0
  30. data/docs/MeResponse.md +1 -2
  31. data/docs/MeResponseData.md +78 -0
  32. data/docs/Merchant.md +0 -1
  33. data/docs/MessageResponse.md +0 -1
  34. data/docs/MessageResponseData.md +0 -1
  35. data/docs/Pagination.md +0 -1
  36. data/docs/PasswordResetRequest.md +0 -1
  37. data/docs/PasswordUpdateRequest.md +0 -1
  38. data/docs/Payment.md +0 -3
  39. data/docs/PaymentListResponse.md +0 -1
  40. data/docs/PaymentResponse.md +0 -1
  41. data/docs/PaymentsApi.md +0 -1
  42. data/docs/PrincipalWallet.md +19 -0
  43. data/docs/PromoBalance.md +0 -1
  44. data/docs/Purchase.md +43 -0
  45. data/docs/PurchaseArtifact.md +23 -0
  46. data/docs/PurchaseListResponse.md +19 -0
  47. data/docs/PurchaseResponse.md +17 -0
  48. data/docs/PurchasesApi.md +148 -0
  49. data/docs/ResendConfirmationRequest.md +0 -1
  50. data/docs/ResourceEnrollmentRequest.md +23 -0
  51. data/docs/ResourceEnrollmentResponse.md +17 -0
  52. data/docs/ResourceStats.md +29 -0
  53. data/docs/ResourcesApi.md +71 -0
  54. data/docs/SearchApi.md +2 -3
  55. data/docs/SearchCapabilityRef.md +19 -0
  56. data/docs/SearchEndpointCall.md +23 -0
  57. data/docs/SearchEndpointHit.md +41 -0
  58. data/docs/SearchEndpointPrice.md +25 -0
  59. data/docs/SearchErrorResponse.md +0 -1
  60. data/docs/SearchFilterSpec.md +23 -0
  61. data/docs/SearchPaymentOffer.md +31 -0
  62. data/docs/SearchPriceAtomicFilter.md +25 -0
  63. data/docs/SearchPriceUsdFilter.md +25 -0
  64. data/docs/SearchProtocolFilter.md +19 -0
  65. data/docs/SearchProviderRef.md +21 -0
  66. data/docs/SearchRequest.md +3 -4
  67. data/docs/SearchResourceTypeFilter.md +19 -0
  68. data/docs/SearchResponse.md +35 -8
  69. data/docs/SearchResponseWarningsInner.md +23 -0
  70. data/docs/SearchResult.md +8 -21
  71. data/docs/SignInRequest.md +0 -1
  72. data/docs/SignUpRequest.md +0 -1
  73. data/docs/SpendingPolicy.md +0 -1
  74. data/docs/User.md +0 -1
  75. data/docs/UserPrincipal.md +33 -0
  76. data/docs/Wallet.md +5 -2
  77. data/lib/weft/generated/api/account_api.rb +6 -4
  78. data/lib/weft/generated/api/api_keys_api.rb +4 -4
  79. data/lib/weft/generated/api/auth_api.rb +14 -14
  80. data/lib/weft/generated/api/balance_api.rb +4 -4
  81. data/lib/weft/generated/api/default_api.rb +2 -2
  82. data/lib/weft/generated/api/fetch_api.rb +22 -6
  83. data/lib/weft/generated/api/payments_api.rb +2 -2
  84. data/lib/weft/generated/api/purchases_api.rb +150 -0
  85. data/lib/weft/generated/api/resources_api.rb +90 -0
  86. data/lib/weft/generated/api/search_api.rb +6 -6
  87. data/lib/weft/generated/api_client.rb +2 -2
  88. data/lib/weft/generated/api_error.rb +2 -2
  89. data/lib/weft/generated/api_model_base.rb +2 -2
  90. data/lib/weft/generated/configuration.rb +2 -2
  91. data/lib/weft/generated/models/account_details.rb +94 -85
  92. data/lib/weft/generated/models/api_key.rb +2 -2
  93. data/lib/weft/generated/models/api_key_created.rb +2 -2
  94. data/lib/weft/generated/models/api_key_created_response.rb +2 -2
  95. data/lib/weft/generated/models/api_key_list_response.rb +2 -2
  96. data/lib/weft/generated/models/auth_response.rb +2 -2
  97. data/lib/weft/generated/models/auth_response_data.rb +2 -2
  98. data/lib/weft/generated/models/balance_response.rb +5 -5
  99. data/lib/weft/generated/models/confirm_request.rb +2 -2
  100. data/lib/weft/generated/models/create_api_key_request.rb +2 -2
  101. data/lib/weft/generated/models/enrolled_resource.rb +474 -0
  102. data/lib/weft/generated/models/error.rb +3 -3
  103. data/lib/weft/generated/models/error_response.rb +3 -3
  104. data/lib/weft/generated/models/fetch403_response.rb +104 -0
  105. data/lib/weft/generated/models/fetch_balance_snapshot.rb +59 -4
  106. data/lib/weft/generated/models/fetch_error_response.rb +5 -5
  107. data/lib/weft/generated/models/fetch_request.rb +5 -5
  108. data/lib/weft/generated/models/fetch_request_body.rb +2 -2
  109. data/lib/weft/generated/models/fetch_response.rb +85 -7
  110. data/lib/weft/generated/models/insufficient_scope_response.rb +242 -0
  111. data/lib/weft/generated/models/{search_skill.rb → me_api_key.rb} +50 -92
  112. data/lib/weft/generated/models/me_api_key_creator.rb +200 -0
  113. data/lib/weft/generated/models/me_response.rb +3 -3
  114. data/lib/weft/generated/models/me_response_data.rb +55 -0
  115. data/lib/weft/generated/models/merchant.rb +2 -2
  116. data/lib/weft/generated/models/message_response.rb +2 -2
  117. data/lib/weft/generated/models/message_response_data.rb +2 -2
  118. data/lib/weft/generated/models/pagination.rb +2 -2
  119. data/lib/weft/generated/models/password_reset_request.rb +2 -2
  120. data/lib/weft/generated/models/password_update_request.rb +2 -2
  121. data/lib/weft/generated/models/payment.rb +3 -12
  122. data/lib/weft/generated/models/payment_list_response.rb +2 -2
  123. data/lib/weft/generated/models/payment_response.rb +2 -2
  124. data/lib/weft/generated/models/principal_wallet.rb +190 -0
  125. data/lib/weft/generated/models/promo_balance.rb +3 -3
  126. data/lib/weft/generated/models/purchase.rb +427 -0
  127. data/lib/weft/generated/models/purchase_artifact.rb +237 -0
  128. data/lib/weft/generated/models/purchase_list_response.rb +192 -0
  129. data/lib/weft/generated/models/purchase_response.rb +164 -0
  130. data/lib/weft/generated/models/resend_confirmation_request.rb +2 -2
  131. data/lib/weft/generated/models/{search_agent_card.rb → resource_enrollment_request.rb} +59 -75
  132. data/lib/weft/generated/models/resource_enrollment_response.rb +164 -0
  133. data/lib/weft/generated/models/resource_stats.rb +323 -0
  134. data/lib/weft/generated/models/{search_skill_endpoint.rb → search_capability_ref.rb} +18 -19
  135. data/lib/weft/generated/models/search_endpoint_call.rb +179 -0
  136. data/lib/weft/generated/models/search_endpoint_hit.rb +296 -0
  137. data/lib/weft/generated/models/search_endpoint_price.rb +223 -0
  138. data/lib/weft/generated/models/search_error_response.rb +5 -5
  139. data/lib/weft/generated/models/search_filter_spec.rb +175 -0
  140. data/lib/weft/generated/models/{search_pricing.rb → search_payment_offer.rb} +64 -67
  141. data/lib/weft/generated/models/search_price_atomic_filter.rb +284 -0
  142. data/lib/weft/generated/models/search_price_usd_filter.rb +294 -0
  143. data/lib/weft/generated/models/search_protocol_filter.rb +200 -0
  144. data/lib/weft/generated/models/{search_endpoints.rb → search_provider_ref.rb} +26 -36
  145. data/lib/weft/generated/models/search_request.rb +36 -27
  146. data/lib/weft/generated/models/search_resource_type_filter.rb +200 -0
  147. data/lib/weft/generated/models/search_response.rb +366 -30
  148. data/lib/weft/generated/models/search_response_warnings_inner.rb +210 -0
  149. data/lib/weft/generated/models/search_result.rb +68 -220
  150. data/lib/weft/generated/models/sign_in_request.rb +2 -2
  151. data/lib/weft/generated/models/sign_up_request.rb +2 -2
  152. data/lib/weft/generated/models/spending_policy.rb +2 -2
  153. data/lib/weft/generated/models/user.rb +2 -2
  154. data/lib/weft/generated/models/user_principal.rb +370 -0
  155. data/lib/weft/generated/models/wallet.rb +58 -4
  156. data/lib/weft/generated/version.rb +3 -3
  157. data/lib/weft/generated.rb +10 -4
  158. data/lib/weft/sdk.rb +1 -1
  159. metadata +75 -17
  160. data/docs/SearchAgentCard.md +0 -34
  161. data/docs/SearchEndpoints.md +0 -24
  162. data/docs/SearchFilters.md +0 -26
  163. data/docs/SearchPricing.md +0 -24
  164. data/docs/SearchRanking.md +0 -26
  165. data/docs/SearchSkill.md +0 -36
  166. data/docs/SearchSkillEndpoint.md +0 -20
  167. data/lib/weft/generated/models/search_filters.rb +0 -277
  168. data/lib/weft/generated/models/search_ranking.rb +0 -277
@@ -0,0 +1,284 @@
1
+ =begin
2
+ #Weft API
3
+
4
+ #The Weft API is the buyer-runtime surface that powers the `weft` CLI, the hosted MCP server (`weft.network/mcp`), and any third-party agent that wants to discover and pay for paid resources on Weft. v1 covers five buyer concerns: 1. Account onboarding (`/api/v1/auth/*`, `/api/v1/me`) 2. CLI authentication (`/api/v1/api_keys`) 3. Wallet visibility (`/api/v1/balance`) 4. Discovery (`/api/v1/search`) 5. Paid execution (`/api/v1/fetch`) 6. Purchase history (`/api/v1/purchases`) Seller-side concerns (agent management, payout analytics, webhook delivery, the public storefront for `data_api` resources) live in the dashboard and are intentionally not documented here. They will be split out into a separate, dashboard-scoped spec when they need to be SDK-consumable. All errors share the envelope defined by `ErrorResponse`, except the buyer-runtime endpoints (`/search`, `/fetch`) which use bespoke envelopes carrying additional context — see `SearchErrorResponse` and `FetchErrorResponse`.
5
+
6
+ The version of the OpenAPI document: 0.9.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Weft
17
+ # The same price constraint in integer micro-USD (1 USDC = 1_000_000 micro-USD) — the settlement form. Set exactly one operator: a scalar (`lte` / `gte` / `eq`) OR a range (`range_gte` + `range_lte` together, lower ≤ upper). Mutually exclusive with `price`. An unpriced resource is excluded from any price-filtered query.
18
+ class SearchPriceAtomicFilter < ApiModelBase
19
+ # Price ≤ this many micro-USD (inclusive ceiling).
20
+ attr_accessor :lte
21
+
22
+ # Price ≥ this many micro-USD (inclusive floor).
23
+ attr_accessor :gte
24
+
25
+ # Price exactly this many micro-USD.
26
+ attr_accessor :eq
27
+
28
+ # Range lower bound (inclusive), micro-USD. Set with range_lte.
29
+ attr_accessor :range_gte
30
+
31
+ # Range upper bound (inclusive), micro-USD. Set with range_gte.
32
+ attr_accessor :range_lte
33
+
34
+ # Attribute mapping from ruby-style variable name to JSON key.
35
+ def self.attribute_map
36
+ {
37
+ :'lte' => :'lte',
38
+ :'gte' => :'gte',
39
+ :'eq' => :'eq',
40
+ :'range_gte' => :'range_gte',
41
+ :'range_lte' => :'range_lte'
42
+ }
43
+ end
44
+
45
+ # Returns attribute mapping this model knows about
46
+ def self.acceptable_attribute_map
47
+ attribute_map
48
+ end
49
+
50
+ # Returns all the JSON keys this model knows about
51
+ def self.acceptable_attributes
52
+ acceptable_attribute_map.values
53
+ end
54
+
55
+ # Attribute type mapping.
56
+ def self.openapi_types
57
+ {
58
+ :'lte' => :'Integer',
59
+ :'gte' => :'Integer',
60
+ :'eq' => :'Integer',
61
+ :'range_gte' => :'Integer',
62
+ :'range_lte' => :'Integer'
63
+ }
64
+ end
65
+
66
+ # List of attributes with nullable: true
67
+ def self.openapi_nullable
68
+ Set.new([
69
+ ])
70
+ end
71
+
72
+ # Initializes the object
73
+ # @param [Hash] attributes Model attributes in the form of hash
74
+ def initialize(attributes = {})
75
+ if (!attributes.is_a?(Hash))
76
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Weft::SearchPriceAtomicFilter` initialize method"
77
+ end
78
+
79
+ # check to see if the attribute exists and convert string to symbol for hash key
80
+ acceptable_attribute_map = self.class.acceptable_attribute_map
81
+ attributes = attributes.each_with_object({}) { |(k, v), h|
82
+ if (!acceptable_attribute_map.key?(k.to_sym))
83
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Weft::SearchPriceAtomicFilter`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
84
+ end
85
+ h[k.to_sym] = v
86
+ }
87
+
88
+ if attributes.key?(:'lte')
89
+ self.lte = attributes[:'lte']
90
+ end
91
+
92
+ if attributes.key?(:'gte')
93
+ self.gte = attributes[:'gte']
94
+ end
95
+
96
+ if attributes.key?(:'eq')
97
+ self.eq = attributes[:'eq']
98
+ end
99
+
100
+ if attributes.key?(:'range_gte')
101
+ self.range_gte = attributes[:'range_gte']
102
+ end
103
+
104
+ if attributes.key?(:'range_lte')
105
+ self.range_lte = attributes[:'range_lte']
106
+ end
107
+ end
108
+
109
+ # Show invalid properties with the reasons. Usually used together with valid?
110
+ # @return Array for valid properties with the reasons
111
+ def list_invalid_properties
112
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
113
+ invalid_properties = Array.new
114
+ if !@lte.nil? && @lte < 0
115
+ invalid_properties.push('invalid value for "lte", must be greater than or equal to 0.')
116
+ end
117
+
118
+ if !@gte.nil? && @gte < 0
119
+ invalid_properties.push('invalid value for "gte", must be greater than or equal to 0.')
120
+ end
121
+
122
+ if !@eq.nil? && @eq < 0
123
+ invalid_properties.push('invalid value for "eq", must be greater than or equal to 0.')
124
+ end
125
+
126
+ if !@range_gte.nil? && @range_gte < 0
127
+ invalid_properties.push('invalid value for "range_gte", must be greater than or equal to 0.')
128
+ end
129
+
130
+ if !@range_lte.nil? && @range_lte < 0
131
+ invalid_properties.push('invalid value for "range_lte", must be greater than or equal to 0.')
132
+ end
133
+
134
+ invalid_properties
135
+ end
136
+
137
+ # Check to see if the all the properties in the model are valid
138
+ # @return true if the model is valid
139
+ def valid?
140
+ warn '[DEPRECATED] the `valid?` method is obsolete'
141
+ return false if !@lte.nil? && @lte < 0
142
+ return false if !@gte.nil? && @gte < 0
143
+ return false if !@eq.nil? && @eq < 0
144
+ return false if !@range_gte.nil? && @range_gte < 0
145
+ return false if !@range_lte.nil? && @range_lte < 0
146
+ true
147
+ end
148
+
149
+ # Custom attribute writer method with validation
150
+ # @param [Object] lte Value to be assigned
151
+ def lte=(lte)
152
+ if lte.nil?
153
+ fail ArgumentError, 'lte cannot be nil'
154
+ end
155
+
156
+ if lte < 0
157
+ fail ArgumentError, 'invalid value for "lte", must be greater than or equal to 0.'
158
+ end
159
+
160
+ @lte = lte
161
+ end
162
+
163
+ # Custom attribute writer method with validation
164
+ # @param [Object] gte Value to be assigned
165
+ def gte=(gte)
166
+ if gte.nil?
167
+ fail ArgumentError, 'gte cannot be nil'
168
+ end
169
+
170
+ if gte < 0
171
+ fail ArgumentError, 'invalid value for "gte", must be greater than or equal to 0.'
172
+ end
173
+
174
+ @gte = gte
175
+ end
176
+
177
+ # Custom attribute writer method with validation
178
+ # @param [Object] eq Value to be assigned
179
+ def eq=(eq)
180
+ if eq.nil?
181
+ fail ArgumentError, 'eq cannot be nil'
182
+ end
183
+
184
+ if eq < 0
185
+ fail ArgumentError, 'invalid value for "eq", must be greater than or equal to 0.'
186
+ end
187
+
188
+ @eq = eq
189
+ end
190
+
191
+ # Custom attribute writer method with validation
192
+ # @param [Object] range_gte Value to be assigned
193
+ def range_gte=(range_gte)
194
+ if range_gte.nil?
195
+ fail ArgumentError, 'range_gte cannot be nil'
196
+ end
197
+
198
+ if range_gte < 0
199
+ fail ArgumentError, 'invalid value for "range_gte", must be greater than or equal to 0.'
200
+ end
201
+
202
+ @range_gte = range_gte
203
+ end
204
+
205
+ # Custom attribute writer method with validation
206
+ # @param [Object] range_lte Value to be assigned
207
+ def range_lte=(range_lte)
208
+ if range_lte.nil?
209
+ fail ArgumentError, 'range_lte cannot be nil'
210
+ end
211
+
212
+ if range_lte < 0
213
+ fail ArgumentError, 'invalid value for "range_lte", must be greater than or equal to 0.'
214
+ end
215
+
216
+ @range_lte = range_lte
217
+ end
218
+
219
+ # Checks equality by comparing each attribute.
220
+ # @param [Object] Object to be compared
221
+ def ==(o)
222
+ return true if self.equal?(o)
223
+ self.class == o.class &&
224
+ lte == o.lte &&
225
+ gte == o.gte &&
226
+ eq == o.eq &&
227
+ range_gte == o.range_gte &&
228
+ range_lte == o.range_lte
229
+ end
230
+
231
+ # @see the `==` method
232
+ # @param [Object] Object to be compared
233
+ def eql?(o)
234
+ self == o
235
+ end
236
+
237
+ # Calculates hash code according to all attributes.
238
+ # @return [Integer] Hash code
239
+ def hash
240
+ [lte, gte, eq, range_gte, range_lte].hash
241
+ end
242
+
243
+ # Builds the object from hash
244
+ # @param [Hash] attributes Model attributes in the form of hash
245
+ # @return [Object] Returns the model itself
246
+ def self.build_from_hash(attributes)
247
+ return nil unless attributes.is_a?(Hash)
248
+ attributes = attributes.transform_keys(&:to_sym)
249
+ transformed_hash = {}
250
+ openapi_types.each_pair do |key, type|
251
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
252
+ transformed_hash["#{key}"] = nil
253
+ elsif type =~ /\AArray<(.*)>/i
254
+ # check to ensure the input is an array given that the attribute
255
+ # is documented as an array but the input is not
256
+ if attributes[attribute_map[key]].is_a?(Array)
257
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
258
+ end
259
+ elsif !attributes[attribute_map[key]].nil?
260
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
261
+ end
262
+ end
263
+ new(transformed_hash)
264
+ end
265
+
266
+ # Returns the object in the form of hash
267
+ # @return [Hash] Returns the object in the form of hash
268
+ def to_hash
269
+ hash = {}
270
+ self.class.attribute_map.each_pair do |attr, param|
271
+ value = self.send(attr)
272
+ if value.nil?
273
+ is_nullable = self.class.openapi_nullable.include?(attr)
274
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
275
+ end
276
+
277
+ hash[param] = _to_hash(value)
278
+ end
279
+ hash
280
+ end
281
+
282
+ end
283
+
284
+ end
@@ -0,0 +1,294 @@
1
+ =begin
2
+ #Weft API
3
+
4
+ #The Weft API is the buyer-runtime surface that powers the `weft` CLI, the hosted MCP server (`weft.network/mcp`), and any third-party agent that wants to discover and pay for paid resources on Weft. v1 covers five buyer concerns: 1. Account onboarding (`/api/v1/auth/*`, `/api/v1/me`) 2. CLI authentication (`/api/v1/api_keys`) 3. Wallet visibility (`/api/v1/balance`) 4. Discovery (`/api/v1/search`) 5. Paid execution (`/api/v1/fetch`) 6. Purchase history (`/api/v1/purchases`) Seller-side concerns (agent management, payout analytics, webhook delivery, the public storefront for `data_api` resources) live in the dashboard and are intentionally not documented here. They will be split out into a separate, dashboard-scoped spec when they need to be SDK-consumable. All errors share the envelope defined by `ErrorResponse`, except the buyer-runtime endpoints (`/search`, `/fetch`) which use bespoke envelopes carrying additional context — see `SearchErrorResponse` and `FetchErrorResponse`.
5
+
6
+ The version of the OpenAPI document: 0.9.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Weft
17
+ # Price constraint in USD, as decimal STRINGS (the reasoning form). Set exactly one operator: a scalar (`lte` / `gte` / `eq`) OR a range (`range_gte` + `range_lte` together, lower ≤ upper). Each value is a string matching `^\\d+(\\.\\d{1,6})?$` (≤ 6 decimals, ≥ 0); a JSON number is rejected. Mutually exclusive with `price_atomic`. An unpriced resource is excluded from any price-filtered query.
18
+ class SearchPriceUsdFilter < ApiModelBase
19
+ # Price ≤ this many USD (inclusive ceiling), e.g. \"0.009\".
20
+ attr_accessor :lte
21
+
22
+ # Price ≥ this many USD (inclusive floor), e.g. \"0.001\".
23
+ attr_accessor :gte
24
+
25
+ # Price exactly this many USD, e.g. \"1.5\".
26
+ attr_accessor :eq
27
+
28
+ # Range lower bound (inclusive), USD. Set with range_lte.
29
+ attr_accessor :range_gte
30
+
31
+ # Range upper bound (inclusive), USD. Set with range_gte.
32
+ attr_accessor :range_lte
33
+
34
+ # Attribute mapping from ruby-style variable name to JSON key.
35
+ def self.attribute_map
36
+ {
37
+ :'lte' => :'lte',
38
+ :'gte' => :'gte',
39
+ :'eq' => :'eq',
40
+ :'range_gte' => :'range_gte',
41
+ :'range_lte' => :'range_lte'
42
+ }
43
+ end
44
+
45
+ # Returns attribute mapping this model knows about
46
+ def self.acceptable_attribute_map
47
+ attribute_map
48
+ end
49
+
50
+ # Returns all the JSON keys this model knows about
51
+ def self.acceptable_attributes
52
+ acceptable_attribute_map.values
53
+ end
54
+
55
+ # Attribute type mapping.
56
+ def self.openapi_types
57
+ {
58
+ :'lte' => :'String',
59
+ :'gte' => :'String',
60
+ :'eq' => :'String',
61
+ :'range_gte' => :'String',
62
+ :'range_lte' => :'String'
63
+ }
64
+ end
65
+
66
+ # List of attributes with nullable: true
67
+ def self.openapi_nullable
68
+ Set.new([
69
+ ])
70
+ end
71
+
72
+ # Initializes the object
73
+ # @param [Hash] attributes Model attributes in the form of hash
74
+ def initialize(attributes = {})
75
+ if (!attributes.is_a?(Hash))
76
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Weft::SearchPriceUsdFilter` initialize method"
77
+ end
78
+
79
+ # check to see if the attribute exists and convert string to symbol for hash key
80
+ acceptable_attribute_map = self.class.acceptable_attribute_map
81
+ attributes = attributes.each_with_object({}) { |(k, v), h|
82
+ if (!acceptable_attribute_map.key?(k.to_sym))
83
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Weft::SearchPriceUsdFilter`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
84
+ end
85
+ h[k.to_sym] = v
86
+ }
87
+
88
+ if attributes.key?(:'lte')
89
+ self.lte = attributes[:'lte']
90
+ end
91
+
92
+ if attributes.key?(:'gte')
93
+ self.gte = attributes[:'gte']
94
+ end
95
+
96
+ if attributes.key?(:'eq')
97
+ self.eq = attributes[:'eq']
98
+ end
99
+
100
+ if attributes.key?(:'range_gte')
101
+ self.range_gte = attributes[:'range_gte']
102
+ end
103
+
104
+ if attributes.key?(:'range_lte')
105
+ self.range_lte = attributes[:'range_lte']
106
+ end
107
+ end
108
+
109
+ # Show invalid properties with the reasons. Usually used together with valid?
110
+ # @return Array for valid properties with the reasons
111
+ def list_invalid_properties
112
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
113
+ invalid_properties = Array.new
114
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
115
+ if !@lte.nil? && @lte !~ pattern
116
+ invalid_properties.push("invalid value for \"lte\", must conform to the pattern #{pattern}.")
117
+ end
118
+
119
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
120
+ if !@gte.nil? && @gte !~ pattern
121
+ invalid_properties.push("invalid value for \"gte\", must conform to the pattern #{pattern}.")
122
+ end
123
+
124
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
125
+ if !@eq.nil? && @eq !~ pattern
126
+ invalid_properties.push("invalid value for \"eq\", must conform to the pattern #{pattern}.")
127
+ end
128
+
129
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
130
+ if !@range_gte.nil? && @range_gte !~ pattern
131
+ invalid_properties.push("invalid value for \"range_gte\", must conform to the pattern #{pattern}.")
132
+ end
133
+
134
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
135
+ if !@range_lte.nil? && @range_lte !~ pattern
136
+ invalid_properties.push("invalid value for \"range_lte\", must conform to the pattern #{pattern}.")
137
+ end
138
+
139
+ invalid_properties
140
+ end
141
+
142
+ # Check to see if the all the properties in the model are valid
143
+ # @return true if the model is valid
144
+ def valid?
145
+ warn '[DEPRECATED] the `valid?` method is obsolete'
146
+ return false if !@lte.nil? && @lte !~ Regexp.new(/^\d+(\.\d{1,6})?$/)
147
+ return false if !@gte.nil? && @gte !~ Regexp.new(/^\d+(\.\d{1,6})?$/)
148
+ return false if !@eq.nil? && @eq !~ Regexp.new(/^\d+(\.\d{1,6})?$/)
149
+ return false if !@range_gte.nil? && @range_gte !~ Regexp.new(/^\d+(\.\d{1,6})?$/)
150
+ return false if !@range_lte.nil? && @range_lte !~ Regexp.new(/^\d+(\.\d{1,6})?$/)
151
+ true
152
+ end
153
+
154
+ # Custom attribute writer method with validation
155
+ # @param [Object] lte Value to be assigned
156
+ def lte=(lte)
157
+ if lte.nil?
158
+ fail ArgumentError, 'lte cannot be nil'
159
+ end
160
+
161
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
162
+ if lte !~ pattern
163
+ fail ArgumentError, "invalid value for \"lte\", must conform to the pattern #{pattern}."
164
+ end
165
+
166
+ @lte = lte
167
+ end
168
+
169
+ # Custom attribute writer method with validation
170
+ # @param [Object] gte Value to be assigned
171
+ def gte=(gte)
172
+ if gte.nil?
173
+ fail ArgumentError, 'gte cannot be nil'
174
+ end
175
+
176
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
177
+ if gte !~ pattern
178
+ fail ArgumentError, "invalid value for \"gte\", must conform to the pattern #{pattern}."
179
+ end
180
+
181
+ @gte = gte
182
+ end
183
+
184
+ # Custom attribute writer method with validation
185
+ # @param [Object] eq Value to be assigned
186
+ def eq=(eq)
187
+ if eq.nil?
188
+ fail ArgumentError, 'eq cannot be nil'
189
+ end
190
+
191
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
192
+ if eq !~ pattern
193
+ fail ArgumentError, "invalid value for \"eq\", must conform to the pattern #{pattern}."
194
+ end
195
+
196
+ @eq = eq
197
+ end
198
+
199
+ # Custom attribute writer method with validation
200
+ # @param [Object] range_gte Value to be assigned
201
+ def range_gte=(range_gte)
202
+ if range_gte.nil?
203
+ fail ArgumentError, 'range_gte cannot be nil'
204
+ end
205
+
206
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
207
+ if range_gte !~ pattern
208
+ fail ArgumentError, "invalid value for \"range_gte\", must conform to the pattern #{pattern}."
209
+ end
210
+
211
+ @range_gte = range_gte
212
+ end
213
+
214
+ # Custom attribute writer method with validation
215
+ # @param [Object] range_lte Value to be assigned
216
+ def range_lte=(range_lte)
217
+ if range_lte.nil?
218
+ fail ArgumentError, 'range_lte cannot be nil'
219
+ end
220
+
221
+ pattern = Regexp.new(/^\d+(\.\d{1,6})?$/)
222
+ if range_lte !~ pattern
223
+ fail ArgumentError, "invalid value for \"range_lte\", must conform to the pattern #{pattern}."
224
+ end
225
+
226
+ @range_lte = range_lte
227
+ end
228
+
229
+ # Checks equality by comparing each attribute.
230
+ # @param [Object] Object to be compared
231
+ def ==(o)
232
+ return true if self.equal?(o)
233
+ self.class == o.class &&
234
+ lte == o.lte &&
235
+ gte == o.gte &&
236
+ eq == o.eq &&
237
+ range_gte == o.range_gte &&
238
+ range_lte == o.range_lte
239
+ end
240
+
241
+ # @see the `==` method
242
+ # @param [Object] Object to be compared
243
+ def eql?(o)
244
+ self == o
245
+ end
246
+
247
+ # Calculates hash code according to all attributes.
248
+ # @return [Integer] Hash code
249
+ def hash
250
+ [lte, gte, eq, range_gte, range_lte].hash
251
+ end
252
+
253
+ # Builds the object from hash
254
+ # @param [Hash] attributes Model attributes in the form of hash
255
+ # @return [Object] Returns the model itself
256
+ def self.build_from_hash(attributes)
257
+ return nil unless attributes.is_a?(Hash)
258
+ attributes = attributes.transform_keys(&:to_sym)
259
+ transformed_hash = {}
260
+ openapi_types.each_pair do |key, type|
261
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
262
+ transformed_hash["#{key}"] = nil
263
+ elsif type =~ /\AArray<(.*)>/i
264
+ # check to ensure the input is an array given that the attribute
265
+ # is documented as an array but the input is not
266
+ if attributes[attribute_map[key]].is_a?(Array)
267
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
268
+ end
269
+ elsif !attributes[attribute_map[key]].nil?
270
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
271
+ end
272
+ end
273
+ new(transformed_hash)
274
+ end
275
+
276
+ # Returns the object in the form of hash
277
+ # @return [Hash] Returns the object in the form of hash
278
+ def to_hash
279
+ hash = {}
280
+ self.class.attribute_map.each_pair do |attr, param|
281
+ value = self.send(attr)
282
+ if value.nil?
283
+ is_nullable = self.class.openapi_nullable.include?(attr)
284
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
285
+ end
286
+
287
+ hash[param] = _to_hash(value)
288
+ end
289
+ hash
290
+ end
291
+
292
+ end
293
+
294
+ end