devdraft 1.0.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 (205) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/README.md +1246 -0
  4. data/Rakefile +8 -0
  5. data/devdraft_ai_sdk.gemspec +38 -0
  6. data/docs/APIHealthApi.md +87 -0
  7. data/docs/AggregatedBalanceResponse.md +9 -0
  8. data/docs/AllBalancesResponse.md +9 -0
  9. data/docs/AllOfAllBalancesResponseEurc.md +9 -0
  10. data/docs/AllOfAllBalancesResponseUsdc.md +9 -0
  11. data/docs/AllOfCreateBankPaymentIntentDtoDestinationCurrency.md +6 -0
  12. data/docs/AllOfCreateBankPaymentIntentDtoDestinationNetwork.md +6 -0
  13. data/docs/AllOfCreateBankPaymentIntentDtoSourceCurrency.md +6 -0
  14. data/docs/AllOfCreateBankPaymentIntentDtoSourcePaymentRail.md +6 -0
  15. data/docs/AllOfCreateCustomerDtoStatus.md +6 -0
  16. data/docs/AllOfCreateLiquidationAddressDtoDestinationCurrency.md +6 -0
  17. data/docs/AllOfCreateLiquidationAddressDtoDestinationPaymentRail.md +6 -0
  18. data/docs/AllOfCreateStablePaymentIntentDtoDestinationCurrency.md +6 -0
  19. data/docs/AllOfCreateStablePaymentIntentDtoDestinationNetwork.md +6 -0
  20. data/docs/AllOfCreateStablePaymentIntentDtoSourceCurrency.md +6 -0
  21. data/docs/AllOfCreateStablePaymentIntentDtoSourceNetwork.md +6 -0
  22. data/docs/AllOfUpdateCustomerDtoStatus.md +6 -0
  23. data/docs/AppBalancesApi.md +169 -0
  24. data/docs/BridgePaymentRail.md +6 -0
  25. data/docs/CreateBankPaymentIntentDto.md +24 -0
  26. data/docs/CreateCustomerDto.md +12 -0
  27. data/docs/CreateDirectBankTransferDto.md +14 -0
  28. data/docs/CreateDirectWalletTransferDto.md +10 -0
  29. data/docs/CreateInvoiceDto.md +22 -0
  30. data/docs/CreateLiquidationAddressDto.md +21 -0
  31. data/docs/CreatePaymentLinkDto.md +31 -0
  32. data/docs/CreateProductDto.md +18 -0
  33. data/docs/CreateStablePaymentIntentDto.md +21 -0
  34. data/docs/CreateStablecoinConversionDto.md +11 -0
  35. data/docs/CreateTaxInput.md +6 -0
  36. data/docs/CreateWebhookDto.md +11 -0
  37. data/docs/CustomerStatus.md +6 -0
  38. data/docs/CustomersApi.md +250 -0
  39. data/docs/DestinationCurrency.md +6 -0
  40. data/docs/ExchangeRateResponseDto.md +12 -0
  41. data/docs/ExchangeRatesApi.md +176 -0
  42. data/docs/FiatCurrency.md +6 -0
  43. data/docs/HealthResponseDto.md +12 -0
  44. data/docs/InvoiceProductDto.md +8 -0
  45. data/docs/InvoicesApi.md +236 -0
  46. data/docs/LiquidationAddressResponseDto.md +20 -0
  47. data/docs/LiquidationAddressesApi.md +152 -0
  48. data/docs/PaymentIntentsApi.md +127 -0
  49. data/docs/PaymentLinkProductDto.md +8 -0
  50. data/docs/PaymentLinksApi.md +238 -0
  51. data/docs/PaymentRequestDto.md +10 -0
  52. data/docs/PaymentResponseDto.md +11 -0
  53. data/docs/ProductsApi.md +404 -0
  54. data/docs/PublicHealthResponseDto.md +9 -0
  55. data/docs/RefundResponseDto.md +11 -0
  56. data/docs/StableCoinCurrency.md +6 -0
  57. data/docs/TaxesApi.md +292 -0
  58. data/docs/TestPaymentsApi.md +150 -0
  59. data/docs/TransfersApi.md +175 -0
  60. data/docs/UpdateCustomerDto.md +12 -0
  61. data/docs/UpdatePaymentLinkDto.md +6 -0
  62. data/docs/UpdatePreferenceInput.md +6 -0
  63. data/docs/UpdateProductDto.md +18 -0
  64. data/docs/UpdateTaxInput.md +6 -0
  65. data/docs/UpdateWebhookDto.md +11 -0
  66. data/docs/WalletsApi.md +58 -0
  67. data/docs/WebhookResponseDto.md +14 -0
  68. data/docs/WebhooksApi.md +307 -0
  69. data/git_push.sh +44 -0
  70. data/lib/devdraft/api/api_health_api.rb +116 -0
  71. data/lib/devdraft/api/app_balances_api.rb +170 -0
  72. data/lib/devdraft/api/customers_api.rb +258 -0
  73. data/lib/devdraft/api/exchange_rates_api.rb +184 -0
  74. data/lib/devdraft/api/invoices_api.rb +238 -0
  75. data/lib/devdraft/api/liquidation_addresses_api.rb +202 -0
  76. data/lib/devdraft/api/payment_intents_api.rb +150 -0
  77. data/lib/devdraft/api/payment_links_api.rb +240 -0
  78. data/lib/devdraft/api/products_api.rb +518 -0
  79. data/lib/devdraft/api/taxes_api.rb +290 -0
  80. data/lib/devdraft/api/test_payments_api.rb +202 -0
  81. data/lib/devdraft/api/transfers_api.rb +182 -0
  82. data/lib/devdraft/api/wallets_api.rb +66 -0
  83. data/lib/devdraft/api/webhooks_api.rb +310 -0
  84. data/lib/devdraft/api_client.rb +388 -0
  85. data/lib/devdraft/api_error.rb +57 -0
  86. data/lib/devdraft/configuration.rb +219 -0
  87. data/lib/devdraft/models/aggregated_balance_response.rb +278 -0
  88. data/lib/devdraft/models/all_balances_response.rb +242 -0
  89. data/lib/devdraft/models/all_of_all_balances_response_eurc.rb +283 -0
  90. data/lib/devdraft/models/all_of_all_balances_response_usdc.rb +283 -0
  91. data/lib/devdraft/models/all_of_create_bank_payment_intent_dto_destination_currency.rb +202 -0
  92. data/lib/devdraft/models/all_of_create_bank_payment_intent_dto_destination_network.rb +202 -0
  93. data/lib/devdraft/models/all_of_create_bank_payment_intent_dto_source_currency.rb +202 -0
  94. data/lib/devdraft/models/all_of_create_bank_payment_intent_dto_source_payment_rail.rb +202 -0
  95. data/lib/devdraft/models/all_of_create_customer_dto_status.rb +202 -0
  96. data/lib/devdraft/models/all_of_create_liquidation_address_dto_destination_currency.rb +202 -0
  97. data/lib/devdraft/models/all_of_create_liquidation_address_dto_destination_payment_rail.rb +202 -0
  98. data/lib/devdraft/models/all_of_create_stable_payment_intent_dto_destination_currency.rb +202 -0
  99. data/lib/devdraft/models/all_of_create_stable_payment_intent_dto_destination_network.rb +202 -0
  100. data/lib/devdraft/models/all_of_create_stable_payment_intent_dto_source_currency.rb +202 -0
  101. data/lib/devdraft/models/all_of_create_stable_payment_intent_dto_source_network.rb +202 -0
  102. data/lib/devdraft/models/all_of_update_customer_dto_status.rb +202 -0
  103. data/lib/devdraft/models/bridge_payment_rail.rb +43 -0
  104. data/lib/devdraft/models/create_bank_payment_intent_dto.rb +397 -0
  105. data/lib/devdraft/models/create_customer_dto.rb +308 -0
  106. data/lib/devdraft/models/create_direct_bank_transfer_dto.rb +302 -0
  107. data/lib/devdraft/models/create_direct_wallet_transfer_dto.rb +257 -0
  108. data/lib/devdraft/models/create_invoice_dto.rb +474 -0
  109. data/lib/devdraft/models/create_liquidation_address_dto.rb +408 -0
  110. data/lib/devdraft/models/create_payment_link_dto.rb +603 -0
  111. data/lib/devdraft/models/create_product_dto.rb +370 -0
  112. data/lib/devdraft/models/create_stable_payment_intent_dto.rb +362 -0
  113. data/lib/devdraft/models/create_stablecoin_conversion_dto.rb +272 -0
  114. data/lib/devdraft/models/create_tax_input.rb +197 -0
  115. data/lib/devdraft/models/create_webhook_dto.rb +271 -0
  116. data/lib/devdraft/models/customer_status.rb +29 -0
  117. data/lib/devdraft/models/destination_currency.rb +34 -0
  118. data/lib/devdraft/models/exchange_rate_response_dto.rb +282 -0
  119. data/lib/devdraft/models/fiat_currency.rb +29 -0
  120. data/lib/devdraft/models/health_response_dto.rb +333 -0
  121. data/lib/devdraft/models/invoice_product_dto.rb +227 -0
  122. data/lib/devdraft/models/liquidation_address_response_dto.rb +377 -0
  123. data/lib/devdraft/models/payment_link_product_dto.rb +229 -0
  124. data/lib/devdraft/models/payment_request_dto.rb +252 -0
  125. data/lib/devdraft/models/payment_response_dto.rb +272 -0
  126. data/lib/devdraft/models/public_health_response_dto.rb +276 -0
  127. data/lib/devdraft/models/refund_response_dto.rb +272 -0
  128. data/lib/devdraft/models/stable_coin_currency.rb +28 -0
  129. data/lib/devdraft/models/update_customer_dto.rb +293 -0
  130. data/lib/devdraft/models/update_payment_link_dto.rb +197 -0
  131. data/lib/devdraft/models/update_preference_input.rb +197 -0
  132. data/lib/devdraft/models/update_product_dto.rb +355 -0
  133. data/lib/devdraft/models/update_tax_input.rb +197 -0
  134. data/lib/devdraft/models/update_webhook_dto.rb +251 -0
  135. data/lib/devdraft/models/webhook_response_dto.rb +317 -0
  136. data/lib/devdraft/version.rb +14 -0
  137. data/lib/devdraft.rb +101 -0
  138. data/spec/api/api_health_api_spec.rb +54 -0
  139. data/spec/api/app_balances_api_spec.rb +67 -0
  140. data/spec/api/customers_api_spec.rb +87 -0
  141. data/spec/api/exchange_rates_api_spec.rb +69 -0
  142. data/spec/api/invoices_api_spec.rb +80 -0
  143. data/spec/api/liquidation_addresses_api_spec.rb +72 -0
  144. data/spec/api/payment_intents_api_spec.rb +60 -0
  145. data/spec/api/payment_links_api_spec.rb +81 -0
  146. data/spec/api/products_api_spec.rb +130 -0
  147. data/spec/api/taxes_api_spec.rb +91 -0
  148. data/spec/api/test_payments_api_spec.rb +71 -0
  149. data/spec/api/transfers_api_spec.rb +67 -0
  150. data/spec/api/wallets_api_spec.rb +44 -0
  151. data/spec/api/webhooks_api_spec.rb +96 -0
  152. data/spec/api_client_spec.rb +225 -0
  153. data/spec/base_object_spec.rb +109 -0
  154. data/spec/configuration_spec.rb +41 -0
  155. data/spec/models/aggregated_balance_response_spec.rb +56 -0
  156. data/spec/models/all_balances_response_spec.rb +52 -0
  157. data/spec/models/all_of_all_balances_response_eurc_spec.rb +56 -0
  158. data/spec/models/all_of_all_balances_response_usdc_spec.rb +56 -0
  159. data/spec/models/all_of_create_bank_payment_intent_dto_destination_currency_spec.rb +34 -0
  160. data/spec/models/all_of_create_bank_payment_intent_dto_destination_network_spec.rb +34 -0
  161. data/spec/models/all_of_create_bank_payment_intent_dto_source_currency_spec.rb +34 -0
  162. data/spec/models/all_of_create_bank_payment_intent_dto_source_payment_rail_spec.rb +34 -0
  163. data/spec/models/all_of_create_customer_dto_status_spec.rb +34 -0
  164. data/spec/models/all_of_create_liquidation_address_dto_destination_currency_spec.rb +34 -0
  165. data/spec/models/all_of_create_liquidation_address_dto_destination_payment_rail_spec.rb +34 -0
  166. data/spec/models/all_of_create_stable_payment_intent_dto_destination_currency_spec.rb +34 -0
  167. data/spec/models/all_of_create_stable_payment_intent_dto_destination_network_spec.rb +34 -0
  168. data/spec/models/all_of_create_stable_payment_intent_dto_source_currency_spec.rb +34 -0
  169. data/spec/models/all_of_create_stable_payment_intent_dto_source_network_spec.rb +34 -0
  170. data/spec/models/all_of_update_customer_dto_status_spec.rb +34 -0
  171. data/spec/models/bridge_payment_rail_spec.rb +34 -0
  172. data/spec/models/create_bank_payment_intent_dto_spec.rb +142 -0
  173. data/spec/models/create_customer_dto_spec.rb +74 -0
  174. data/spec/models/create_direct_bank_transfer_dto_spec.rb +82 -0
  175. data/spec/models/create_direct_wallet_transfer_dto_spec.rb +58 -0
  176. data/spec/models/create_invoice_dto_spec.rb +146 -0
  177. data/spec/models/create_liquidation_address_dto_spec.rb +132 -0
  178. data/spec/models/create_payment_link_dto_spec.rb +200 -0
  179. data/spec/models/create_product_dto_spec.rb +110 -0
  180. data/spec/models/create_stable_payment_intent_dto_spec.rb +124 -0
  181. data/spec/models/create_stablecoin_conversion_dto_spec.rb +64 -0
  182. data/spec/models/create_tax_input_spec.rb +34 -0
  183. data/spec/models/create_webhook_dto_spec.rb +64 -0
  184. data/spec/models/customer_status_spec.rb +34 -0
  185. data/spec/models/destination_currency_spec.rb +34 -0
  186. data/spec/models/exchange_rate_response_dto_spec.rb +70 -0
  187. data/spec/models/fiat_currency_spec.rb +34 -0
  188. data/spec/models/health_response_dto_spec.rb +78 -0
  189. data/spec/models/invoice_product_dto_spec.rb +46 -0
  190. data/spec/models/liquidation_address_response_dto_spec.rb +118 -0
  191. data/spec/models/payment_link_product_dto_spec.rb +46 -0
  192. data/spec/models/payment_request_dto_spec.rb +58 -0
  193. data/spec/models/payment_response_dto_spec.rb +64 -0
  194. data/spec/models/public_health_response_dto_spec.rb +56 -0
  195. data/spec/models/refund_response_dto_spec.rb +64 -0
  196. data/spec/models/stable_coin_currency_spec.rb +34 -0
  197. data/spec/models/update_customer_dto_spec.rb +74 -0
  198. data/spec/models/update_payment_link_dto_spec.rb +34 -0
  199. data/spec/models/update_preference_input_spec.rb +34 -0
  200. data/spec/models/update_product_dto_spec.rb +110 -0
  201. data/spec/models/update_tax_input_spec.rb +34 -0
  202. data/spec/models/update_webhook_dto_spec.rb +64 -0
  203. data/spec/models/webhook_response_dto_spec.rb +82 -0
  204. data/spec/spec_helper.rb +110 -0
  205. metadata +375 -0
@@ -0,0 +1,474 @@
1
+ =begin
2
+ #Devdraft AI Payment & Business Management API
3
+
4
+ # A comprehensive payment processing and business management API that enables seamless integration of cryptocurrency and traditional payment methods.
5
+
6
+ OpenAPI spec version: 1.0.0
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 3.0.65
10
+ =end
11
+
12
+ require 'date'
13
+
14
+ module DevDraftAI
15
+ class CreateInvoiceDto
16
+ # Name of the invoice
17
+ attr_accessor :name
18
+
19
+ # Email address
20
+ attr_accessor :email
21
+
22
+ # Customer ID
23
+ attr_accessor :customer_id
24
+
25
+ # Currency for the invoice
26
+ attr_accessor :currency
27
+
28
+ # Array of products in the invoice
29
+ attr_accessor :items
30
+
31
+ # Due date of the invoice
32
+ attr_accessor :due_date
33
+
34
+ # Delivery method
35
+ attr_accessor :delivery
36
+
37
+ # Whether to generate a payment link
38
+ attr_accessor :payment_link
39
+
40
+ # Array of accepted payment methods
41
+ attr_accessor :payment_methods
42
+
43
+ # Invoice status
44
+ attr_accessor :status
45
+
46
+ # Address
47
+ attr_accessor :address
48
+
49
+ # Phone number
50
+ attr_accessor :phone_number
51
+
52
+ # Send date
53
+ attr_accessor :send_date
54
+
55
+ # Logo URL
56
+ attr_accessor :logo
57
+
58
+ # Allow partial payments
59
+ attr_accessor :partial_payment
60
+
61
+ # Tax ID
62
+ attr_accessor :tax_id
63
+
64
+ class EnumAttributeValidator
65
+ attr_reader :datatype
66
+ attr_reader :allowable_values
67
+
68
+ def initialize(datatype, allowable_values)
69
+ @allowable_values = allowable_values.map do |value|
70
+ case datatype.to_s
71
+ when /Integer/i
72
+ value.to_i
73
+ when /Float/i
74
+ value.to_f
75
+ else
76
+ value
77
+ end
78
+ end
79
+ end
80
+
81
+ def valid?(value)
82
+ !value || allowable_values.include?(value)
83
+ end
84
+ end
85
+
86
+ # Attribute mapping from ruby-style variable name to JSON key.
87
+ def self.attribute_map
88
+ {
89
+ :'name' => :'name',
90
+ :'email' => :'email',
91
+ :'customer_id' => :'customer_id',
92
+ :'currency' => :'currency',
93
+ :'items' => :'items',
94
+ :'due_date' => :'due_date',
95
+ :'delivery' => :'delivery',
96
+ :'payment_link' => :'payment_link',
97
+ :'payment_methods' => :'payment_methods',
98
+ :'status' => :'status',
99
+ :'address' => :'address',
100
+ :'phone_number' => :'phone_number',
101
+ :'send_date' => :'send_date',
102
+ :'logo' => :'logo',
103
+ :'partial_payment' => :'partial_payment',
104
+ :'tax_id' => :'taxId'
105
+ }
106
+ end
107
+
108
+ # Attribute type mapping.
109
+ def self.openapi_types
110
+ {
111
+ :'name' => :'Object',
112
+ :'email' => :'Object',
113
+ :'customer_id' => :'Object',
114
+ :'currency' => :'Object',
115
+ :'items' => :'Object',
116
+ :'due_date' => :'Object',
117
+ :'delivery' => :'Object',
118
+ :'payment_link' => :'Object',
119
+ :'payment_methods' => :'Object',
120
+ :'status' => :'Object',
121
+ :'address' => :'Object',
122
+ :'phone_number' => :'Object',
123
+ :'send_date' => :'Object',
124
+ :'logo' => :'Object',
125
+ :'partial_payment' => :'Object',
126
+ :'tax_id' => :'Object'
127
+ }
128
+ end
129
+
130
+ # List of attributes with nullable: true
131
+ def self.openapi_nullable
132
+ Set.new([
133
+ ])
134
+ end
135
+
136
+ # Initializes the object
137
+ # @param [Hash] attributes Model attributes in the form of hash
138
+ def initialize(attributes = {})
139
+ if (!attributes.is_a?(Hash))
140
+ fail ArgumentError, "The input argument (attributes) must be a hash in `DevDraftAI::CreateInvoiceDto` initialize method"
141
+ end
142
+
143
+ # check to see if the attribute exists and convert string to symbol for hash key
144
+ attributes = attributes.each_with_object({}) { |(k, v), h|
145
+ if (!self.class.attribute_map.key?(k.to_sym))
146
+ fail ArgumentError, "`#{k}` is not a valid attribute in `DevDraftAI::CreateInvoiceDto`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
147
+ end
148
+ h[k.to_sym] = v
149
+ }
150
+
151
+ if attributes.key?(:'name')
152
+ self.name = attributes[:'name']
153
+ end
154
+
155
+ if attributes.key?(:'email')
156
+ self.email = attributes[:'email']
157
+ end
158
+
159
+ if attributes.key?(:'customer_id')
160
+ self.customer_id = attributes[:'customer_id']
161
+ end
162
+
163
+ if attributes.key?(:'currency')
164
+ self.currency = attributes[:'currency']
165
+ end
166
+
167
+ if attributes.key?(:'items')
168
+ if (value = attributes[:'items']).is_a?(Array)
169
+ self.items = value
170
+ end
171
+ end
172
+
173
+ if attributes.key?(:'due_date')
174
+ self.due_date = attributes[:'due_date']
175
+ end
176
+
177
+ if attributes.key?(:'delivery')
178
+ self.delivery = attributes[:'delivery']
179
+ end
180
+
181
+ if attributes.key?(:'payment_link')
182
+ self.payment_link = attributes[:'payment_link']
183
+ end
184
+
185
+ if attributes.key?(:'payment_methods')
186
+ if (value = attributes[:'payment_methods']).is_a?(Array)
187
+ self.payment_methods = value
188
+ end
189
+ end
190
+
191
+ if attributes.key?(:'status')
192
+ self.status = attributes[:'status']
193
+ end
194
+
195
+ if attributes.key?(:'address')
196
+ self.address = attributes[:'address']
197
+ end
198
+
199
+ if attributes.key?(:'phone_number')
200
+ self.phone_number = attributes[:'phone_number']
201
+ end
202
+
203
+ if attributes.key?(:'send_date')
204
+ self.send_date = attributes[:'send_date']
205
+ end
206
+
207
+ if attributes.key?(:'logo')
208
+ self.logo = attributes[:'logo']
209
+ end
210
+
211
+ if attributes.key?(:'partial_payment')
212
+ self.partial_payment = attributes[:'partial_payment']
213
+ end
214
+
215
+ if attributes.key?(:'tax_id')
216
+ self.tax_id = attributes[:'tax_id']
217
+ end
218
+ end
219
+
220
+ # Show invalid properties with the reasons. Usually used together with valid?
221
+ # @return Array for valid properties with the reasons
222
+ def list_invalid_properties
223
+ invalid_properties = Array.new
224
+ if @name.nil?
225
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
226
+ end
227
+
228
+ if @email.nil?
229
+ invalid_properties.push('invalid value for "email", email cannot be nil.')
230
+ end
231
+
232
+ if @customer_id.nil?
233
+ invalid_properties.push('invalid value for "customer_id", customer_id cannot be nil.')
234
+ end
235
+
236
+ if @currency.nil?
237
+ invalid_properties.push('invalid value for "currency", currency cannot be nil.')
238
+ end
239
+
240
+ if @items.nil?
241
+ invalid_properties.push('invalid value for "items", items cannot be nil.')
242
+ end
243
+
244
+ if @due_date.nil?
245
+ invalid_properties.push('invalid value for "due_date", due_date cannot be nil.')
246
+ end
247
+
248
+ if @delivery.nil?
249
+ invalid_properties.push('invalid value for "delivery", delivery cannot be nil.')
250
+ end
251
+
252
+ if @payment_link.nil?
253
+ invalid_properties.push('invalid value for "payment_link", payment_link cannot be nil.')
254
+ end
255
+
256
+ if @payment_methods.nil?
257
+ invalid_properties.push('invalid value for "payment_methods", payment_methods cannot be nil.')
258
+ end
259
+
260
+ if @status.nil?
261
+ invalid_properties.push('invalid value for "status", status cannot be nil.')
262
+ end
263
+
264
+ if @partial_payment.nil?
265
+ invalid_properties.push('invalid value for "partial_payment", partial_payment cannot be nil.')
266
+ end
267
+
268
+ invalid_properties
269
+ end
270
+
271
+ # Check to see if the all the properties in the model are valid
272
+ # @return true if the model is valid
273
+ def valid?
274
+ return false if @name.nil?
275
+ return false if @email.nil?
276
+ return false if @customer_id.nil?
277
+ return false if @currency.nil?
278
+ currency_validator = EnumAttributeValidator.new('Object', ['usdc', 'eurc'])
279
+ return false unless currency_validator.valid?(@currency)
280
+ return false if @items.nil?
281
+ return false if @due_date.nil?
282
+ return false if @delivery.nil?
283
+ delivery_validator = EnumAttributeValidator.new('Object', ['EMAIL', 'MANUALLY'])
284
+ return false unless delivery_validator.valid?(@delivery)
285
+ return false if @payment_link.nil?
286
+ return false if @payment_methods.nil?
287
+ return false if @status.nil?
288
+ status_validator = EnumAttributeValidator.new('Object', ['DRAFT', 'OPEN', 'PASTDUE', 'PAID', 'PARTIALLYPAID'])
289
+ return false unless status_validator.valid?(@status)
290
+ return false if @partial_payment.nil?
291
+ true
292
+ end
293
+
294
+ # Custom attribute writer method checking allowed values (enum).
295
+ # @param [Object] currency Object to be assigned
296
+ def currency=(currency)
297
+ validator = EnumAttributeValidator.new('Object', ['usdc', 'eurc'])
298
+ unless validator.valid?(currency)
299
+ fail ArgumentError, "invalid value for \"currency\", must be one of #{validator.allowable_values}."
300
+ end
301
+ @currency = currency
302
+ end
303
+
304
+ # Custom attribute writer method checking allowed values (enum).
305
+ # @param [Object] delivery Object to be assigned
306
+ def delivery=(delivery)
307
+ validator = EnumAttributeValidator.new('Object', ['EMAIL', 'MANUALLY'])
308
+ unless validator.valid?(delivery)
309
+ fail ArgumentError, "invalid value for \"delivery\", must be one of #{validator.allowable_values}."
310
+ end
311
+ @delivery = delivery
312
+ end
313
+
314
+ # Custom attribute writer method checking allowed values (enum).
315
+ # @param [Object] status Object to be assigned
316
+ def status=(status)
317
+ validator = EnumAttributeValidator.new('Object', ['DRAFT', 'OPEN', 'PASTDUE', 'PAID', 'PARTIALLYPAID'])
318
+ unless validator.valid?(status)
319
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
320
+ end
321
+ @status = status
322
+ end
323
+
324
+ # Checks equality by comparing each attribute.
325
+ # @param [Object] Object to be compared
326
+ def ==(o)
327
+ return true if self.equal?(o)
328
+ self.class == o.class &&
329
+ name == o.name &&
330
+ email == o.email &&
331
+ customer_id == o.customer_id &&
332
+ currency == o.currency &&
333
+ items == o.items &&
334
+ due_date == o.due_date &&
335
+ delivery == o.delivery &&
336
+ payment_link == o.payment_link &&
337
+ payment_methods == o.payment_methods &&
338
+ status == o.status &&
339
+ address == o.address &&
340
+ phone_number == o.phone_number &&
341
+ send_date == o.send_date &&
342
+ logo == o.logo &&
343
+ partial_payment == o.partial_payment &&
344
+ tax_id == o.tax_id
345
+ end
346
+
347
+ # @see the `==` method
348
+ # @param [Object] Object to be compared
349
+ def eql?(o)
350
+ self == o
351
+ end
352
+
353
+ # Calculates hash code according to all attributes.
354
+ # @return [Integer] Hash code
355
+ def hash
356
+ [name, email, customer_id, currency, items, due_date, delivery, payment_link, payment_methods, status, address, phone_number, send_date, logo, partial_payment, tax_id].hash
357
+ end
358
+
359
+ # Builds the object from hash
360
+ # @param [Hash] attributes Model attributes in the form of hash
361
+ # @return [Object] Returns the model itself
362
+ def self.build_from_hash(attributes)
363
+ new.build_from_hash(attributes)
364
+ end
365
+
366
+ # Builds the object from hash
367
+ # @param [Hash] attributes Model attributes in the form of hash
368
+ # @return [Object] Returns the model itself
369
+ def build_from_hash(attributes)
370
+ return nil unless attributes.is_a?(Hash)
371
+ self.class.openapi_types.each_pair do |key, type|
372
+ if type =~ /\AArray<(.*)>/i
373
+ # check to ensure the input is an array given that the attribute
374
+ # is documented as an array but the input is not
375
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
376
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
377
+ end
378
+ elsif !attributes[self.class.attribute_map[key]].nil?
379
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
380
+ elsif attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
381
+ self.send("#{key}=", nil)
382
+ end
383
+ end
384
+
385
+ self
386
+ end
387
+
388
+ # Deserializes the data based on type
389
+ # @param string type Data type
390
+ # @param string value Value to be deserialized
391
+ # @return [Object] Deserialized data
392
+ def _deserialize(type, value)
393
+ case type.to_sym
394
+ when :DateTime
395
+ DateTime.parse(value)
396
+ when :Date
397
+ Date.parse(value)
398
+ when :String
399
+ value.to_s
400
+ when :Integer
401
+ value.to_i
402
+ when :Float
403
+ value.to_f
404
+ when :Boolean
405
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
406
+ true
407
+ else
408
+ false
409
+ end
410
+ when :Object
411
+ # generic object (usually a Hash), return directly
412
+ value
413
+ when /\AArray<(?<inner_type>.+)>\z/
414
+ inner_type = Regexp.last_match[:inner_type]
415
+ value.map { |v| _deserialize(inner_type, v) }
416
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
417
+ k_type = Regexp.last_match[:k_type]
418
+ v_type = Regexp.last_match[:v_type]
419
+ {}.tap do |hash|
420
+ value.each do |k, v|
421
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
422
+ end
423
+ end
424
+ else # model
425
+ DevDraftAI.const_get(type).build_from_hash(value)
426
+ end
427
+ end
428
+
429
+ # Returns the string representation of the object
430
+ # @return [String] String presentation of the object
431
+ def to_s
432
+ to_hash.to_s
433
+ end
434
+
435
+ # to_body is an alias to to_hash (backward compatibility)
436
+ # @return [Hash] Returns the object in the form of hash
437
+ def to_body
438
+ to_hash
439
+ end
440
+
441
+ # Returns the object in the form of hash
442
+ # @return [Hash] Returns the object in the form of hash
443
+ def to_hash
444
+ hash = {}
445
+ self.class.attribute_map.each_pair do |attr, param|
446
+ value = self.send(attr)
447
+ if value.nil?
448
+ is_nullable = self.class.openapi_nullable.include?(attr)
449
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
450
+ end
451
+
452
+ hash[param] = _to_hash(value)
453
+ end
454
+ hash
455
+ end
456
+
457
+ # Outputs non-array value in the form of hash
458
+ # For object, use to_hash. Otherwise, just return the value
459
+ # @param [Object] value Any valid value
460
+ # @return [Hash] Returns the value in the form of hash
461
+ def _to_hash(value)
462
+ if value.is_a?(Array)
463
+ value.compact.map { |v| _to_hash(v) }
464
+ elsif value.is_a?(Hash)
465
+ {}.tap do |hash|
466
+ value.each { |k, v| hash[k] = _to_hash(v) }
467
+ end
468
+ elsif value.respond_to? :to_hash
469
+ value.to_hash
470
+ else
471
+ value
472
+ end
473
+ end end
474
+ end