xero-apimatic-sdk 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 (289) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +175 -0
  4. data/bin/console +15 -0
  5. data/lib/xero_ap_is/api_helper.rb +10 -0
  6. data/lib/xero_ap_is/apis/accounting_api.rb +8328 -0
  7. data/lib/xero_ap_is/apis/asset_api.rb +210 -0
  8. data/lib/xero_ap_is/apis/bank_feeds_api.rb +268 -0
  9. data/lib/xero_ap_is/apis/base_api.rb +67 -0
  10. data/lib/xero_ap_is/apis/identity_api.rb +51 -0
  11. data/lib/xero_ap_is/apis/oauth_authorization_api.rb +87 -0
  12. data/lib/xero_ap_is/apis/project_api.rb +662 -0
  13. data/lib/xero_ap_is/client.rb +110 -0
  14. data/lib/xero_ap_is/configuration.rb +196 -0
  15. data/lib/xero_ap_is/exceptions/api_exception.rb +21 -0
  16. data/lib/xero_ap_is/exceptions/asset_types400_error_exception.rb +72 -0
  17. data/lib/xero_ap_is/exceptions/assets400_error_exception.rb +72 -0
  18. data/lib/xero_ap_is/exceptions/error_error1_exception.rb +63 -0
  19. data/lib/xero_ap_is/exceptions/error_error2_exception.rb +51 -0
  20. data/lib/xero_ap_is/exceptions/error_exception.rb +72 -0
  21. data/lib/xero_ap_is/exceptions/feed_connections_error_exception.rb +60 -0
  22. data/lib/xero_ap_is/exceptions/oauth_provider_exception.rb +64 -0
  23. data/lib/xero_ap_is/exceptions/statements_error_exception.rb +60 -0
  24. data/lib/xero_ap_is/http/api_response.rb +19 -0
  25. data/lib/xero_ap_is/http/auth/basic_auth.rb +62 -0
  26. data/lib/xero_ap_is/http/auth/oauth_2.rb +161 -0
  27. data/lib/xero_ap_is/http/http_call_back.rb +10 -0
  28. data/lib/xero_ap_is/http/http_method_enum.rb +10 -0
  29. data/lib/xero_ap_is/http/http_request.rb +10 -0
  30. data/lib/xero_ap_is/http/http_response.rb +10 -0
  31. data/lib/xero_ap_is/http/proxy_settings.rb +22 -0
  32. data/lib/xero_ap_is/logging/configuration/api_logging_configuration.rb +186 -0
  33. data/lib/xero_ap_is/logging/sdk_logger.rb +17 -0
  34. data/lib/xero_ap_is/models/access_token.rb +116 -0
  35. data/lib/xero_ap_is/models/account.rb +300 -0
  36. data/lib/xero_ap_is/models/account_type.rb +100 -0
  37. data/lib/xero_ap_is/models/account_type1.rb +37 -0
  38. data/lib/xero_ap_is/models/accounts.rb +84 -0
  39. data/lib/xero_ap_is/models/accounts_payable.rb +85 -0
  40. data/lib/xero_ap_is/models/accounts_receivable.rb +85 -0
  41. data/lib/xero_ap_is/models/action.rb +85 -0
  42. data/lib/xero_ap_is/models/actions.rb +84 -0
  43. data/lib/xero_ap_is/models/address.rb +167 -0
  44. data/lib/xero_ap_is/models/address_for_organisation.rb +167 -0
  45. data/lib/xero_ap_is/models/address_type.rb +40 -0
  46. data/lib/xero_ap_is/models/address_type1.rb +36 -0
  47. data/lib/xero_ap_is/models/allocation.rb +174 -0
  48. data/lib/xero_ap_is/models/allocations.rb +85 -0
  49. data/lib/xero_ap_is/models/amount.rb +85 -0
  50. data/lib/xero_ap_is/models/asset.rb +249 -0
  51. data/lib/xero_ap_is/models/asset_status.rb +40 -0
  52. data/lib/xero_ap_is/models/asset_status_query_param.rb +40 -0
  53. data/lib/xero_ap_is/models/asset_type.rb +154 -0
  54. data/lib/xero_ap_is/models/assets.rb +94 -0
  55. data/lib/xero_ap_is/models/attachment.rb +126 -0
  56. data/lib/xero_ap_is/models/attachments.rb +85 -0
  57. data/lib/xero_ap_is/models/averaging_method.rb +36 -0
  58. data/lib/xero_ap_is/models/balance_details.rb +98 -0
  59. data/lib/xero_ap_is/models/balances.rb +89 -0
  60. data/lib/xero_ap_is/models/bank_account_type.rb +44 -0
  61. data/lib/xero_ap_is/models/bank_transaction.rb +319 -0
  62. data/lib/xero_ap_is/models/bank_transactions.rb +114 -0
  63. data/lib/xero_ap_is/models/bank_transfer.rb +224 -0
  64. data/lib/xero_ap_is/models/bank_transfers.rb +85 -0
  65. data/lib/xero_ap_is/models/base_model.rb +110 -0
  66. data/lib/xero_ap_is/models/batch_payment.rb +275 -0
  67. data/lib/xero_ap_is/models/batch_payment_delete.rb +84 -0
  68. data/lib/xero_ap_is/models/batch_payment_delete_by_url_param.rb +73 -0
  69. data/lib/xero_ap_is/models/batch_payment_details.rb +128 -0
  70. data/lib/xero_ap_is/models/batch_payments.rb +85 -0
  71. data/lib/xero_ap_is/models/bill.rb +85 -0
  72. data/lib/xero_ap_is/models/book_depreciation_detail.rb +243 -0
  73. data/lib/xero_ap_is/models/book_depreciation_setting.rb +170 -0
  74. data/lib/xero_ap_is/models/branding_theme.rb +129 -0
  75. data/lib/xero_ap_is/models/branding_themes.rb +85 -0
  76. data/lib/xero_ap_is/models/budget.rb +145 -0
  77. data/lib/xero_ap_is/models/budget_balance.rb +105 -0
  78. data/lib/xero_ap_is/models/budget_line.rb +105 -0
  79. data/lib/xero_ap_is/models/budgets.rb +84 -0
  80. data/lib/xero_ap_is/models/charge_type.rb +42 -0
  81. data/lib/xero_ap_is/models/cis_org_setting.rb +105 -0
  82. data/lib/xero_ap_is/models/cis_org_settings.rb +85 -0
  83. data/lib/xero_ap_is/models/cis_setting.rb +86 -0
  84. data/lib/xero_ap_is/models/cis_settings.rb +85 -0
  85. data/lib/xero_ap_is/models/class1.rb +113 -0
  86. data/lib/xero_ap_is/models/connection.rb +155 -0
  87. data/lib/xero_ap_is/models/contact.rb +661 -0
  88. data/lib/xero_ap_is/models/contact_group.rb +119 -0
  89. data/lib/xero_ap_is/models/contact_groups.rb +85 -0
  90. data/lib/xero_ap_is/models/contact_person.rb +108 -0
  91. data/lib/xero_ap_is/models/contact_status.rb +40 -0
  92. data/lib/xero_ap_is/models/contacts.rb +113 -0
  93. data/lib/xero_ap_is/models/conversion_balances.rb +108 -0
  94. data/lib/xero_ap_is/models/conversion_date.rb +87 -0
  95. data/lib/xero_ap_is/models/country_code.rb +990 -0
  96. data/lib/xero_ap_is/models/credit_debit_indicator.rb +37 -0
  97. data/lib/xero_ap_is/models/credit_note.rb +453 -0
  98. data/lib/xero_ap_is/models/credit_notes.rb +113 -0
  99. data/lib/xero_ap_is/models/currencies.rb +85 -0
  100. data/lib/xero_ap_is/models/currency.rb +85 -0
  101. data/lib/xero_ap_is/models/currency_code.rb +700 -0
  102. data/lib/xero_ap_is/models/currency_code1.rb +680 -0
  103. data/lib/xero_ap_is/models/depreciation_calculation_method.rb +40 -0
  104. data/lib/xero_ap_is/models/depreciation_method.rb +52 -0
  105. data/lib/xero_ap_is/models/due_date_type.rb +52 -0
  106. data/lib/xero_ap_is/models/edition.rb +38 -0
  107. data/lib/xero_ap_is/models/element.rb +160 -0
  108. data/lib/xero_ap_is/models/employee.rb +160 -0
  109. data/lib/xero_ap_is/models/employees.rb +85 -0
  110. data/lib/xero_ap_is/models/end_balance.rb +89 -0
  111. data/lib/xero_ap_is/models/error1.rb +138 -0
  112. data/lib/xero_ap_is/models/error2.rb +106 -0
  113. data/lib/xero_ap_is/models/error3.rb +85 -0
  114. data/lib/xero_ap_is/models/expense_claim.rb +209 -0
  115. data/lib/xero_ap_is/models/expense_claims.rb +85 -0
  116. data/lib/xero_ap_is/models/external_link.rb +95 -0
  117. data/lib/xero_ap_is/models/federal_tax_classification.rb +56 -0
  118. data/lib/xero_ap_is/models/feed_connection.rb +177 -0
  119. data/lib/xero_ap_is/models/feed_connections.rb +94 -0
  120. data/lib/xero_ap_is/models/field_validation_errors_element.rb +127 -0
  121. data/lib/xero_ap_is/models/history_record.rb +105 -0
  122. data/lib/xero_ap_is/models/history_records.rb +85 -0
  123. data/lib/xero_ap_is/models/import_summary.rb +87 -0
  124. data/lib/xero_ap_is/models/import_summary_accounts.rb +154 -0
  125. data/lib/xero_ap_is/models/import_summary_object.rb +76 -0
  126. data/lib/xero_ap_is/models/import_summary_organisation.rb +75 -0
  127. data/lib/xero_ap_is/models/invoice.rb +586 -0
  128. data/lib/xero_ap_is/models/invoice_address.rb +158 -0
  129. data/lib/xero_ap_is/models/invoice_address_type.rb +37 -0
  130. data/lib/xero_ap_is/models/invoice_reminder.rb +75 -0
  131. data/lib/xero_ap_is/models/invoice_reminders.rb +85 -0
  132. data/lib/xero_ap_is/models/invoices.rb +113 -0
  133. data/lib/xero_ap_is/models/item.rb +259 -0
  134. data/lib/xero_ap_is/models/items.rb +84 -0
  135. data/lib/xero_ap_is/models/journal.rb +157 -0
  136. data/lib/xero_ap_is/models/journal_line.rb +201 -0
  137. data/lib/xero_ap_is/models/journals.rb +103 -0
  138. data/lib/xero_ap_is/models/line_amount_types.rb +41 -0
  139. data/lib/xero_ap_is/models/line_item.rb +287 -0
  140. data/lib/xero_ap_is/models/line_item_item.rb +95 -0
  141. data/lib/xero_ap_is/models/line_item_tracking.rb +108 -0
  142. data/lib/xero_ap_is/models/link_type.rb +48 -0
  143. data/lib/xero_ap_is/models/linked_transaction.rb +215 -0
  144. data/lib/xero_ap_is/models/linked_transactions.rb +85 -0
  145. data/lib/xero_ap_is/models/manual_journal.rb +255 -0
  146. data/lib/xero_ap_is/models/manual_journal_line.rb +156 -0
  147. data/lib/xero_ap_is/models/manual_journals.rb +114 -0
  148. data/lib/xero_ap_is/models/mclass.rb +48 -0
  149. data/lib/xero_ap_is/models/oauth_provider_error.rb +62 -0
  150. data/lib/xero_ap_is/models/oauth_scope_oauth_2.rb +113 -0
  151. data/lib/xero_ap_is/models/oauth_token.rb +96 -0
  152. data/lib/xero_ap_is/models/online_invoice.rb +77 -0
  153. data/lib/xero_ap_is/models/online_invoices.rb +85 -0
  154. data/lib/xero_ap_is/models/order_by.rb +56 -0
  155. data/lib/xero_ap_is/models/organisation.rb +467 -0
  156. data/lib/xero_ap_is/models/organisation_entity_type.rb +80 -0
  157. data/lib/xero_ap_is/models/organisation_role.rb +61 -0
  158. data/lib/xero_ap_is/models/organisation_type.rb +80 -0
  159. data/lib/xero_ap_is/models/organisations.rb +85 -0
  160. data/lib/xero_ap_is/models/overpayment.rb +309 -0
  161. data/lib/xero_ap_is/models/overpayments.rb +113 -0
  162. data/lib/xero_ap_is/models/pagination.rb +105 -0
  163. data/lib/xero_ap_is/models/payment.rb +381 -0
  164. data/lib/xero_ap_is/models/payment_delete.rb +73 -0
  165. data/lib/xero_ap_is/models/payment_service.rb +143 -0
  166. data/lib/xero_ap_is/models/payment_services.rb +85 -0
  167. data/lib/xero_ap_is/models/payment_term.rb +85 -0
  168. data/lib/xero_ap_is/models/payment_term_type.rb +44 -0
  169. data/lib/xero_ap_is/models/payment_type.rb +60 -0
  170. data/lib/xero_ap_is/models/payments.rb +113 -0
  171. data/lib/xero_ap_is/models/phone.rb +108 -0
  172. data/lib/xero_ap_is/models/phone_type.rb +48 -0
  173. data/lib/xero_ap_is/models/prepayment.rb +309 -0
  174. data/lib/xero_ap_is/models/prepayments.rb +113 -0
  175. data/lib/xero_ap_is/models/project.rb +328 -0
  176. data/lib/xero_ap_is/models/project_create_or_update.rb +115 -0
  177. data/lib/xero_ap_is/models/project_patch.rb +73 -0
  178. data/lib/xero_ap_is/models/project_status.rb +36 -0
  179. data/lib/xero_ap_is/models/project_user.rb +95 -0
  180. data/lib/xero_ap_is/models/project_users.rb +94 -0
  181. data/lib/xero_ap_is/models/projects.rb +94 -0
  182. data/lib/xero_ap_is/models/purchase.rb +112 -0
  183. data/lib/xero_ap_is/models/purchase_order.rb +408 -0
  184. data/lib/xero_ap_is/models/purchase_orders.rb +114 -0
  185. data/lib/xero_ap_is/models/purchases_default_line_amount_type.rb +42 -0
  186. data/lib/xero_ap_is/models/quote.rb +338 -0
  187. data/lib/xero_ap_is/models/quote_line_amount_types.rb +41 -0
  188. data/lib/xero_ap_is/models/quote_status_codes.rb +52 -0
  189. data/lib/xero_ap_is/models/quotes.rb +84 -0
  190. data/lib/xero_ap_is/models/receipt.rb +287 -0
  191. data/lib/xero_ap_is/models/receipts.rb +84 -0
  192. data/lib/xero_ap_is/models/refresh_token.rb +106 -0
  193. data/lib/xero_ap_is/models/repeating_invoice.rb +290 -0
  194. data/lib/xero_ap_is/models/repeating_invoices.rb +85 -0
  195. data/lib/xero_ap_is/models/report.rb +136 -0
  196. data/lib/xero_ap_is/models/report_attribute.rb +85 -0
  197. data/lib/xero_ap_is/models/report_cell.rb +94 -0
  198. data/lib/xero_ap_is/models/report_fields.rb +95 -0
  199. data/lib/xero_ap_is/models/report_row.rb +104 -0
  200. data/lib/xero_ap_is/models/report_rows.rb +123 -0
  201. data/lib/xero_ap_is/models/report_tax_type.rb +424 -0
  202. data/lib/xero_ap_is/models/report_type.rb +26 -0
  203. data/lib/xero_ap_is/models/report_with_row.rb +176 -0
  204. data/lib/xero_ap_is/models/report_with_rows.rb +84 -0
  205. data/lib/xero_ap_is/models/reports.rb +84 -0
  206. data/lib/xero_ap_is/models/request_empty.rb +75 -0
  207. data/lib/xero_ap_is/models/resource_validation_errors_element.rb +116 -0
  208. data/lib/xero_ap_is/models/row_type.rb +44 -0
  209. data/lib/xero_ap_is/models/sales_default_line_amount_type.rb +42 -0
  210. data/lib/xero_ap_is/models/sales_tax_basis.rb +60 -0
  211. data/lib/xero_ap_is/models/sales_tax_period.rb +88 -0
  212. data/lib/xero_ap_is/models/sales_tracking_category.rb +89 -0
  213. data/lib/xero_ap_is/models/schedule.rb +140 -0
  214. data/lib/xero_ap_is/models/setting.rb +175 -0
  215. data/lib/xero_ap_is/models/setup.rb +117 -0
  216. data/lib/xero_ap_is/models/sort_direction.rb +36 -0
  217. data/lib/xero_ap_is/models/source_transaction_type_code.rb +38 -0
  218. data/lib/xero_ap_is/models/source_type.rb +128 -0
  219. data/lib/xero_ap_is/models/start_balance.rb +88 -0
  220. data/lib/xero_ap_is/models/statement.rb +194 -0
  221. data/lib/xero_ap_is/models/statement_line.rb +162 -0
  222. data/lib/xero_ap_is/models/statements.rb +94 -0
  223. data/lib/xero_ap_is/models/status.rb +41 -0
  224. data/lib/xero_ap_is/models/status1.rb +38 -0
  225. data/lib/xero_ap_is/models/status10.rb +40 -0
  226. data/lib/xero_ap_is/models/status11.rb +44 -0
  227. data/lib/xero_ap_is/models/status110.rb +40 -0
  228. data/lib/xero_ap_is/models/status111.rb +43 -0
  229. data/lib/xero_ap_is/models/status12.rb +48 -0
  230. data/lib/xero_ap_is/models/status13.rb +48 -0
  231. data/lib/xero_ap_is/models/status14.rb +52 -0
  232. data/lib/xero_ap_is/models/status15.rb +48 -0
  233. data/lib/xero_ap_is/models/status16.rb +36 -0
  234. data/lib/xero_ap_is/models/status17.rb +48 -0
  235. data/lib/xero_ap_is/models/status18.rb +40 -0
  236. data/lib/xero_ap_is/models/status19.rb +44 -0
  237. data/lib/xero_ap_is/models/status2.rb +40 -0
  238. data/lib/xero_ap_is/models/status20.rb +48 -0
  239. data/lib/xero_ap_is/models/status21.rb +36 -0
  240. data/lib/xero_ap_is/models/status22.rb +44 -0
  241. data/lib/xero_ap_is/models/status3.rb +52 -0
  242. data/lib/xero_ap_is/models/status4.rb +40 -0
  243. data/lib/xero_ap_is/models/status5.rb +40 -0
  244. data/lib/xero_ap_is/models/status6.rb +52 -0
  245. data/lib/xero_ap_is/models/status7.rb +36 -0
  246. data/lib/xero_ap_is/models/status8.rb +37 -0
  247. data/lib/xero_ap_is/models/status9.rb +40 -0
  248. data/lib/xero_ap_is/models/system_account.rb +110 -0
  249. data/lib/xero_ap_is/models/task.rb +234 -0
  250. data/lib/xero_ap_is/models/task_create_or_update.rb +105 -0
  251. data/lib/xero_ap_is/models/tasks.rb +94 -0
  252. data/lib/xero_ap_is/models/tax_breakdown_component.rb +172 -0
  253. data/lib/xero_ap_is/models/tax_component.rb +108 -0
  254. data/lib/xero_ap_is/models/tax_number_type.rb +45 -0
  255. data/lib/xero_ap_is/models/tax_rate.rb +213 -0
  256. data/lib/xero_ap_is/models/tax_rates.rb +85 -0
  257. data/lib/xero_ap_is/models/tax_type.rb +520 -0
  258. data/lib/xero_ap_is/models/taxability.rb +48 -0
  259. data/lib/xero_ap_is/models/ten_ninety_nine_contact.rb +318 -0
  260. data/lib/xero_ap_is/models/time_entries.rb +94 -0
  261. data/lib/xero_ap_is/models/time_entry.rb +179 -0
  262. data/lib/xero_ap_is/models/time_entry_create_or_update.rb +120 -0
  263. data/lib/xero_ap_is/models/time_zone.rb +592 -0
  264. data/lib/xero_ap_is/models/timeframe.rb +40 -0
  265. data/lib/xero_ap_is/models/tracking_categories.rb +85 -0
  266. data/lib/xero_ap_is/models/tracking_category.rb +140 -0
  267. data/lib/xero_ap_is/models/tracking_option.rb +109 -0
  268. data/lib/xero_ap_is/models/tracking_options.rb +84 -0
  269. data/lib/xero_ap_is/models/type.rb +60 -0
  270. data/lib/xero_ap_is/models/type1.rb +26 -0
  271. data/lib/xero_ap_is/models/type10.rb +36 -0
  272. data/lib/xero_ap_is/models/type11.rb +114 -0
  273. data/lib/xero_ap_is/models/type2.rb +48 -0
  274. data/lib/xero_ap_is/models/type3.rb +60 -0
  275. data/lib/xero_ap_is/models/type4.rb +44 -0
  276. data/lib/xero_ap_is/models/type5.rb +40 -0
  277. data/lib/xero_ap_is/models/type6.rb +36 -0
  278. data/lib/xero_ap_is/models/type7.rb +37 -0
  279. data/lib/xero_ap_is/models/type8.rb +36 -0
  280. data/lib/xero_ap_is/models/type9.rb +26 -0
  281. data/lib/xero_ap_is/models/unit.rb +36 -0
  282. data/lib/xero_ap_is/models/user.rb +139 -0
  283. data/lib/xero_ap_is/models/users.rb +84 -0
  284. data/lib/xero_ap_is/models/validation_error.rb +75 -0
  285. data/lib/xero_ap_is/models/version.rb +68 -0
  286. data/lib/xero_ap_is/utilities/date_time_helper.rb +11 -0
  287. data/lib/xero_ap_is/utilities/file_wrapper.rb +28 -0
  288. data/lib/xero_ap_is.rb +309 -0
  289. metadata +372 -0
@@ -0,0 +1,328 @@
1
+ # xero_ap_is
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ require 'date'
7
+ module XeroApIs
8
+ # Project Model.
9
+ class Project < BaseModel
10
+ SKIP = Object.new
11
+ private_constant :SKIP
12
+
13
+ # Identifier of the project.
14
+ # @return [UUID | String]
15
+ attr_accessor :project_id
16
+
17
+ # Identifier of the contact this project was created for.
18
+ # @return [UUID | String]
19
+ attr_accessor :contact_id
20
+
21
+ # Name of the project.
22
+ # @return [String]
23
+ attr_accessor :name
24
+
25
+ # 3 letter alpha code for the ISO-4217 currency code, e.g. USD, AUD.
26
+ # @return [CurrencyCode1]
27
+ attr_accessor :currency_code
28
+
29
+ # A total of minutes logged against all tasks on the Project.
30
+ # @return [Integer]
31
+ attr_accessor :minutes_logged
32
+
33
+ # A total of minutes logged against all tasks on the Project.
34
+ # @return [Amount]
35
+ attr_accessor :total_task_amount
36
+
37
+ # A total of minutes logged against all tasks on the Project.
38
+ # @return [Amount]
39
+ attr_accessor :total_expense_amount
40
+
41
+ # A total of minutes logged against all tasks on the Project.
42
+ # @return [Amount]
43
+ attr_accessor :estimate_amount
44
+
45
+ # Minutes which have not been invoiced across all chargeable tasks in the
46
+ # project.
47
+ # @return [Integer]
48
+ attr_accessor :minutes_to_be_invoiced
49
+
50
+ # Minutes which have not been invoiced across all chargeable tasks in the
51
+ # project.
52
+ # @return [Amount]
53
+ attr_accessor :task_amount_to_be_invoiced
54
+
55
+ # Minutes which have not been invoiced across all chargeable tasks in the
56
+ # project.
57
+ # @return [Amount]
58
+ attr_accessor :task_amount_invoiced
59
+
60
+ # Minutes which have not been invoiced across all chargeable tasks in the
61
+ # project.
62
+ # @return [Amount]
63
+ attr_accessor :expense_amount_to_be_invoiced
64
+
65
+ # Minutes which have not been invoiced across all chargeable tasks in the
66
+ # project.
67
+ # @return [Amount]
68
+ attr_accessor :expense_amount_invoiced
69
+
70
+ # Minutes which have not been invoiced across all chargeable tasks in the
71
+ # project.
72
+ # @return [Amount]
73
+ attr_accessor :project_amount_invoiced
74
+
75
+ # Minutes which have not been invoiced across all chargeable tasks in the
76
+ # project.
77
+ # @return [Amount]
78
+ attr_accessor :deposit
79
+
80
+ # Minutes which have not been invoiced across all chargeable tasks in the
81
+ # project.
82
+ # @return [Amount]
83
+ attr_accessor :deposit_applied
84
+
85
+ # Minutes which have not been invoiced across all chargeable tasks in the
86
+ # project.
87
+ # @return [Amount]
88
+ attr_accessor :credit_note_amount
89
+
90
+ # Deadline for the project. UTC Date Time in ISO-8601 format.
91
+ # @return [DateTime]
92
+ attr_accessor :deadline_utc
93
+
94
+ # Deadline for the project. UTC Date Time in ISO-8601 format.
95
+ # @return [Amount]
96
+ attr_accessor :total_invoiced
97
+
98
+ # Deadline for the project. UTC Date Time in ISO-8601 format.
99
+ # @return [Amount]
100
+ attr_accessor :total_to_be_invoiced
101
+
102
+ # Deadline for the project. UTC Date Time in ISO-8601 format.
103
+ # @return [Amount]
104
+ attr_accessor :estimate
105
+
106
+ # Status for project
107
+ # @return [ProjectStatus]
108
+ attr_accessor :status
109
+
110
+ # A mapping from model property names to API property names.
111
+ def self.names
112
+ @_hash = {} if @_hash.nil?
113
+ @_hash['project_id'] = 'projectId'
114
+ @_hash['contact_id'] = 'contactId'
115
+ @_hash['name'] = 'name'
116
+ @_hash['currency_code'] = 'currencyCode'
117
+ @_hash['minutes_logged'] = 'minutesLogged'
118
+ @_hash['total_task_amount'] = 'totalTaskAmount'
119
+ @_hash['total_expense_amount'] = 'totalExpenseAmount'
120
+ @_hash['estimate_amount'] = 'estimateAmount'
121
+ @_hash['minutes_to_be_invoiced'] = 'minutesToBeInvoiced'
122
+ @_hash['task_amount_to_be_invoiced'] = 'taskAmountToBeInvoiced'
123
+ @_hash['task_amount_invoiced'] = 'taskAmountInvoiced'
124
+ @_hash['expense_amount_to_be_invoiced'] = 'expenseAmountToBeInvoiced'
125
+ @_hash['expense_amount_invoiced'] = 'expenseAmountInvoiced'
126
+ @_hash['project_amount_invoiced'] = 'projectAmountInvoiced'
127
+ @_hash['deposit'] = 'deposit'
128
+ @_hash['deposit_applied'] = 'depositApplied'
129
+ @_hash['credit_note_amount'] = 'creditNoteAmount'
130
+ @_hash['deadline_utc'] = 'deadlineUtc'
131
+ @_hash['total_invoiced'] = 'totalInvoiced'
132
+ @_hash['total_to_be_invoiced'] = 'totalToBeInvoiced'
133
+ @_hash['estimate'] = 'estimate'
134
+ @_hash['status'] = 'status'
135
+ @_hash
136
+ end
137
+
138
+ # An array for optional fields
139
+ def self.optionals
140
+ %w[
141
+ project_id
142
+ contact_id
143
+ currency_code
144
+ minutes_logged
145
+ total_task_amount
146
+ total_expense_amount
147
+ estimate_amount
148
+ minutes_to_be_invoiced
149
+ task_amount_to_be_invoiced
150
+ task_amount_invoiced
151
+ expense_amount_to_be_invoiced
152
+ expense_amount_invoiced
153
+ project_amount_invoiced
154
+ deposit
155
+ deposit_applied
156
+ credit_note_amount
157
+ deadline_utc
158
+ total_invoiced
159
+ total_to_be_invoiced
160
+ estimate
161
+ status
162
+ ]
163
+ end
164
+
165
+ # An array for nullable fields
166
+ def self.nullables
167
+ []
168
+ end
169
+
170
+ def initialize(name:, project_id: SKIP, contact_id: SKIP,
171
+ currency_code: SKIP, minutes_logged: SKIP,
172
+ total_task_amount: SKIP, total_expense_amount: SKIP,
173
+ estimate_amount: SKIP, minutes_to_be_invoiced: SKIP,
174
+ task_amount_to_be_invoiced: SKIP, task_amount_invoiced: SKIP,
175
+ expense_amount_to_be_invoiced: SKIP,
176
+ expense_amount_invoiced: SKIP, project_amount_invoiced: SKIP,
177
+ deposit: SKIP, deposit_applied: SKIP,
178
+ credit_note_amount: SKIP, deadline_utc: SKIP,
179
+ total_invoiced: SKIP, total_to_be_invoiced: SKIP,
180
+ estimate: SKIP, status: SKIP, additional_properties: nil)
181
+ # Add additional model properties to the instance
182
+ additional_properties = {} if additional_properties.nil?
183
+
184
+ @project_id = project_id unless project_id == SKIP
185
+ @contact_id = contact_id unless contact_id == SKIP
186
+ @name = name
187
+ @currency_code = currency_code unless currency_code == SKIP
188
+ @minutes_logged = minutes_logged unless minutes_logged == SKIP
189
+ @total_task_amount = total_task_amount unless total_task_amount == SKIP
190
+ @total_expense_amount = total_expense_amount unless total_expense_amount == SKIP
191
+ @estimate_amount = estimate_amount unless estimate_amount == SKIP
192
+ @minutes_to_be_invoiced = minutes_to_be_invoiced unless minutes_to_be_invoiced == SKIP
193
+ unless task_amount_to_be_invoiced == SKIP
194
+ @task_amount_to_be_invoiced =
195
+ task_amount_to_be_invoiced
196
+ end
197
+ @task_amount_invoiced = task_amount_invoiced unless task_amount_invoiced == SKIP
198
+ unless expense_amount_to_be_invoiced == SKIP
199
+ @expense_amount_to_be_invoiced =
200
+ expense_amount_to_be_invoiced
201
+ end
202
+ @expense_amount_invoiced = expense_amount_invoiced unless expense_amount_invoiced == SKIP
203
+ @project_amount_invoiced = project_amount_invoiced unless project_amount_invoiced == SKIP
204
+ @deposit = deposit unless deposit == SKIP
205
+ @deposit_applied = deposit_applied unless deposit_applied == SKIP
206
+ @credit_note_amount = credit_note_amount unless credit_note_amount == SKIP
207
+ @deadline_utc = deadline_utc unless deadline_utc == SKIP
208
+ @total_invoiced = total_invoiced unless total_invoiced == SKIP
209
+ @total_to_be_invoiced = total_to_be_invoiced unless total_to_be_invoiced == SKIP
210
+ @estimate = estimate unless estimate == SKIP
211
+ @status = status unless status == SKIP
212
+ @additional_properties = additional_properties
213
+ end
214
+
215
+ # Creates an instance of the object from a hash.
216
+ def self.from_hash(hash)
217
+ return nil unless hash
218
+
219
+ # Extract variables from the hash.
220
+ name = hash.key?('name') ? hash['name'] : nil
221
+ project_id = hash.key?('projectId') ? hash['projectId'] : SKIP
222
+ contact_id = hash.key?('contactId') ? hash['contactId'] : SKIP
223
+ currency_code = hash.key?('currencyCode') ? hash['currencyCode'] : SKIP
224
+ minutes_logged = hash.key?('minutesLogged') ? hash['minutesLogged'] : SKIP
225
+ total_task_amount = Amount.from_hash(hash['totalTaskAmount']) if hash['totalTaskAmount']
226
+ total_expense_amount = Amount.from_hash(hash['totalExpenseAmount']) if
227
+ hash['totalExpenseAmount']
228
+ estimate_amount = Amount.from_hash(hash['estimateAmount']) if hash['estimateAmount']
229
+ minutes_to_be_invoiced =
230
+ hash.key?('minutesToBeInvoiced') ? hash['minutesToBeInvoiced'] : SKIP
231
+ task_amount_to_be_invoiced = Amount.from_hash(hash['taskAmountToBeInvoiced']) if
232
+ hash['taskAmountToBeInvoiced']
233
+ task_amount_invoiced = Amount.from_hash(hash['taskAmountInvoiced']) if
234
+ hash['taskAmountInvoiced']
235
+ expense_amount_to_be_invoiced = Amount.from_hash(hash['expenseAmountToBeInvoiced']) if
236
+ hash['expenseAmountToBeInvoiced']
237
+ expense_amount_invoiced = Amount.from_hash(hash['expenseAmountInvoiced']) if
238
+ hash['expenseAmountInvoiced']
239
+ project_amount_invoiced = Amount.from_hash(hash['projectAmountInvoiced']) if
240
+ hash['projectAmountInvoiced']
241
+ deposit = Amount.from_hash(hash['deposit']) if hash['deposit']
242
+ deposit_applied = Amount.from_hash(hash['depositApplied']) if hash['depositApplied']
243
+ credit_note_amount = Amount.from_hash(hash['creditNoteAmount']) if hash['creditNoteAmount']
244
+ deadline_utc = if hash.key?('deadlineUtc')
245
+ (DateTimeHelper.from_rfc3339(hash['deadlineUtc']) if hash['deadlineUtc'])
246
+ else
247
+ SKIP
248
+ end
249
+ total_invoiced = Amount.from_hash(hash['totalInvoiced']) if hash['totalInvoiced']
250
+ total_to_be_invoiced = Amount.from_hash(hash['totalToBeInvoiced']) if
251
+ hash['totalToBeInvoiced']
252
+ estimate = Amount.from_hash(hash['estimate']) if hash['estimate']
253
+ status = hash.key?('status') ? hash['status'] : SKIP
254
+
255
+ # Create a new hash for additional properties, removing known properties.
256
+ new_hash = hash.reject { |k, _| names.value?(k) }
257
+
258
+ additional_properties = APIHelper.get_additional_properties(
259
+ new_hash, proc { |value| value }
260
+ )
261
+
262
+ # Create object from extracted values.
263
+ Project.new(name: name,
264
+ project_id: project_id,
265
+ contact_id: contact_id,
266
+ currency_code: currency_code,
267
+ minutes_logged: minutes_logged,
268
+ total_task_amount: total_task_amount,
269
+ total_expense_amount: total_expense_amount,
270
+ estimate_amount: estimate_amount,
271
+ minutes_to_be_invoiced: minutes_to_be_invoiced,
272
+ task_amount_to_be_invoiced: task_amount_to_be_invoiced,
273
+ task_amount_invoiced: task_amount_invoiced,
274
+ expense_amount_to_be_invoiced: expense_amount_to_be_invoiced,
275
+ expense_amount_invoiced: expense_amount_invoiced,
276
+ project_amount_invoiced: project_amount_invoiced,
277
+ deposit: deposit,
278
+ deposit_applied: deposit_applied,
279
+ credit_note_amount: credit_note_amount,
280
+ deadline_utc: deadline_utc,
281
+ total_invoiced: total_invoiced,
282
+ total_to_be_invoiced: total_to_be_invoiced,
283
+ estimate: estimate,
284
+ status: status,
285
+ additional_properties: additional_properties)
286
+ end
287
+
288
+ def to_custom_deadline_utc
289
+ DateTimeHelper.to_rfc3339(deadline_utc)
290
+ end
291
+
292
+ # Provides a human-readable string representation of the object.
293
+ def to_s
294
+ class_name = self.class.name.split('::').last
295
+ "<#{class_name} project_id: #{@project_id}, contact_id: #{@contact_id}, name: #{@name},"\
296
+ " currency_code: #{@currency_code}, minutes_logged: #{@minutes_logged}, total_task_amount:"\
297
+ " #{@total_task_amount}, total_expense_amount: #{@total_expense_amount}, estimate_amount:"\
298
+ " #{@estimate_amount}, minutes_to_be_invoiced: #{@minutes_to_be_invoiced},"\
299
+ " task_amount_to_be_invoiced: #{@task_amount_to_be_invoiced}, task_amount_invoiced:"\
300
+ " #{@task_amount_invoiced}, expense_amount_to_be_invoiced:"\
301
+ " #{@expense_amount_to_be_invoiced}, expense_amount_invoiced: #{@expense_amount_invoiced},"\
302
+ " project_amount_invoiced: #{@project_amount_invoiced}, deposit: #{@deposit},"\
303
+ " deposit_applied: #{@deposit_applied}, credit_note_amount: #{@credit_note_amount},"\
304
+ " deadline_utc: #{@deadline_utc}, total_invoiced: #{@total_invoiced}, total_to_be_invoiced:"\
305
+ " #{@total_to_be_invoiced}, estimate: #{@estimate}, status: #{@status},"\
306
+ " additional_properties: #{@additional_properties}>"
307
+ end
308
+
309
+ # Provides a debugging-friendly string with detailed object information.
310
+ def inspect
311
+ class_name = self.class.name.split('::').last
312
+ "<#{class_name} project_id: #{@project_id.inspect}, contact_id: #{@contact_id.inspect},"\
313
+ " name: #{@name.inspect}, currency_code: #{@currency_code.inspect}, minutes_logged:"\
314
+ " #{@minutes_logged.inspect}, total_task_amount: #{@total_task_amount.inspect},"\
315
+ " total_expense_amount: #{@total_expense_amount.inspect}, estimate_amount:"\
316
+ " #{@estimate_amount.inspect}, minutes_to_be_invoiced: #{@minutes_to_be_invoiced.inspect},"\
317
+ " task_amount_to_be_invoiced: #{@task_amount_to_be_invoiced.inspect}, task_amount_invoiced:"\
318
+ " #{@task_amount_invoiced.inspect}, expense_amount_to_be_invoiced:"\
319
+ " #{@expense_amount_to_be_invoiced.inspect}, expense_amount_invoiced:"\
320
+ " #{@expense_amount_invoiced.inspect}, project_amount_invoiced:"\
321
+ " #{@project_amount_invoiced.inspect}, deposit: #{@deposit.inspect}, deposit_applied:"\
322
+ " #{@deposit_applied.inspect}, credit_note_amount: #{@credit_note_amount.inspect},"\
323
+ " deadline_utc: #{@deadline_utc.inspect}, total_invoiced: #{@total_invoiced.inspect},"\
324
+ " total_to_be_invoiced: #{@total_to_be_invoiced.inspect}, estimate: #{@estimate.inspect},"\
325
+ " status: #{@status.inspect}, additional_properties: #{@additional_properties}>"
326
+ end
327
+ end
328
+ end
@@ -0,0 +1,115 @@
1
+ # xero_ap_is
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ require 'date'
7
+ module XeroApIs
8
+ # ProjectCreateOrUpdate Model.
9
+ class ProjectCreateOrUpdate < BaseModel
10
+ SKIP = Object.new
11
+ private_constant :SKIP
12
+
13
+ # Identifier of the contact this project was created for.
14
+ # @return [UUID | String]
15
+ attr_accessor :contact_id
16
+
17
+ # Name of the project.
18
+ # @return [String]
19
+ attr_accessor :name
20
+
21
+ # Name of the project.
22
+ # @return [Float]
23
+ attr_accessor :estimate_amount
24
+
25
+ # Deadline for the project. UTC Date Time in ISO-8601 format.
26
+ # @return [DateTime]
27
+ attr_accessor :deadline_utc
28
+
29
+ # A mapping from model property names to API property names.
30
+ def self.names
31
+ @_hash = {} if @_hash.nil?
32
+ @_hash['contact_id'] = 'contactId'
33
+ @_hash['name'] = 'name'
34
+ @_hash['estimate_amount'] = 'estimateAmount'
35
+ @_hash['deadline_utc'] = 'deadlineUtc'
36
+ @_hash
37
+ end
38
+
39
+ # An array for optional fields
40
+ def self.optionals
41
+ %w[
42
+ contact_id
43
+ estimate_amount
44
+ deadline_utc
45
+ ]
46
+ end
47
+
48
+ # An array for nullable fields
49
+ def self.nullables
50
+ []
51
+ end
52
+
53
+ def initialize(name:, contact_id: SKIP, estimate_amount: SKIP,
54
+ deadline_utc: SKIP, additional_properties: nil)
55
+ # Add additional model properties to the instance
56
+ additional_properties = {} if additional_properties.nil?
57
+
58
+ @contact_id = contact_id unless contact_id == SKIP
59
+ @name = name
60
+ @estimate_amount = estimate_amount unless estimate_amount == SKIP
61
+ @deadline_utc = deadline_utc unless deadline_utc == SKIP
62
+ @additional_properties = additional_properties
63
+ end
64
+
65
+ # Creates an instance of the object from a hash.
66
+ def self.from_hash(hash)
67
+ return nil unless hash
68
+
69
+ # Extract variables from the hash.
70
+ name = hash.key?('name') ? hash['name'] : nil
71
+ contact_id = hash.key?('contactId') ? hash['contactId'] : SKIP
72
+ estimate_amount =
73
+ hash.key?('estimateAmount') ? hash['estimateAmount'] : SKIP
74
+ deadline_utc = if hash.key?('deadlineUtc')
75
+ (DateTimeHelper.from_rfc3339(hash['deadlineUtc']) if hash['deadlineUtc'])
76
+ else
77
+ SKIP
78
+ end
79
+
80
+ # Create a new hash for additional properties, removing known properties.
81
+ new_hash = hash.reject { |k, _| names.value?(k) }
82
+
83
+ additional_properties = APIHelper.get_additional_properties(
84
+ new_hash, proc { |value| value }
85
+ )
86
+
87
+ # Create object from extracted values.
88
+ ProjectCreateOrUpdate.new(name: name,
89
+ contact_id: contact_id,
90
+ estimate_amount: estimate_amount,
91
+ deadline_utc: deadline_utc,
92
+ additional_properties: additional_properties)
93
+ end
94
+
95
+ def to_custom_deadline_utc
96
+ DateTimeHelper.to_rfc3339(deadline_utc)
97
+ end
98
+
99
+ # Provides a human-readable string representation of the object.
100
+ def to_s
101
+ class_name = self.class.name.split('::').last
102
+ "<#{class_name} contact_id: #{@contact_id}, name: #{@name}, estimate_amount:"\
103
+ " #{@estimate_amount}, deadline_utc: #{@deadline_utc}, additional_properties:"\
104
+ " #{@additional_properties}>"
105
+ end
106
+
107
+ # Provides a debugging-friendly string with detailed object information.
108
+ def inspect
109
+ class_name = self.class.name.split('::').last
110
+ "<#{class_name} contact_id: #{@contact_id.inspect}, name: #{@name.inspect},"\
111
+ " estimate_amount: #{@estimate_amount.inspect}, deadline_utc: #{@deadline_utc.inspect},"\
112
+ " additional_properties: #{@additional_properties}>"
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,73 @@
1
+ # xero_ap_is
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module XeroApIs
7
+ # ProjectPatch Model.
8
+ class ProjectPatch < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Status for project
13
+ # @return [ProjectStatus]
14
+ attr_accessor :status
15
+
16
+ # A mapping from model property names to API property names.
17
+ def self.names
18
+ @_hash = {} if @_hash.nil?
19
+ @_hash['status'] = 'status'
20
+ @_hash
21
+ end
22
+
23
+ # An array for optional fields
24
+ def self.optionals
25
+ []
26
+ end
27
+
28
+ # An array for nullable fields
29
+ def self.nullables
30
+ []
31
+ end
32
+
33
+ def initialize(status:, additional_properties: nil)
34
+ # Add additional model properties to the instance
35
+ additional_properties = {} if additional_properties.nil?
36
+
37
+ @status = status
38
+ @additional_properties = additional_properties
39
+ end
40
+
41
+ # Creates an instance of the object from a hash.
42
+ def self.from_hash(hash)
43
+ return nil unless hash
44
+
45
+ # Extract variables from the hash.
46
+ status = hash.key?('status') ? hash['status'] : nil
47
+
48
+ # Create a new hash for additional properties, removing known properties.
49
+ new_hash = hash.reject { |k, _| names.value?(k) }
50
+
51
+ additional_properties = APIHelper.get_additional_properties(
52
+ new_hash, proc { |value| value }
53
+ )
54
+
55
+ # Create object from extracted values.
56
+ ProjectPatch.new(status: status,
57
+ additional_properties: additional_properties)
58
+ end
59
+
60
+ # Provides a human-readable string representation of the object.
61
+ def to_s
62
+ class_name = self.class.name.split('::').last
63
+ "<#{class_name} status: #{@status}, additional_properties: #{@additional_properties}>"
64
+ end
65
+
66
+ # Provides a debugging-friendly string with detailed object information.
67
+ def inspect
68
+ class_name = self.class.name.split('::').last
69
+ "<#{class_name} status: #{@status.inspect}, additional_properties:"\
70
+ " #{@additional_properties}>"
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,36 @@
1
+ # xero_ap_is
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module XeroApIs
7
+ # Status for project
8
+ class ProjectStatus
9
+ PROJECT_STATUS = [
10
+ # TODO: Write general description for INPROGRESS
11
+ INPROGRESS = 'INPROGRESS'.freeze,
12
+
13
+ # TODO: Write general description for CLOSED
14
+ CLOSED = 'CLOSED'.freeze
15
+ ].freeze
16
+
17
+ def self.validate(value)
18
+ return false if value.nil?
19
+
20
+ PROJECT_STATUS.include?(value)
21
+ end
22
+
23
+ def self.from_value(value, default_value = INPROGRESS)
24
+ return default_value if value.nil?
25
+
26
+ str = value.to_s.strip
27
+
28
+ case str.downcase
29
+ when 'inprogress' then INPROGRESS
30
+ when 'closed' then CLOSED
31
+ else
32
+ default_value
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,95 @@
1
+ # xero_ap_is
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module XeroApIs
7
+ # ProjectUser Model.
8
+ class ProjectUser < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Identifier of the user of the project.
13
+ # @return [UUID | String]
14
+ attr_accessor :user_id
15
+
16
+ # Full name of the user.
17
+ # @return [String]
18
+ attr_accessor :name
19
+
20
+ # Email address of the user.
21
+ # @return [String]
22
+ attr_accessor :email
23
+
24
+ # A mapping from model property names to API property names.
25
+ def self.names
26
+ @_hash = {} if @_hash.nil?
27
+ @_hash['user_id'] = 'userId'
28
+ @_hash['name'] = 'name'
29
+ @_hash['email'] = 'email'
30
+ @_hash
31
+ end
32
+
33
+ # An array for optional fields
34
+ def self.optionals
35
+ %w[
36
+ user_id
37
+ name
38
+ email
39
+ ]
40
+ end
41
+
42
+ # An array for nullable fields
43
+ def self.nullables
44
+ []
45
+ end
46
+
47
+ def initialize(user_id: SKIP, name: SKIP, email: SKIP,
48
+ additional_properties: nil)
49
+ # Add additional model properties to the instance
50
+ additional_properties = {} if additional_properties.nil?
51
+
52
+ @user_id = user_id unless user_id == SKIP
53
+ @name = name unless name == SKIP
54
+ @email = email unless email == SKIP
55
+ @additional_properties = additional_properties
56
+ end
57
+
58
+ # Creates an instance of the object from a hash.
59
+ def self.from_hash(hash)
60
+ return nil unless hash
61
+
62
+ # Extract variables from the hash.
63
+ user_id = hash.key?('userId') ? hash['userId'] : SKIP
64
+ name = hash.key?('name') ? hash['name'] : SKIP
65
+ email = hash.key?('email') ? hash['email'] : SKIP
66
+
67
+ # Create a new hash for additional properties, removing known properties.
68
+ new_hash = hash.reject { |k, _| names.value?(k) }
69
+
70
+ additional_properties = APIHelper.get_additional_properties(
71
+ new_hash, proc { |value| value }
72
+ )
73
+
74
+ # Create object from extracted values.
75
+ ProjectUser.new(user_id: user_id,
76
+ name: name,
77
+ email: email,
78
+ additional_properties: additional_properties)
79
+ end
80
+
81
+ # Provides a human-readable string representation of the object.
82
+ def to_s
83
+ class_name = self.class.name.split('::').last
84
+ "<#{class_name} user_id: #{@user_id}, name: #{@name}, email: #{@email},"\
85
+ " additional_properties: #{@additional_properties}>"
86
+ end
87
+
88
+ # Provides a debugging-friendly string with detailed object information.
89
+ def inspect
90
+ class_name = self.class.name.split('::').last
91
+ "<#{class_name} user_id: #{@user_id.inspect}, name: #{@name.inspect}, email:"\
92
+ " #{@email.inspect}, additional_properties: #{@additional_properties}>"
93
+ end
94
+ end
95
+ end