merge_ruby_client 1.1.0 → 2.1.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 (230) hide show
  1. checksums.yaml +4 -4
  2. data/lib/merge_ruby_client/accounting/accounting_periods/client.rb +2 -2
  3. data/lib/merge_ruby_client/accounting/accounts/client.rb +18 -10
  4. data/lib/merge_ruby_client/accounting/attachments/client.rb +2 -2
  5. data/lib/merge_ruby_client/accounting/audit_trail/client.rb +8 -6
  6. data/lib/merge_ruby_client/accounting/balance_sheets/client.rb +2 -2
  7. data/lib/merge_ruby_client/accounting/bank_feed_accounts/client.rb +2 -2
  8. data/lib/merge_ruby_client/accounting/bank_feed_transactions/client.rb +2 -2
  9. data/lib/merge_ruby_client/accounting/cash_flow_statements/client.rb +2 -2
  10. data/lib/merge_ruby_client/accounting/client.rb +14 -0
  11. data/lib/merge_ruby_client/accounting/company_info/client.rb +2 -2
  12. data/lib/merge_ruby_client/accounting/contacts/client.rb +187 -10
  13. data/lib/merge_ruby_client/accounting/credit_notes/client.rb +2 -2
  14. data/lib/merge_ruby_client/accounting/employees/client.rb +35 -8
  15. data/lib/merge_ruby_client/accounting/expense_reports/client.rb +765 -0
  16. data/lib/merge_ruby_client/accounting/expense_reports/types/expense_reports_lines_list_request_expand.rb +73 -0
  17. data/lib/merge_ruby_client/accounting/expense_reports/types/expense_reports_list_request_expand.rb +25 -0
  18. data/lib/merge_ruby_client/accounting/expense_reports/types/expense_reports_retrieve_request_expand.rb +25 -0
  19. data/lib/merge_ruby_client/accounting/expenses/client.rb +18 -10
  20. data/lib/merge_ruby_client/accounting/general_ledger_transactions/client.rb +2 -2
  21. data/lib/merge_ruby_client/accounting/income_statements/client.rb +2 -2
  22. data/lib/merge_ruby_client/accounting/invoices/client.rb +18 -10
  23. data/lib/merge_ruby_client/accounting/issues/client.rb +2 -2
  24. data/lib/merge_ruby_client/accounting/items/client.rb +334 -2
  25. data/lib/merge_ruby_client/accounting/journal_entries/client.rb +18 -10
  26. data/lib/merge_ruby_client/accounting/linked_accounts/client.rb +2 -2
  27. data/lib/merge_ruby_client/accounting/payment_methods/client.rb +2 -2
  28. data/lib/merge_ruby_client/accounting/payment_terms/client.rb +2 -2
  29. data/lib/merge_ruby_client/accounting/payments/client.rb +18 -10
  30. data/lib/merge_ruby_client/accounting/projects/client.rb +251 -0
  31. data/lib/merge_ruby_client/accounting/projects/types/projects_list_request_expand.rb +13 -0
  32. data/lib/merge_ruby_client/accounting/projects/types/projects_retrieve_request_expand.rb +13 -0
  33. data/lib/merge_ruby_client/accounting/purchase_orders/client.rb +18 -10
  34. data/lib/merge_ruby_client/accounting/sync_status/client.rb +2 -2
  35. data/lib/merge_ruby_client/accounting/tax_rates/client.rb +2 -2
  36. data/lib/merge_ruby_client/accounting/tracking_categories/client.rb +18 -10
  37. data/lib/merge_ruby_client/accounting/transactions/client.rb +2 -2
  38. data/lib/merge_ruby_client/accounting/transactions/types/transactions_list_request_expand.rb +32 -0
  39. data/lib/merge_ruby_client/accounting/transactions/types/transactions_retrieve_request_expand.rb +32 -0
  40. data/lib/merge_ruby_client/accounting/types/account_details_and_actions.rb +10 -2
  41. data/lib/merge_ruby_client/accounting/types/audit_log_event.rb +2 -0
  42. data/lib/merge_ruby_client/accounting/types/credit_note_line_item.rb +29 -1
  43. data/lib/merge_ruby_client/accounting/types/credit_note_line_item_contact.rb +56 -0
  44. data/lib/merge_ruby_client/accounting/types/credit_note_line_item_project.rb +55 -0
  45. data/lib/merge_ruby_client/accounting/types/credit_note_line_item_request.rb +29 -1
  46. data/lib/merge_ruby_client/accounting/types/credit_note_line_item_request_contact.rb +56 -0
  47. data/lib/merge_ruby_client/accounting/types/credit_note_line_item_request_project.rb +55 -0
  48. data/lib/merge_ruby_client/accounting/types/event_type_enum.rb +2 -0
  49. data/lib/merge_ruby_client/accounting/types/expense_line.rb +15 -1
  50. data/lib/merge_ruby_client/accounting/types/expense_line_project.rb +55 -0
  51. data/lib/merge_ruby_client/accounting/types/expense_line_request.rb +15 -1
  52. data/lib/merge_ruby_client/accounting/types/expense_line_request_project.rb +55 -0
  53. data/lib/merge_ruby_client/accounting/types/expense_report.rb +869 -0
  54. data/lib/merge_ruby_client/accounting/types/expense_report_company.rb +56 -0
  55. data/lib/merge_ruby_client/accounting/types/expense_report_line.rb +921 -0
  56. data/lib/merge_ruby_client/accounting/types/expense_report_line_account.rb +55 -0
  57. data/lib/merge_ruby_client/accounting/types/expense_report_line_company.rb +56 -0
  58. data/lib/merge_ruby_client/accounting/types/expense_report_line_contact.rb +55 -0
  59. data/lib/merge_ruby_client/accounting/types/expense_report_line_employee.rb +57 -0
  60. data/lib/merge_ruby_client/accounting/types/expense_report_line_project.rb +55 -0
  61. data/lib/merge_ruby_client/accounting/types/expense_report_line_request.rb +899 -0
  62. data/lib/merge_ruby_client/accounting/types/expense_report_line_request_account.rb +55 -0
  63. data/lib/merge_ruby_client/accounting/types/expense_report_line_request_company.rb +56 -0
  64. data/lib/merge_ruby_client/accounting/types/expense_report_line_request_contact.rb +55 -0
  65. data/lib/merge_ruby_client/accounting/types/expense_report_line_request_employee.rb +57 -0
  66. data/lib/merge_ruby_client/accounting/types/expense_report_line_request_project.rb +55 -0
  67. data/lib/merge_ruby_client/accounting/types/expense_report_line_request_tax_rate.rb +55 -0
  68. data/lib/merge_ruby_client/accounting/types/expense_report_line_tax_rate.rb +55 -0
  69. data/lib/merge_ruby_client/accounting/types/expense_report_request.rb +819 -0
  70. data/lib/merge_ruby_client/accounting/types/expense_report_request_accounting_period.rb +56 -0
  71. data/lib/merge_ruby_client/accounting/types/expense_report_request_company.rb +56 -0
  72. data/lib/merge_ruby_client/accounting/types/expense_report_request_employee.rb +57 -0
  73. data/lib/merge_ruby_client/accounting/types/expense_report_response.rb +101 -0
  74. data/lib/merge_ruby_client/accounting/types/expense_report_status_enum.rb +16 -0
  75. data/lib/merge_ruby_client/accounting/types/external_target_field_api_response.rb +23 -1
  76. data/lib/merge_ruby_client/accounting/types/field_mapping_api_instance_response.rb +23 -1
  77. data/lib/merge_ruby_client/accounting/types/general_ledger_transaction_line.rb +15 -1
  78. data/lib/merge_ruby_client/accounting/types/general_ledger_transaction_line_project.rb +55 -0
  79. data/lib/merge_ruby_client/accounting/types/invoice_line_item.rb +29 -1
  80. data/lib/merge_ruby_client/accounting/types/invoice_line_item_contact.rb +56 -0
  81. data/lib/merge_ruby_client/accounting/types/invoice_line_item_project.rb +55 -0
  82. data/lib/merge_ruby_client/accounting/types/invoice_line_item_request.rb +29 -1
  83. data/lib/merge_ruby_client/accounting/types/invoice_line_item_request_contact.rb +56 -0
  84. data/lib/merge_ruby_client/accounting/types/invoice_line_item_request_project.rb +55 -0
  85. data/lib/merge_ruby_client/accounting/types/item.rb +18 -1
  86. data/lib/merge_ruby_client/accounting/types/item_request_request.rb +202 -0
  87. data/lib/merge_ruby_client/accounting/types/item_request_request_company.rb +56 -0
  88. data/lib/merge_ruby_client/accounting/types/item_request_request_purchase_account.rb +56 -0
  89. data/lib/merge_ruby_client/accounting/types/item_request_request_purchase_tax_rate.rb +56 -0
  90. data/lib/merge_ruby_client/accounting/types/item_request_request_sales_account.rb +56 -0
  91. data/lib/merge_ruby_client/accounting/types/item_request_request_sales_tax_rate.rb +56 -0
  92. data/lib/merge_ruby_client/accounting/types/item_response.rb +101 -0
  93. data/lib/merge_ruby_client/accounting/types/journal_line.rb +15 -1
  94. data/lib/merge_ruby_client/accounting/types/journal_line_project.rb +55 -0
  95. data/lib/merge_ruby_client/accounting/types/journal_line_request.rb +15 -1
  96. data/lib/merge_ruby_client/accounting/types/journal_line_request_project.rb +55 -0
  97. data/lib/merge_ruby_client/accounting/types/paginated_expense_report_line_list.rb +80 -0
  98. data/lib/merge_ruby_client/accounting/types/paginated_expense_report_list.rb +80 -0
  99. data/lib/merge_ruby_client/accounting/types/paginated_project_list.rb +80 -0
  100. data/lib/merge_ruby_client/accounting/types/patched_contact_request.rb +188 -0
  101. data/lib/merge_ruby_client/accounting/types/patched_contact_request_addresses_item.rb +55 -0
  102. data/lib/merge_ruby_client/accounting/types/patched_item_request_request.rb +172 -0
  103. data/lib/merge_ruby_client/accounting/types/project.rb +162 -0
  104. data/lib/merge_ruby_client/accounting/types/project_company.rb +56 -0
  105. data/lib/merge_ruby_client/accounting/types/project_contact.rb +56 -0
  106. data/lib/merge_ruby_client/accounting/types/remote_field_api_response.rb +12 -1
  107. data/lib/merge_ruby_client/accounting/types/remote_field_class.rb +9 -1
  108. data/lib/merge_ruby_client/accounting/types/type_2_bb_enum.rb +16 -0
  109. data/lib/merge_ruby_client/accounting/types/vendor_credit_line.rb +29 -1
  110. data/lib/merge_ruby_client/accounting/types/vendor_credit_line_contact.rb +55 -0
  111. data/lib/merge_ruby_client/accounting/types/vendor_credit_line_project.rb +55 -0
  112. data/lib/merge_ruby_client/accounting/types/vendor_credit_line_request.rb +29 -1
  113. data/lib/merge_ruby_client/accounting/types/vendor_credit_line_request_contact.rb +55 -0
  114. data/lib/merge_ruby_client/accounting/types/vendor_credit_line_request_project.rb +55 -0
  115. data/lib/merge_ruby_client/accounting/vendor_credits/client.rb +2 -2
  116. data/lib/merge_ruby_client/ats/activities/client.rb +2 -2
  117. data/lib/merge_ruby_client/ats/applications/client.rb +2 -2
  118. data/lib/merge_ruby_client/ats/attachments/client.rb +2 -2
  119. data/lib/merge_ruby_client/ats/audit_trail/client.rb +8 -6
  120. data/lib/merge_ruby_client/ats/candidates/client.rb +2 -2
  121. data/lib/merge_ruby_client/ats/departments/client.rb +2 -2
  122. data/lib/merge_ruby_client/ats/eeocs/client.rb +2 -2
  123. data/lib/merge_ruby_client/ats/interviews/client.rb +2 -2
  124. data/lib/merge_ruby_client/ats/issues/client.rb +2 -2
  125. data/lib/merge_ruby_client/ats/job_interview_stages/client.rb +2 -2
  126. data/lib/merge_ruby_client/ats/job_postings/client.rb +2 -2
  127. data/lib/merge_ruby_client/ats/jobs/client.rb +4 -4
  128. data/lib/merge_ruby_client/ats/linked_accounts/client.rb +2 -2
  129. data/lib/merge_ruby_client/ats/offers/client.rb +2 -2
  130. data/lib/merge_ruby_client/ats/offices/client.rb +2 -2
  131. data/lib/merge_ruby_client/ats/reject_reasons/client.rb +2 -2
  132. data/lib/merge_ruby_client/ats/scorecards/client.rb +2 -2
  133. data/lib/merge_ruby_client/ats/sync_status/client.rb +2 -2
  134. data/lib/merge_ruby_client/ats/tags/client.rb +2 -2
  135. data/lib/merge_ruby_client/ats/types/account_details_and_actions.rb +10 -2
  136. data/lib/merge_ruby_client/ats/types/audit_log_event.rb +2 -0
  137. data/lib/merge_ruby_client/ats/types/event_type_enum.rb +2 -0
  138. data/lib/merge_ruby_client/ats/users/client.rb +2 -2
  139. data/lib/merge_ruby_client/crm/accounts/client.rb +10 -6
  140. data/lib/merge_ruby_client/crm/association_types/client.rb +2 -2
  141. data/lib/merge_ruby_client/crm/associations/client.rb +10 -2
  142. data/lib/merge_ruby_client/crm/audit_trail/client.rb +8 -6
  143. data/lib/merge_ruby_client/crm/contacts/client.rb +10 -6
  144. data/lib/merge_ruby_client/crm/custom_object_classes/client.rb +2 -2
  145. data/lib/merge_ruby_client/crm/custom_objects/client.rb +14 -6
  146. data/lib/merge_ruby_client/crm/engagement_types/client.rb +10 -6
  147. data/lib/merge_ruby_client/crm/engagements/client.rb +10 -6
  148. data/lib/merge_ruby_client/crm/issues/client.rb +2 -2
  149. data/lib/merge_ruby_client/crm/leads/client.rb +10 -6
  150. data/lib/merge_ruby_client/crm/linked_accounts/client.rb +2 -2
  151. data/lib/merge_ruby_client/crm/notes/client.rb +10 -6
  152. data/lib/merge_ruby_client/crm/opportunities/client.rb +10 -6
  153. data/lib/merge_ruby_client/crm/stages/client.rb +10 -6
  154. data/lib/merge_ruby_client/crm/sync_status/client.rb +22 -8
  155. data/lib/merge_ruby_client/crm/tasks/client.rb +10 -6
  156. data/lib/merge_ruby_client/crm/types/audit_log_event.rb +2 -0
  157. data/lib/merge_ruby_client/crm/types/custom_object_request.rb +26 -3
  158. data/lib/merge_ruby_client/crm/types/event_type_enum.rb +2 -0
  159. data/lib/merge_ruby_client/crm/types/remote_field_class.rb +9 -1
  160. data/lib/merge_ruby_client/crm/users/client.rb +10 -6
  161. data/lib/merge_ruby_client/filestorage/audit_trail/client.rb +8 -6
  162. data/lib/merge_ruby_client/filestorage/drives/client.rb +2 -2
  163. data/lib/merge_ruby_client/filestorage/files/client.rb +70 -16
  164. data/lib/merge_ruby_client/filestorage/files/types/files_download_request_meta_list_request_order_by.rb +14 -0
  165. data/lib/merge_ruby_client/filestorage/files/types/files_list_request_order_by.rb +14 -0
  166. data/lib/merge_ruby_client/filestorage/folders/client.rb +2 -2
  167. data/lib/merge_ruby_client/filestorage/groups/client.rb +2 -2
  168. data/lib/merge_ruby_client/filestorage/issues/client.rb +2 -2
  169. data/lib/merge_ruby_client/filestorage/linked_accounts/client.rb +2 -2
  170. data/lib/merge_ruby_client/filestorage/sync_status/client.rb +22 -8
  171. data/lib/merge_ruby_client/filestorage/types/account_details_and_actions.rb +10 -2
  172. data/lib/merge_ruby_client/filestorage/types/audit_log_event.rb +2 -0
  173. data/lib/merge_ruby_client/filestorage/types/download_request_meta.rb +2 -9
  174. data/lib/merge_ruby_client/filestorage/types/event_type_enum.rb +2 -0
  175. data/lib/merge_ruby_client/filestorage/types/file.rb +13 -1
  176. data/lib/merge_ruby_client/filestorage/types/file_request.rb +13 -1
  177. data/lib/merge_ruby_client/filestorage/users/client.rb +2 -2
  178. data/lib/merge_ruby_client/hris/audit_trail/client.rb +8 -6
  179. data/lib/merge_ruby_client/hris/bank_info/client.rb +2 -2
  180. data/lib/merge_ruby_client/hris/benefits/client.rb +2 -2
  181. data/lib/merge_ruby_client/hris/companies/client.rb +2 -2
  182. data/lib/merge_ruby_client/hris/dependents/client.rb +8 -4
  183. data/lib/merge_ruby_client/hris/employee_payroll_runs/client.rb +2 -2
  184. data/lib/merge_ruby_client/hris/employees/client.rb +8 -4
  185. data/lib/merge_ruby_client/hris/employer_benefits/client.rb +2 -2
  186. data/lib/merge_ruby_client/hris/employments/client.rb +2 -2
  187. data/lib/merge_ruby_client/hris/groups/client.rb +2 -2
  188. data/lib/merge_ruby_client/hris/issues/client.rb +2 -2
  189. data/lib/merge_ruby_client/hris/linked_accounts/client.rb +2 -2
  190. data/lib/merge_ruby_client/hris/locations/client.rb +2 -2
  191. data/lib/merge_ruby_client/hris/pay_groups/client.rb +2 -2
  192. data/lib/merge_ruby_client/hris/payroll_runs/client.rb +2 -2
  193. data/lib/merge_ruby_client/hris/sync_status/client.rb +2 -2
  194. data/lib/merge_ruby_client/hris/teams/client.rb +2 -2
  195. data/lib/merge_ruby_client/hris/time_off/client.rb +2 -2
  196. data/lib/merge_ruby_client/hris/time_off_balances/client.rb +2 -2
  197. data/lib/merge_ruby_client/hris/timesheet_entries/client.rb +2 -2
  198. data/lib/merge_ruby_client/hris/types/account_details_and_actions.rb +10 -2
  199. data/lib/merge_ruby_client/hris/types/audit_log_event.rb +2 -0
  200. data/lib/merge_ruby_client/hris/types/benefit.rb +9 -9
  201. data/lib/merge_ruby_client/hris/types/event_type_enum.rb +2 -0
  202. data/lib/merge_ruby_client/ticketing/accounts/client.rb +2 -2
  203. data/lib/merge_ruby_client/ticketing/attachments/client.rb +2 -2
  204. data/lib/merge_ruby_client/ticketing/audit_trail/client.rb +8 -6
  205. data/lib/merge_ruby_client/ticketing/collections/client.rb +4 -4
  206. data/lib/merge_ruby_client/ticketing/comments/client.rb +2 -2
  207. data/lib/merge_ruby_client/ticketing/contacts/client.rb +2 -2
  208. data/lib/merge_ruby_client/ticketing/issues/client.rb +2 -2
  209. data/lib/merge_ruby_client/ticketing/linked_accounts/client.rb +2 -2
  210. data/lib/merge_ruby_client/ticketing/projects/client.rb +4 -4
  211. data/lib/merge_ruby_client/ticketing/roles/client.rb +2 -2
  212. data/lib/merge_ruby_client/ticketing/sync_status/client.rb +2 -2
  213. data/lib/merge_ruby_client/ticketing/tags/client.rb +2 -2
  214. data/lib/merge_ruby_client/ticketing/teams/client.rb +2 -2
  215. data/lib/merge_ruby_client/ticketing/tickets/client.rb +40 -20
  216. data/lib/merge_ruby_client/ticketing/types/account_details_and_actions.rb +10 -2
  217. data/lib/merge_ruby_client/ticketing/types/audit_log_event.rb +2 -0
  218. data/lib/merge_ruby_client/ticketing/types/collection.rb +18 -16
  219. data/lib/merge_ruby_client/ticketing/types/{access_level_enum.rb → collection_access_level_enum.rb} +3 -1
  220. data/lib/merge_ruby_client/ticketing/types/event_type_enum.rb +2 -0
  221. data/lib/merge_ruby_client/ticketing/types/patched_ticket_request.rb +28 -9
  222. data/lib/merge_ruby_client/ticketing/types/remote_field_class.rb +9 -1
  223. data/lib/merge_ruby_client/ticketing/types/ticket.rb +20 -1
  224. data/lib/merge_ruby_client/ticketing/types/ticket_access_level_enum.rb +16 -0
  225. data/lib/merge_ruby_client/ticketing/types/ticket_request.rb +20 -1
  226. data/lib/merge_ruby_client/ticketing/users/client.rb +2 -2
  227. data/lib/merge_ruby_client.rb +14 -14
  228. data/lib/requests.rb +2 -2
  229. data/lib/types_export.rb +473 -409
  230. metadata +69 -3
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require_relative "project"
5
+
6
+ module Merge
7
+ module Accounting
8
+ class JournalLineProject
9
+ # Deserialize a JSON object to an instance of JournalLineProject
10
+ #
11
+ # @param json_object [String]
12
+ # @return [Merge::Accounting::JournalLineProject]
13
+ def self.from_json(json_object:)
14
+ struct = JSON.parse(json_object, object_class: OpenStruct)
15
+ begin
16
+ struct.is_a?(String) != false || raise("Passed value for field struct is not the expected type, validation failed.")
17
+ return struct unless struct.nil?
18
+
19
+ return nil
20
+ rescue StandardError
21
+ # noop
22
+ end
23
+ begin
24
+ Merge::Accounting::Project.validate_raw(obj: struct)
25
+ return Merge::Accounting::Project.from_json(json_object: struct) unless struct.nil?
26
+
27
+ return nil
28
+ rescue StandardError
29
+ # noop
30
+ end
31
+ struct
32
+ end
33
+
34
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
35
+ # hash and check each fields type against the current object's property
36
+ # definitions.
37
+ #
38
+ # @param obj [Object]
39
+ # @return [Void]
40
+ def self.validate_raw(obj:)
41
+ begin
42
+ return obj.is_a?(String) != false || raise("Passed value for field obj is not the expected type, validation failed.")
43
+ rescue StandardError
44
+ # noop
45
+ end
46
+ begin
47
+ return Merge::Accounting::Project.validate_raw(obj: obj)
48
+ rescue StandardError
49
+ # noop
50
+ end
51
+ raise("Passed value matched no type within the union, validation failed.")
52
+ end
53
+ end
54
+ end
55
+ end
@@ -4,6 +4,7 @@ require_relative "journal_line_request_account"
4
4
  require_relative "journal_line_request_tracking_category"
5
5
  require_relative "journal_line_request_tracking_categories_item"
6
6
  require_relative "transaction_currency_enum"
7
+ require_relative "journal_line_request_project"
7
8
  require_relative "remote_field_request"
8
9
  require "ostruct"
9
10
  require "json"
@@ -339,6 +340,8 @@ module Merge
339
340
  attr_reader :company
340
341
  # @return [String]
341
342
  attr_reader :employee
343
+ # @return [Merge::Accounting::JournalLineRequestProject]
344
+ attr_reader :project
342
345
  # @return [String]
343
346
  attr_reader :contact
344
347
  # @return [String] The tax rate that applies to this line item.
@@ -675,6 +678,7 @@ module Merge
675
678
  # * `ZWL` - Zimbabwean Dollar (2009)
676
679
  # @param company [String] The company the journal entry belongs to.
677
680
  # @param employee [String]
681
+ # @param project [Merge::Accounting::JournalLineRequestProject]
678
682
  # @param contact [String]
679
683
  # @param tax_rate [String] The tax rate that applies to this line item.
680
684
  # @param description [String] The line's description.
@@ -685,7 +689,7 @@ module Merge
685
689
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
686
690
  # @return [Merge::Accounting::JournalLineRequest]
687
691
  def initialize(remote_id: OMIT, account: OMIT, net_amount: OMIT, tracking_category: OMIT,
688
- tracking_categories: OMIT, currency: OMIT, company: OMIT, employee: OMIT, contact: OMIT, tax_rate: OMIT, description: OMIT, exchange_rate: OMIT, integration_params: OMIT, linked_account_params: OMIT, remote_fields: OMIT, additional_properties: nil)
692
+ tracking_categories: OMIT, currency: OMIT, company: OMIT, employee: OMIT, project: OMIT, contact: OMIT, tax_rate: OMIT, description: OMIT, exchange_rate: OMIT, integration_params: OMIT, linked_account_params: OMIT, remote_fields: OMIT, additional_properties: nil)
689
693
  @remote_id = remote_id if remote_id != OMIT
690
694
  @account = account if account != OMIT
691
695
  @net_amount = net_amount if net_amount != OMIT
@@ -694,6 +698,7 @@ module Merge
694
698
  @currency = currency if currency != OMIT
695
699
  @company = company if company != OMIT
696
700
  @employee = employee if employee != OMIT
701
+ @project = project if project != OMIT
697
702
  @contact = contact if contact != OMIT
698
703
  @tax_rate = tax_rate if tax_rate != OMIT
699
704
  @description = description if description != OMIT
@@ -711,6 +716,7 @@ module Merge
711
716
  "currency": currency,
712
717
  "company": company,
713
718
  "employee": employee,
719
+ "project": project,
714
720
  "contact": contact,
715
721
  "tax_rate": tax_rate,
716
722
  "description": description,
@@ -751,6 +757,12 @@ module Merge
751
757
  currency = parsed_json["currency"]
752
758
  company = parsed_json["company"]
753
759
  employee = parsed_json["employee"]
760
+ if parsed_json["project"].nil?
761
+ project = nil
762
+ else
763
+ project = parsed_json["project"].to_json
764
+ project = Merge::Accounting::JournalLineRequestProject.from_json(json_object: project)
765
+ end
754
766
  contact = parsed_json["contact"]
755
767
  tax_rate = parsed_json["tax_rate"]
756
768
  description = parsed_json["description"]
@@ -770,6 +782,7 @@ module Merge
770
782
  currency: currency,
771
783
  company: company,
772
784
  employee: employee,
785
+ project: project,
773
786
  contact: contact,
774
787
  tax_rate: tax_rate,
775
788
  description: description,
@@ -803,6 +816,7 @@ module Merge
803
816
  obj.currency&.is_a?(Merge::Accounting::TransactionCurrencyEnum) != false || raise("Passed value for field obj.currency is not the expected type, validation failed.")
804
817
  obj.company&.is_a?(String) != false || raise("Passed value for field obj.company is not the expected type, validation failed.")
805
818
  obj.employee&.is_a?(String) != false || raise("Passed value for field obj.employee is not the expected type, validation failed.")
819
+ obj.project.nil? || Merge::Accounting::JournalLineRequestProject.validate_raw(obj: obj.project)
806
820
  obj.contact&.is_a?(String) != false || raise("Passed value for field obj.contact is not the expected type, validation failed.")
807
821
  obj.tax_rate&.is_a?(String) != false || raise("Passed value for field obj.tax_rate is not the expected type, validation failed.")
808
822
  obj.description&.is_a?(String) != false || raise("Passed value for field obj.description is not the expected type, validation failed.")
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require_relative "project"
5
+
6
+ module Merge
7
+ module Accounting
8
+ class JournalLineRequestProject
9
+ # Deserialize a JSON object to an instance of JournalLineRequestProject
10
+ #
11
+ # @param json_object [String]
12
+ # @return [Merge::Accounting::JournalLineRequestProject]
13
+ def self.from_json(json_object:)
14
+ struct = JSON.parse(json_object, object_class: OpenStruct)
15
+ begin
16
+ struct.is_a?(String) != false || raise("Passed value for field struct is not the expected type, validation failed.")
17
+ return struct unless struct.nil?
18
+
19
+ return nil
20
+ rescue StandardError
21
+ # noop
22
+ end
23
+ begin
24
+ Merge::Accounting::Project.validate_raw(obj: struct)
25
+ return Merge::Accounting::Project.from_json(json_object: struct) unless struct.nil?
26
+
27
+ return nil
28
+ rescue StandardError
29
+ # noop
30
+ end
31
+ struct
32
+ end
33
+
34
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
35
+ # hash and check each fields type against the current object's property
36
+ # definitions.
37
+ #
38
+ # @param obj [Object]
39
+ # @return [Void]
40
+ def self.validate_raw(obj:)
41
+ begin
42
+ return obj.is_a?(String) != false || raise("Passed value for field obj is not the expected type, validation failed.")
43
+ rescue StandardError
44
+ # noop
45
+ end
46
+ begin
47
+ return Merge::Accounting::Project.validate_raw(obj: obj)
48
+ rescue StandardError
49
+ # noop
50
+ end
51
+ raise("Passed value matched no type within the union, validation failed.")
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "expense_report_line"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module Merge
8
+ module Accounting
9
+ class PaginatedExpenseReportLineList
10
+ # @return [String]
11
+ attr_reader :next_
12
+ # @return [String]
13
+ attr_reader :previous
14
+ # @return [Array<Merge::Accounting::ExpenseReportLine>]
15
+ attr_reader :results
16
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
17
+ attr_reader :additional_properties
18
+ # @return [Object]
19
+ attr_reader :_field_set
20
+ protected :_field_set
21
+
22
+ OMIT = Object.new
23
+
24
+ # @param next_ [String]
25
+ # @param previous [String]
26
+ # @param results [Array<Merge::Accounting::ExpenseReportLine>]
27
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
28
+ # @return [Merge::Accounting::PaginatedExpenseReportLineList]
29
+ def initialize(next_: OMIT, previous: OMIT, results: OMIT, additional_properties: nil)
30
+ @next_ = next_ if next_ != OMIT
31
+ @previous = previous if previous != OMIT
32
+ @results = results if results != OMIT
33
+ @additional_properties = additional_properties
34
+ @_field_set = { "next": next_, "previous": previous, "results": results }.reject do |_k, v|
35
+ v == OMIT
36
+ end
37
+ end
38
+
39
+ # Deserialize a JSON object to an instance of PaginatedExpenseReportLineList
40
+ #
41
+ # @param json_object [String]
42
+ # @return [Merge::Accounting::PaginatedExpenseReportLineList]
43
+ def self.from_json(json_object:)
44
+ struct = JSON.parse(json_object, object_class: OpenStruct)
45
+ parsed_json = JSON.parse(json_object)
46
+ next_ = parsed_json["next"]
47
+ previous = parsed_json["previous"]
48
+ results = parsed_json["results"]&.map do |item|
49
+ item = item.to_json
50
+ Merge::Accounting::ExpenseReportLine.from_json(json_object: item)
51
+ end
52
+ new(
53
+ next_: next_,
54
+ previous: previous,
55
+ results: results,
56
+ additional_properties: struct
57
+ )
58
+ end
59
+
60
+ # Serialize an instance of PaginatedExpenseReportLineList to a JSON object
61
+ #
62
+ # @return [String]
63
+ def to_json(*_args)
64
+ @_field_set&.to_json
65
+ end
66
+
67
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
68
+ # hash and check each fields type against the current object's property
69
+ # definitions.
70
+ #
71
+ # @param obj [Object]
72
+ # @return [Void]
73
+ def self.validate_raw(obj:)
74
+ obj.next_&.is_a?(String) != false || raise("Passed value for field obj.next_ is not the expected type, validation failed.")
75
+ obj.previous&.is_a?(String) != false || raise("Passed value for field obj.previous is not the expected type, validation failed.")
76
+ obj.results&.is_a?(Array) != false || raise("Passed value for field obj.results is not the expected type, validation failed.")
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "expense_report"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module Merge
8
+ module Accounting
9
+ class PaginatedExpenseReportList
10
+ # @return [String]
11
+ attr_reader :next_
12
+ # @return [String]
13
+ attr_reader :previous
14
+ # @return [Array<Merge::Accounting::ExpenseReport>]
15
+ attr_reader :results
16
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
17
+ attr_reader :additional_properties
18
+ # @return [Object]
19
+ attr_reader :_field_set
20
+ protected :_field_set
21
+
22
+ OMIT = Object.new
23
+
24
+ # @param next_ [String]
25
+ # @param previous [String]
26
+ # @param results [Array<Merge::Accounting::ExpenseReport>]
27
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
28
+ # @return [Merge::Accounting::PaginatedExpenseReportList]
29
+ def initialize(next_: OMIT, previous: OMIT, results: OMIT, additional_properties: nil)
30
+ @next_ = next_ if next_ != OMIT
31
+ @previous = previous if previous != OMIT
32
+ @results = results if results != OMIT
33
+ @additional_properties = additional_properties
34
+ @_field_set = { "next": next_, "previous": previous, "results": results }.reject do |_k, v|
35
+ v == OMIT
36
+ end
37
+ end
38
+
39
+ # Deserialize a JSON object to an instance of PaginatedExpenseReportList
40
+ #
41
+ # @param json_object [String]
42
+ # @return [Merge::Accounting::PaginatedExpenseReportList]
43
+ def self.from_json(json_object:)
44
+ struct = JSON.parse(json_object, object_class: OpenStruct)
45
+ parsed_json = JSON.parse(json_object)
46
+ next_ = parsed_json["next"]
47
+ previous = parsed_json["previous"]
48
+ results = parsed_json["results"]&.map do |item|
49
+ item = item.to_json
50
+ Merge::Accounting::ExpenseReport.from_json(json_object: item)
51
+ end
52
+ new(
53
+ next_: next_,
54
+ previous: previous,
55
+ results: results,
56
+ additional_properties: struct
57
+ )
58
+ end
59
+
60
+ # Serialize an instance of PaginatedExpenseReportList to a JSON object
61
+ #
62
+ # @return [String]
63
+ def to_json(*_args)
64
+ @_field_set&.to_json
65
+ end
66
+
67
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
68
+ # hash and check each fields type against the current object's property
69
+ # definitions.
70
+ #
71
+ # @param obj [Object]
72
+ # @return [Void]
73
+ def self.validate_raw(obj:)
74
+ obj.next_&.is_a?(String) != false || raise("Passed value for field obj.next_ is not the expected type, validation failed.")
75
+ obj.previous&.is_a?(String) != false || raise("Passed value for field obj.previous is not the expected type, validation failed.")
76
+ obj.results&.is_a?(Array) != false || raise("Passed value for field obj.results is not the expected type, validation failed.")
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "project"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module Merge
8
+ module Accounting
9
+ class PaginatedProjectList
10
+ # @return [String]
11
+ attr_reader :next_
12
+ # @return [String]
13
+ attr_reader :previous
14
+ # @return [Array<Merge::Accounting::Project>]
15
+ attr_reader :results
16
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
17
+ attr_reader :additional_properties
18
+ # @return [Object]
19
+ attr_reader :_field_set
20
+ protected :_field_set
21
+
22
+ OMIT = Object.new
23
+
24
+ # @param next_ [String]
25
+ # @param previous [String]
26
+ # @param results [Array<Merge::Accounting::Project>]
27
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
28
+ # @return [Merge::Accounting::PaginatedProjectList]
29
+ def initialize(next_: OMIT, previous: OMIT, results: OMIT, additional_properties: nil)
30
+ @next_ = next_ if next_ != OMIT
31
+ @previous = previous if previous != OMIT
32
+ @results = results if results != OMIT
33
+ @additional_properties = additional_properties
34
+ @_field_set = { "next": next_, "previous": previous, "results": results }.reject do |_k, v|
35
+ v == OMIT
36
+ end
37
+ end
38
+
39
+ # Deserialize a JSON object to an instance of PaginatedProjectList
40
+ #
41
+ # @param json_object [String]
42
+ # @return [Merge::Accounting::PaginatedProjectList]
43
+ def self.from_json(json_object:)
44
+ struct = JSON.parse(json_object, object_class: OpenStruct)
45
+ parsed_json = JSON.parse(json_object)
46
+ next_ = parsed_json["next"]
47
+ previous = parsed_json["previous"]
48
+ results = parsed_json["results"]&.map do |item|
49
+ item = item.to_json
50
+ Merge::Accounting::Project.from_json(json_object: item)
51
+ end
52
+ new(
53
+ next_: next_,
54
+ previous: previous,
55
+ results: results,
56
+ additional_properties: struct
57
+ )
58
+ end
59
+
60
+ # Serialize an instance of PaginatedProjectList to a JSON object
61
+ #
62
+ # @return [String]
63
+ def to_json(*_args)
64
+ @_field_set&.to_json
65
+ end
66
+
67
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
68
+ # hash and check each fields type against the current object's property
69
+ # definitions.
70
+ #
71
+ # @param obj [Object]
72
+ # @return [Void]
73
+ def self.validate_raw(obj:)
74
+ obj.next_&.is_a?(String) != false || raise("Passed value for field obj.next_ is not the expected type, validation failed.")
75
+ obj.previous&.is_a?(String) != false || raise("Passed value for field obj.previous is not the expected type, validation failed.")
76
+ obj.results&.is_a?(Array) != false || raise("Passed value for field obj.results is not the expected type, validation failed.")
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,188 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "status_7_d_1_enum"
4
+ require_relative "patched_contact_request_addresses_item"
5
+ require_relative "accounting_phone_number_request"
6
+ require_relative "remote_field_request"
7
+ require "ostruct"
8
+ require "json"
9
+
10
+ module Merge
11
+ module Accounting
12
+ # # The Contact Object
13
+ # ### Description
14
+ # A `Contact` is an individual or business entity to which products and services
15
+ # are sold to or purchased from. The `Contact` model contains both Customers, in
16
+ # which products and services are sold to, and Vendors (or Suppliers), in which
17
+ # products and services are purchased from.
18
+ # * A `Contact` is a Vendor/Supplier if the `is_supplier` property is true.
19
+ # * A `Contact` is a customer if the `is_customer` property is true.
20
+ # ### Usage Example
21
+ # Fetch from the `LIST Contacts` endpoint and view a company's contacts.
22
+ class PatchedContactRequest
23
+ # @return [String] The contact's name.
24
+ attr_reader :name
25
+ # @return [Boolean] Whether the contact is a supplier.
26
+ attr_reader :is_supplier
27
+ # @return [Boolean] Whether the contact is a customer.
28
+ attr_reader :is_customer
29
+ # @return [String] The contact's email address.
30
+ attr_reader :email_address
31
+ # @return [String] The contact's tax number.
32
+ attr_reader :tax_number
33
+ # @return [Merge::Accounting::Status7D1Enum] The contact's status
34
+ # * `ACTIVE` - ACTIVE
35
+ # * `ARCHIVED` - ARCHIVED
36
+ attr_reader :status
37
+ # @return [String] The currency the contact's transactions are in.
38
+ attr_reader :currency
39
+ # @return [String] The company the contact belongs to.
40
+ attr_reader :company
41
+ # @return [Array<Merge::Accounting::PatchedContactRequestAddressesItem>] `Address` object IDs for the given `Contacts` object.
42
+ attr_reader :addresses
43
+ # @return [Array<Merge::Accounting::AccountingPhoneNumberRequest>] `AccountingPhoneNumber` object for the given `Contacts` object.
44
+ attr_reader :phone_numbers
45
+ # @return [Hash{String => Object}]
46
+ attr_reader :integration_params
47
+ # @return [Hash{String => Object}]
48
+ attr_reader :linked_account_params
49
+ # @return [Array<Merge::Accounting::RemoteFieldRequest>]
50
+ attr_reader :remote_fields
51
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
52
+ attr_reader :additional_properties
53
+ # @return [Object]
54
+ attr_reader :_field_set
55
+ protected :_field_set
56
+
57
+ OMIT = Object.new
58
+
59
+ # @param name [String] The contact's name.
60
+ # @param is_supplier [Boolean] Whether the contact is a supplier.
61
+ # @param is_customer [Boolean] Whether the contact is a customer.
62
+ # @param email_address [String] The contact's email address.
63
+ # @param tax_number [String] The contact's tax number.
64
+ # @param status [Merge::Accounting::Status7D1Enum] The contact's status
65
+ # * `ACTIVE` - ACTIVE
66
+ # * `ARCHIVED` - ARCHIVED
67
+ # @param currency [String] The currency the contact's transactions are in.
68
+ # @param company [String] The company the contact belongs to.
69
+ # @param addresses [Array<Merge::Accounting::PatchedContactRequestAddressesItem>] `Address` object IDs for the given `Contacts` object.
70
+ # @param phone_numbers [Array<Merge::Accounting::AccountingPhoneNumberRequest>] `AccountingPhoneNumber` object for the given `Contacts` object.
71
+ # @param integration_params [Hash{String => Object}]
72
+ # @param linked_account_params [Hash{String => Object}]
73
+ # @param remote_fields [Array<Merge::Accounting::RemoteFieldRequest>]
74
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
75
+ # @return [Merge::Accounting::PatchedContactRequest]
76
+ def initialize(name: OMIT, is_supplier: OMIT, is_customer: OMIT, email_address: OMIT, tax_number: OMIT,
77
+ status: OMIT, currency: OMIT, company: OMIT, addresses: OMIT, phone_numbers: OMIT, integration_params: OMIT, linked_account_params: OMIT, remote_fields: OMIT, additional_properties: nil)
78
+ @name = name if name != OMIT
79
+ @is_supplier = is_supplier if is_supplier != OMIT
80
+ @is_customer = is_customer if is_customer != OMIT
81
+ @email_address = email_address if email_address != OMIT
82
+ @tax_number = tax_number if tax_number != OMIT
83
+ @status = status if status != OMIT
84
+ @currency = currency if currency != OMIT
85
+ @company = company if company != OMIT
86
+ @addresses = addresses if addresses != OMIT
87
+ @phone_numbers = phone_numbers if phone_numbers != OMIT
88
+ @integration_params = integration_params if integration_params != OMIT
89
+ @linked_account_params = linked_account_params if linked_account_params != OMIT
90
+ @remote_fields = remote_fields if remote_fields != OMIT
91
+ @additional_properties = additional_properties
92
+ @_field_set = {
93
+ "name": name,
94
+ "is_supplier": is_supplier,
95
+ "is_customer": is_customer,
96
+ "email_address": email_address,
97
+ "tax_number": tax_number,
98
+ "status": status,
99
+ "currency": currency,
100
+ "company": company,
101
+ "addresses": addresses,
102
+ "phone_numbers": phone_numbers,
103
+ "integration_params": integration_params,
104
+ "linked_account_params": linked_account_params,
105
+ "remote_fields": remote_fields
106
+ }.reject do |_k, v|
107
+ v == OMIT
108
+ end
109
+ end
110
+
111
+ # Deserialize a JSON object to an instance of PatchedContactRequest
112
+ #
113
+ # @param json_object [String]
114
+ # @return [Merge::Accounting::PatchedContactRequest]
115
+ def self.from_json(json_object:)
116
+ struct = JSON.parse(json_object, object_class: OpenStruct)
117
+ parsed_json = JSON.parse(json_object)
118
+ name = parsed_json["name"]
119
+ is_supplier = parsed_json["is_supplier"]
120
+ is_customer = parsed_json["is_customer"]
121
+ email_address = parsed_json["email_address"]
122
+ tax_number = parsed_json["tax_number"]
123
+ status = parsed_json["status"]
124
+ currency = parsed_json["currency"]
125
+ company = parsed_json["company"]
126
+ addresses = parsed_json["addresses"]&.map do |item|
127
+ item = item.to_json
128
+ Merge::Accounting::PatchedContactRequestAddressesItem.from_json(json_object: item)
129
+ end
130
+ phone_numbers = parsed_json["phone_numbers"]&.map do |item|
131
+ item = item.to_json
132
+ Merge::Accounting::AccountingPhoneNumberRequest.from_json(json_object: item)
133
+ end
134
+ integration_params = parsed_json["integration_params"]
135
+ linked_account_params = parsed_json["linked_account_params"]
136
+ remote_fields = parsed_json["remote_fields"]&.map do |item|
137
+ item = item.to_json
138
+ Merge::Accounting::RemoteFieldRequest.from_json(json_object: item)
139
+ end
140
+ new(
141
+ name: name,
142
+ is_supplier: is_supplier,
143
+ is_customer: is_customer,
144
+ email_address: email_address,
145
+ tax_number: tax_number,
146
+ status: status,
147
+ currency: currency,
148
+ company: company,
149
+ addresses: addresses,
150
+ phone_numbers: phone_numbers,
151
+ integration_params: integration_params,
152
+ linked_account_params: linked_account_params,
153
+ remote_fields: remote_fields,
154
+ additional_properties: struct
155
+ )
156
+ end
157
+
158
+ # Serialize an instance of PatchedContactRequest to a JSON object
159
+ #
160
+ # @return [String]
161
+ def to_json(*_args)
162
+ @_field_set&.to_json
163
+ end
164
+
165
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
166
+ # hash and check each fields type against the current object's property
167
+ # definitions.
168
+ #
169
+ # @param obj [Object]
170
+ # @return [Void]
171
+ def self.validate_raw(obj:)
172
+ obj.name&.is_a?(String) != false || raise("Passed value for field obj.name is not the expected type, validation failed.")
173
+ obj.is_supplier&.is_a?(Boolean) != false || raise("Passed value for field obj.is_supplier is not the expected type, validation failed.")
174
+ obj.is_customer&.is_a?(Boolean) != false || raise("Passed value for field obj.is_customer is not the expected type, validation failed.")
175
+ obj.email_address&.is_a?(String) != false || raise("Passed value for field obj.email_address is not the expected type, validation failed.")
176
+ obj.tax_number&.is_a?(String) != false || raise("Passed value for field obj.tax_number is not the expected type, validation failed.")
177
+ obj.status&.is_a?(Merge::Accounting::Status7D1Enum) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
178
+ obj.currency&.is_a?(String) != false || raise("Passed value for field obj.currency is not the expected type, validation failed.")
179
+ obj.company&.is_a?(String) != false || raise("Passed value for field obj.company is not the expected type, validation failed.")
180
+ obj.addresses&.is_a?(Array) != false || raise("Passed value for field obj.addresses is not the expected type, validation failed.")
181
+ obj.phone_numbers&.is_a?(Array) != false || raise("Passed value for field obj.phone_numbers is not the expected type, validation failed.")
182
+ obj.integration_params&.is_a?(Hash) != false || raise("Passed value for field obj.integration_params is not the expected type, validation failed.")
183
+ obj.linked_account_params&.is_a?(Hash) != false || raise("Passed value for field obj.linked_account_params is not the expected type, validation failed.")
184
+ obj.remote_fields&.is_a?(Array) != false || raise("Passed value for field obj.remote_fields is not the expected type, validation failed.")
185
+ end
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require_relative "address"
5
+
6
+ module Merge
7
+ module Accounting
8
+ class PatchedContactRequestAddressesItem
9
+ # Deserialize a JSON object to an instance of PatchedContactRequestAddressesItem
10
+ #
11
+ # @param json_object [String]
12
+ # @return [Merge::Accounting::PatchedContactRequestAddressesItem]
13
+ def self.from_json(json_object:)
14
+ struct = JSON.parse(json_object, object_class: OpenStruct)
15
+ begin
16
+ struct.is_a?(String) != false || raise("Passed value for field struct is not the expected type, validation failed.")
17
+ return struct unless struct.nil?
18
+
19
+ return nil
20
+ rescue StandardError
21
+ # noop
22
+ end
23
+ begin
24
+ Merge::Accounting::Address.validate_raw(obj: struct)
25
+ return Merge::Accounting::Address.from_json(json_object: struct) unless struct.nil?
26
+
27
+ return nil
28
+ rescue StandardError
29
+ # noop
30
+ end
31
+ struct
32
+ end
33
+
34
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
35
+ # hash and check each fields type against the current object's property
36
+ # definitions.
37
+ #
38
+ # @param obj [Object]
39
+ # @return [Void]
40
+ def self.validate_raw(obj:)
41
+ begin
42
+ return obj.is_a?(String) != false || raise("Passed value for field obj is not the expected type, validation failed.")
43
+ rescue StandardError
44
+ # noop
45
+ end
46
+ begin
47
+ return Merge::Accounting::Address.validate_raw(obj: obj)
48
+ rescue StandardError
49
+ # noop
50
+ end
51
+ raise("Passed value matched no type within the union, validation failed.")
52
+ end
53
+ end
54
+ end
55
+ end