xero-ruby 4.2.0 → 4.3.1

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 (1008) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +450 -450
  3. data/lib/xero-ruby/api/accounting_api.rb +18858 -18858
  4. data/lib/xero-ruby/api/app_store_api.rb +325 -325
  5. data/lib/xero-ruby/api/asset_api.rb +493 -493
  6. data/lib/xero-ruby/api/files_api.rb +1468 -1468
  7. data/lib/xero-ruby/api/finance_api.rb +961 -961
  8. data/lib/xero-ruby/api/payroll_au_api.rb +2513 -2282
  9. data/lib/xero-ruby/api/payroll_nz_api.rb +5334 -5334
  10. data/lib/xero-ruby/api/payroll_uk_api.rb +5479 -5479
  11. data/lib/xero-ruby/api/project_api.rb +1402 -1402
  12. data/lib/xero-ruby/api_client.rb +675 -675
  13. data/lib/xero-ruby/api_error.rb +57 -57
  14. data/lib/xero-ruby/configuration.rb +282 -282
  15. data/lib/xero-ruby/models/accounting/account.rb +535 -535
  16. data/lib/xero-ruby/models/accounting/account_type.rb +56 -56
  17. data/lib/xero-ruby/models/accounting/accounts.rb +224 -224
  18. data/lib/xero-ruby/models/accounting/accounts_payable.rb +232 -232
  19. data/lib/xero-ruby/models/accounting/accounts_receivable.rb +232 -232
  20. data/lib/xero-ruby/models/accounting/action.rb +268 -268
  21. data/lib/xero-ruby/models/accounting/actions.rb +224 -224
  22. data/lib/xero-ruby/models/accounting/address.rb +483 -483
  23. data/lib/xero-ruby/models/accounting/address_for_organisation.rb +484 -484
  24. data/lib/xero-ruby/models/accounting/allocation.rb +309 -309
  25. data/lib/xero-ruby/models/accounting/allocations.rb +224 -224
  26. data/lib/xero-ruby/models/accounting/attachment.rb +272 -272
  27. data/lib/xero-ruby/models/accounting/attachments.rb +224 -224
  28. data/lib/xero-ruby/models/accounting/balance_details.rb +243 -243
  29. data/lib/xero-ruby/models/accounting/balances.rb +233 -233
  30. data/lib/xero-ruby/models/accounting/bank_transaction.rb +510 -510
  31. data/lib/xero-ruby/models/accounting/bank_transactions.rb +224 -224
  32. data/lib/xero-ruby/models/accounting/bank_transfer.rb +375 -375
  33. data/lib/xero-ruby/models/accounting/bank_transfers.rb +224 -224
  34. data/lib/xero-ruby/models/accounting/batch_payment.rb +496 -496
  35. data/lib/xero-ruby/models/accounting/batch_payment_delete.rb +244 -244
  36. data/lib/xero-ruby/models/accounting/batch_payment_delete_by_url_param.rb +229 -229
  37. data/lib/xero-ruby/models/accounting/batch_payment_details.rb +293 -293
  38. data/lib/xero-ruby/models/accounting/batch_payments.rb +224 -224
  39. data/lib/xero-ruby/models/accounting/bill.rb +232 -232
  40. data/lib/xero-ruby/models/accounting/branding_theme.rb +307 -307
  41. data/lib/xero-ruby/models/accounting/branding_themes.rb +224 -224
  42. data/lib/xero-ruby/models/accounting/budget.rb +327 -327
  43. data/lib/xero-ruby/models/accounting/budget_balance.rb +267 -267
  44. data/lib/xero-ruby/models/accounting/budget_line.rb +244 -244
  45. data/lib/xero-ruby/models/accounting/budgets.rb +224 -224
  46. data/lib/xero-ruby/models/accounting/cis_org_setting.rb +242 -242
  47. data/lib/xero-ruby/models/accounting/cis_org_settings.rb +224 -224
  48. data/lib/xero-ruby/models/accounting/cis_setting.rb +232 -232
  49. data/lib/xero-ruby/models/accounting/cis_settings.rb +224 -224
  50. data/lib/xero-ruby/models/accounting/contact.rb +849 -849
  51. data/lib/xero-ruby/models/accounting/contact_group.rb +290 -290
  52. data/lib/xero-ruby/models/accounting/contact_groups.rb +224 -224
  53. data/lib/xero-ruby/models/accounting/contact_person.rb +252 -252
  54. data/lib/xero-ruby/models/accounting/contacts.rb +224 -224
  55. data/lib/xero-ruby/models/accounting/conversion_balances.rb +245 -245
  56. data/lib/xero-ruby/models/accounting/conversion_date.rb +233 -233
  57. data/lib/xero-ruby/models/accounting/country_code.rb +274 -274
  58. data/lib/xero-ruby/models/accounting/credit_note.rb +580 -580
  59. data/lib/xero-ruby/models/accounting/credit_notes.rb +224 -224
  60. data/lib/xero-ruby/models/accounting/currencies.rb +224 -224
  61. data/lib/xero-ruby/models/accounting/currency.rb +232 -232
  62. data/lib/xero-ruby/models/accounting/currency_code.rb +203 -203
  63. data/lib/xero-ruby/models/accounting/element.rb +294 -294
  64. data/lib/xero-ruby/models/accounting/employee.rb +362 -362
  65. data/lib/xero-ruby/models/accounting/employees.rb +224 -224
  66. data/lib/xero-ruby/models/accounting/error.rb +254 -254
  67. data/lib/xero-ruby/models/accounting/expense_claim.rb +375 -375
  68. data/lib/xero-ruby/models/accounting/expense_claims.rb +224 -224
  69. data/lib/xero-ruby/models/accounting/external_link.rb +281 -281
  70. data/lib/xero-ruby/models/accounting/history_record.rb +252 -252
  71. data/lib/xero-ruby/models/accounting/history_records.rb +224 -224
  72. data/lib/xero-ruby/models/accounting/import_summary.rb +233 -233
  73. data/lib/xero-ruby/models/accounting/import_summary_accounts.rb +303 -303
  74. data/lib/xero-ruby/models/accounting/import_summary_object.rb +222 -222
  75. data/lib/xero-ruby/models/accounting/import_summary_organisation.rb +222 -222
  76. data/lib/xero-ruby/models/accounting/invoice.rb +707 -707
  77. data/lib/xero-ruby/models/accounting/invoice_reminder.rb +222 -222
  78. data/lib/xero-ruby/models/accounting/invoice_reminders.rb +224 -224
  79. data/lib/xero-ruby/models/accounting/invoices.rb +224 -224
  80. data/lib/xero-ruby/models/accounting/item.rb +443 -443
  81. data/lib/xero-ruby/models/accounting/items.rb +224 -224
  82. data/lib/xero-ruby/models/accounting/journal.rb +353 -353
  83. data/lib/xero-ruby/models/accounting/journal_line.rb +334 -334
  84. data/lib/xero-ruby/models/accounting/journals.rb +224 -224
  85. data/lib/xero-ruby/models/accounting/line_amount_types.rb +37 -37
  86. data/lib/xero-ruby/models/accounting/line_item.rb +364 -364
  87. data/lib/xero-ruby/models/accounting/line_item_item.rb +272 -272
  88. data/lib/xero-ruby/models/accounting/line_item_tracking.rb +267 -267
  89. data/lib/xero-ruby/models/accounting/linked_transaction.rb +390 -390
  90. data/lib/xero-ruby/models/accounting/linked_transactions.rb +224 -224
  91. data/lib/xero-ruby/models/accounting/manual_journal.rb +406 -406
  92. data/lib/xero-ruby/models/accounting/manual_journal_line.rb +294 -294
  93. data/lib/xero-ruby/models/accounting/manual_journals.rb +224 -224
  94. data/lib/xero-ruby/models/accounting/online_invoice.rb +222 -222
  95. data/lib/xero-ruby/models/accounting/online_invoices.rb +224 -224
  96. data/lib/xero-ruby/models/accounting/organisation.rb +728 -728
  97. data/lib/xero-ruby/models/accounting/organisations.rb +224 -224
  98. data/lib/xero-ruby/models/accounting/overpayment.rb +464 -464
  99. data/lib/xero-ruby/models/accounting/overpayments.rb +224 -224
  100. data/lib/xero-ruby/models/accounting/payment.rb +544 -544
  101. data/lib/xero-ruby/models/accounting/payment_delete.rb +229 -229
  102. data/lib/xero-ruby/models/accounting/payment_service.rb +274 -274
  103. data/lib/xero-ruby/models/accounting/payment_services.rb +224 -224
  104. data/lib/xero-ruby/models/accounting/payment_term.rb +232 -232
  105. data/lib/xero-ruby/models/accounting/payment_term_type.rb +38 -38
  106. data/lib/xero-ruby/models/accounting/payments.rb +224 -224
  107. data/lib/xero-ruby/models/accounting/phone.rb +336 -336
  108. data/lib/xero-ruby/models/accounting/prepayment.rb +475 -475
  109. data/lib/xero-ruby/models/accounting/prepayments.rb +224 -224
  110. data/lib/xero-ruby/models/accounting/purchase.rb +252 -252
  111. data/lib/xero-ruby/models/accounting/purchase_order.rb +541 -541
  112. data/lib/xero-ruby/models/accounting/purchase_orders.rb +224 -224
  113. data/lib/xero-ruby/models/accounting/quote.rb +531 -531
  114. data/lib/xero-ruby/models/accounting/quote_line_amount_types.rb +37 -37
  115. data/lib/xero-ruby/models/accounting/quote_status_codes.rb +40 -40
  116. data/lib/xero-ruby/models/accounting/quotes.rb +224 -224
  117. data/lib/xero-ruby/models/accounting/receipt.rb +441 -441
  118. data/lib/xero-ruby/models/accounting/receipts.rb +224 -224
  119. data/lib/xero-ruby/models/accounting/repeating_invoice.rb +477 -477
  120. data/lib/xero-ruby/models/accounting/repeating_invoices.rb +224 -224
  121. data/lib/xero-ruby/models/accounting/report.rb +309 -309
  122. data/lib/xero-ruby/models/accounting/report_attribute.rb +232 -232
  123. data/lib/xero-ruby/models/accounting/report_cell.rb +234 -234
  124. data/lib/xero-ruby/models/accounting/report_fields.rb +242 -242
  125. data/lib/xero-ruby/models/accounting/report_row.rb +244 -244
  126. data/lib/xero-ruby/models/accounting/report_rows.rb +256 -256
  127. data/lib/xero-ruby/models/accounting/report_with_row.rb +308 -308
  128. data/lib/xero-ruby/models/accounting/report_with_rows.rb +224 -224
  129. data/lib/xero-ruby/models/accounting/reports.rb +224 -224
  130. data/lib/xero-ruby/models/accounting/request_empty.rb +222 -222
  131. data/lib/xero-ruby/models/accounting/row_type.rb +38 -38
  132. data/lib/xero-ruby/models/accounting/sales_tracking_category.rb +232 -232
  133. data/lib/xero-ruby/models/accounting/schedule.rb +336 -336
  134. data/lib/xero-ruby/models/accounting/setup.rb +246 -246
  135. data/lib/xero-ruby/models/accounting/tax_component.rb +252 -252
  136. data/lib/xero-ruby/models/accounting/tax_rate.rb +481 -476
  137. data/lib/xero-ruby/models/accounting/tax_rates.rb +224 -224
  138. data/lib/xero-ruby/models/accounting/tax_type.rb +130 -120
  139. data/lib/xero-ruby/models/accounting/ten_ninety_nine_contact.rb +432 -432
  140. data/lib/xero-ruby/models/accounting/time_zone.rb +175 -175
  141. data/lib/xero-ruby/models/accounting/tracking_categories.rb +224 -224
  142. data/lib/xero-ruby/models/accounting/tracking_category.rb +341 -341
  143. data/lib/xero-ruby/models/accounting/tracking_option.rb +304 -304
  144. data/lib/xero-ruby/models/accounting/tracking_options.rb +224 -224
  145. data/lib/xero-ruby/models/accounting/user.rb +323 -323
  146. data/lib/xero-ruby/models/accounting/users.rb +224 -224
  147. data/lib/xero-ruby/models/accounting/validation_error.rb +222 -222
  148. data/lib/xero-ruby/models/app_store/create_usage_record.rb +243 -243
  149. data/lib/xero-ruby/models/app_store/plan.rb +311 -311
  150. data/lib/xero-ruby/models/app_store/price.rb +257 -257
  151. data/lib/xero-ruby/models/app_store/problem_details.rb +272 -272
  152. data/lib/xero-ruby/models/app_store/product.rb +299 -299
  153. data/lib/xero-ruby/models/app_store/subscription.rb +361 -361
  154. data/lib/xero-ruby/models/app_store/subscription_item.rb +354 -354
  155. data/lib/xero-ruby/models/app_store/update_usage_record.rb +228 -228
  156. data/lib/xero-ruby/models/app_store/usage_record.rb +332 -332
  157. data/lib/xero-ruby/models/app_store/usage_records_list.rb +230 -230
  158. data/lib/xero-ruby/models/assets/asset.rb +377 -377
  159. data/lib/xero-ruby/models/assets/asset_status.rb +37 -37
  160. data/lib/xero-ruby/models/assets/asset_status_query_param.rb +37 -37
  161. data/lib/xero-ruby/models/assets/asset_type.rb +292 -292
  162. data/lib/xero-ruby/models/assets/assets.rb +234 -234
  163. data/lib/xero-ruby/models/assets/book_depreciation_detail.rb +282 -282
  164. data/lib/xero-ruby/models/assets/book_depreciation_setting.rb +361 -361
  165. data/lib/xero-ruby/models/assets/error.rb +266 -266
  166. data/lib/xero-ruby/models/assets/field_validation_errors_element.rb +272 -272
  167. data/lib/xero-ruby/models/assets/pagination.rb +252 -252
  168. data/lib/xero-ruby/models/assets/resource_validation_errors_element.rb +262 -262
  169. data/lib/xero-ruby/models/assets/setting.rb +292 -292
  170. data/lib/xero-ruby/models/files/association.rb +252 -252
  171. data/lib/xero-ruby/models/files/file_object.rb +292 -292
  172. data/lib/xero-ruby/models/files/files.rb +254 -254
  173. data/lib/xero-ruby/models/files/folder.rb +262 -262
  174. data/lib/xero-ruby/models/files/folders.rb +224 -224
  175. data/lib/xero-ruby/models/files/object_group.rb +46 -46
  176. data/lib/xero-ruby/models/files/object_type.rb +90 -90
  177. data/lib/xero-ruby/models/files/upload_object.rb +267 -267
  178. data/lib/xero-ruby/models/files/user.rb +267 -267
  179. data/lib/xero-ruby/models/finance/account_usage.rb +342 -342
  180. data/lib/xero-ruby/models/finance/account_usage_response.rb +254 -254
  181. data/lib/xero-ruby/models/finance/balance_sheet_account_detail.rb +262 -262
  182. data/lib/xero-ruby/models/finance/balance_sheet_account_group.rb +234 -234
  183. data/lib/xero-ruby/models/finance/balance_sheet_account_type.rb +244 -244
  184. data/lib/xero-ruby/models/finance/balance_sheet_response.rb +252 -252
  185. data/lib/xero-ruby/models/finance/bank_statement_accounting_response.rb +254 -254
  186. data/lib/xero-ruby/models/finance/bank_statement_response.rb +232 -232
  187. data/lib/xero-ruby/models/finance/bank_transaction_response.rb +274 -274
  188. data/lib/xero-ruby/models/finance/cash_account_response.rb +262 -262
  189. data/lib/xero-ruby/models/finance/cash_balance.rb +242 -242
  190. data/lib/xero-ruby/models/finance/cash_validation_response.rb +262 -262
  191. data/lib/xero-ruby/models/finance/cashflow_account.rb +282 -282
  192. data/lib/xero-ruby/models/finance/cashflow_activity.rb +244 -244
  193. data/lib/xero-ruby/models/finance/cashflow_response.rb +254 -254
  194. data/lib/xero-ruby/models/finance/cashflow_type.rb +244 -244
  195. data/lib/xero-ruby/models/finance/contact_detail.rb +274 -274
  196. data/lib/xero-ruby/models/finance/contact_response.rb +232 -232
  197. data/lib/xero-ruby/models/finance/contact_total_detail.rb +242 -242
  198. data/lib/xero-ruby/models/finance/contact_total_other.rb +252 -252
  199. data/lib/xero-ruby/models/finance/credit_note_response.rb +254 -254
  200. data/lib/xero-ruby/models/finance/current_statement_response.rb +272 -272
  201. data/lib/xero-ruby/models/finance/data_source_response.rb +362 -362
  202. data/lib/xero-ruby/models/finance/history_record_response.rb +262 -262
  203. data/lib/xero-ruby/models/finance/income_by_contact_response.rb +284 -284
  204. data/lib/xero-ruby/models/finance/invoice_response.rb +254 -254
  205. data/lib/xero-ruby/models/finance/line_item_response.rb +252 -252
  206. data/lib/xero-ruby/models/finance/lock_history_model.rb +242 -242
  207. data/lib/xero-ruby/models/finance/lock_history_response.rb +244 -244
  208. data/lib/xero-ruby/models/finance/manual_journal_total.rb +222 -222
  209. data/lib/xero-ruby/models/finance/overpayment_response.rb +254 -254
  210. data/lib/xero-ruby/models/finance/payment_response.rb +312 -312
  211. data/lib/xero-ruby/models/finance/pnl_account.rb +272 -272
  212. data/lib/xero-ruby/models/finance/pnl_account_class.rb +234 -234
  213. data/lib/xero-ruby/models/finance/pnl_account_type.rb +244 -244
  214. data/lib/xero-ruby/models/finance/practice_response.rb +262 -262
  215. data/lib/xero-ruby/models/finance/prepayment_response.rb +254 -254
  216. data/lib/xero-ruby/models/finance/problem.rb +252 -252
  217. data/lib/xero-ruby/models/finance/problem_type.rb +44 -44
  218. data/lib/xero-ruby/models/finance/profit_and_loss_response.rb +262 -262
  219. data/lib/xero-ruby/models/finance/report_history_model.rb +242 -242
  220. data/lib/xero-ruby/models/finance/report_history_response.rb +244 -244
  221. data/lib/xero-ruby/models/finance/statement_balance_response.rb +232 -232
  222. data/lib/xero-ruby/models/finance/statement_line_response.rb +356 -356
  223. data/lib/xero-ruby/models/finance/statement_lines_response.rb +382 -382
  224. data/lib/xero-ruby/models/finance/statement_response.rb +314 -314
  225. data/lib/xero-ruby/models/finance/total_detail.rb +242 -242
  226. data/lib/xero-ruby/models/finance/total_other.rb +242 -242
  227. data/lib/xero-ruby/models/finance/trial_balance_account.rb +312 -312
  228. data/lib/xero-ruby/models/finance/trial_balance_entry.rb +232 -232
  229. data/lib/xero-ruby/models/finance/trial_balance_movement.rb +252 -252
  230. data/lib/xero-ruby/models/finance/trial_balance_response.rb +244 -244
  231. data/lib/xero-ruby/models/finance/user_activities_response.rb +244 -244
  232. data/lib/xero-ruby/models/finance/user_response.rb +336 -336
  233. data/lib/xero-ruby/models/payroll_au/account.rb +252 -252
  234. data/lib/xero-ruby/models/payroll_au/account_type.rb +57 -57
  235. data/lib/xero-ruby/models/payroll_au/allowance_category.rb +41 -41
  236. data/lib/xero-ruby/models/payroll_au/allowance_type.rb +44 -44
  237. data/lib/xero-ruby/models/payroll_au/api_exception.rb +243 -243
  238. data/lib/xero-ruby/models/payroll_au/bank_account.rb +272 -272
  239. data/lib/xero-ruby/models/payroll_au/calendar_type.rb +40 -40
  240. data/lib/xero-ruby/models/payroll_au/country_of_residence.rb +285 -285
  241. data/lib/xero-ruby/models/payroll_au/deduction_line.rb +267 -267
  242. data/lib/xero-ruby/models/payroll_au/deduction_type.rb +354 -354
  243. data/lib/xero-ruby/models/payroll_au/deduction_type_calculation_type.rb +37 -37
  244. data/lib/xero-ruby/models/payroll_au/earnings_line.rb +307 -307
  245. data/lib/xero-ruby/models/payroll_au/earnings_rate.rb +442 -442
  246. data/lib/xero-ruby/models/payroll_au/earnings_rate_calculation_type.rb +37 -37
  247. data/lib/xero-ruby/models/payroll_au/earnings_type.rb +48 -48
  248. data/lib/xero-ruby/models/payroll_au/employee.rb +654 -654
  249. data/lib/xero-ruby/models/payroll_au/employee_status.rb +36 -36
  250. data/lib/xero-ruby/models/payroll_au/employees.rb +224 -224
  251. data/lib/xero-ruby/models/payroll_au/employment_basis.rb +40 -40
  252. data/lib/xero-ruby/models/payroll_au/employment_termination_payment_type.rb +36 -36
  253. data/lib/xero-ruby/models/payroll_au/employment_type.rb +36 -36
  254. data/lib/xero-ruby/models/payroll_au/entitlement_final_pay_payout_type.rb +36 -36
  255. data/lib/xero-ruby/models/payroll_au/home_address.rb +277 -277
  256. data/lib/xero-ruby/models/payroll_au/income_type.rb +39 -39
  257. data/lib/xero-ruby/models/payroll_au/leave_accrual_line.rb +242 -242
  258. data/lib/xero-ruby/models/payroll_au/leave_application.rb +326 -326
  259. data/lib/xero-ruby/models/payroll_au/leave_applications.rb +224 -224
  260. data/lib/xero-ruby/models/payroll_au/leave_balance.rb +252 -252
  261. data/lib/xero-ruby/models/payroll_au/leave_category_code.rb +46 -46
  262. data/lib/xero-ruby/models/payroll_au/leave_earnings_line.rb +252 -252
  263. data/lib/xero-ruby/models/payroll_au/leave_line.rb +292 -292
  264. data/lib/xero-ruby/models/payroll_au/leave_line_calculation_type.rb +39 -39
  265. data/lib/xero-ruby/models/payroll_au/leave_lines.rb +225 -225
  266. data/lib/xero-ruby/models/payroll_au/leave_period.rb +252 -252
  267. data/lib/xero-ruby/models/payroll_au/leave_period_status.rb +36 -36
  268. data/lib/xero-ruby/models/payroll_au/leave_type.rb +337 -337
  269. data/lib/xero-ruby/models/payroll_au/leave_type_contribution_type.rb +38 -38
  270. data/lib/xero-ruby/models/payroll_au/manual_tax_type.rb +40 -40
  271. data/lib/xero-ruby/models/payroll_au/opening_balances.rb +304 -304
  272. data/lib/xero-ruby/models/payroll_au/paid_leave_earnings_line.rb +272 -272
  273. data/lib/xero-ruby/models/payroll_au/pay_item.rb +260 -260
  274. data/lib/xero-ruby/models/payroll_au/pay_items.rb +222 -222
  275. data/lib/xero-ruby/models/payroll_au/pay_out_type.rb +36 -36
  276. data/lib/xero-ruby/models/payroll_au/pay_run.rb +381 -381
  277. data/lib/xero-ruby/models/payroll_au/pay_run_status.rb +36 -36
  278. data/lib/xero-ruby/models/payroll_au/pay_runs.rb +224 -224
  279. data/lib/xero-ruby/models/payroll_au/pay_template.rb +272 -272
  280. data/lib/xero-ruby/models/payroll_au/payment_frequency_type.rb +41 -41
  281. data/lib/xero-ruby/models/payroll_au/payroll_calendar.rb +294 -294
  282. data/lib/xero-ruby/models/payroll_au/payroll_calendars.rb +224 -224
  283. data/lib/xero-ruby/models/payroll_au/payslip.rb +418 -418
  284. data/lib/xero-ruby/models/payroll_au/payslip_lines.rb +308 -308
  285. data/lib/xero-ruby/models/payroll_au/payslip_object.rb +222 -222
  286. data/lib/xero-ruby/models/payroll_au/payslip_summary.rb +332 -332
  287. data/lib/xero-ruby/models/payroll_au/payslips.rb +224 -224
  288. data/lib/xero-ruby/models/payroll_au/rate_type.rb +37 -37
  289. data/lib/xero-ruby/models/payroll_au/reimbursement_line.rb +267 -267
  290. data/lib/xero-ruby/models/payroll_au/reimbursement_lines.rb +225 -225
  291. data/lib/xero-ruby/models/payroll_au/reimbursement_type.rb +277 -277
  292. data/lib/xero-ruby/models/payroll_au/residency_status.rb +37 -37
  293. data/lib/xero-ruby/models/payroll_au/senior_marital_status.rb +37 -37
  294. data/lib/xero-ruby/models/payroll_au/settings.rb +254 -254
  295. data/lib/xero-ruby/models/payroll_au/settings_object.rb +222 -222
  296. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories.rb +233 -233
  297. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories_employee_groups.rb +233 -233
  298. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories_timesheet_categories.rb +233 -233
  299. data/lib/xero-ruby/models/payroll_au/state.rb +42 -42
  300. data/lib/xero-ruby/models/payroll_au/super_fund.rb +349 -349
  301. data/lib/xero-ruby/models/payroll_au/super_fund_product.rb +252 -252
  302. data/lib/xero-ruby/models/payroll_au/super_fund_products.rb +224 -224
  303. data/lib/xero-ruby/models/payroll_au/super_fund_type.rb +36 -36
  304. data/lib/xero-ruby/models/payroll_au/super_funds.rb +224 -224
  305. data/lib/xero-ruby/models/payroll_au/super_line.rb +292 -292
  306. data/lib/xero-ruby/models/payroll_au/super_membership.rb +252 -252
  307. data/lib/xero-ruby/models/payroll_au/superannuation_calculation_type.rb +37 -37
  308. data/lib/xero-ruby/models/payroll_au/superannuation_contribution_type.rb +38 -38
  309. data/lib/xero-ruby/models/payroll_au/superannuation_line.rb +302 -302
  310. data/lib/xero-ruby/models/payroll_au/tax_declaration.rb +422 -422
  311. data/lib/xero-ruby/models/payroll_au/tax_line.rb +272 -272
  312. data/lib/xero-ruby/models/payroll_au/tax_scale_type.rb +40 -40
  313. data/lib/xero-ruby/models/payroll_au/tfn_exemption_type.rb +38 -38
  314. data/lib/xero-ruby/models/payroll_au/timesheet.rb +321 -321
  315. data/lib/xero-ruby/models/payroll_au/timesheet_line.rb +254 -254
  316. data/lib/xero-ruby/models/payroll_au/timesheet_object.rb +222 -222
  317. data/lib/xero-ruby/models/payroll_au/timesheet_status.rb +39 -39
  318. data/lib/xero-ruby/models/payroll_au/timesheets.rb +224 -224
  319. data/lib/xero-ruby/models/payroll_au/validation_error.rb +222 -222
  320. data/lib/xero-ruby/models/payroll_au/work_condition.rb +37 -37
  321. data/lib/xero-ruby/models/payroll_nz/account.rb +290 -290
  322. data/lib/xero-ruby/models/payroll_nz/accounts.rb +224 -224
  323. data/lib/xero-ruby/models/payroll_nz/address.rb +287 -287
  324. data/lib/xero-ruby/models/payroll_nz/bank_account.rb +343 -343
  325. data/lib/xero-ruby/models/payroll_nz/benefit.rb +383 -383
  326. data/lib/xero-ruby/models/payroll_nz/calendar_type.rb +41 -41
  327. data/lib/xero-ruby/models/payroll_nz/deduction.rb +325 -325
  328. data/lib/xero-ruby/models/payroll_nz/deduction_line.rb +262 -262
  329. data/lib/xero-ruby/models/payroll_nz/deduction_object.rb +242 -242
  330. data/lib/xero-ruby/models/payroll_nz/deductions.rb +244 -244
  331. data/lib/xero-ruby/models/payroll_nz/earnings_line.rb +312 -312
  332. data/lib/xero-ruby/models/payroll_nz/earnings_order.rb +269 -269
  333. data/lib/xero-ruby/models/payroll_nz/earnings_order_object.rb +242 -242
  334. data/lib/xero-ruby/models/payroll_nz/earnings_orders.rb +244 -244
  335. data/lib/xero-ruby/models/payroll_nz/earnings_rate.rb +401 -401
  336. data/lib/xero-ruby/models/payroll_nz/earnings_rate_object.rb +242 -242
  337. data/lib/xero-ruby/models/payroll_nz/earnings_rates.rb +244 -244
  338. data/lib/xero-ruby/models/payroll_nz/earnings_template.rb +272 -272
  339. data/lib/xero-ruby/models/payroll_nz/earnings_template_object.rb +242 -242
  340. data/lib/xero-ruby/models/payroll_nz/employee.rb +388 -388
  341. data/lib/xero-ruby/models/payroll_nz/employee_earnings_templates.rb +244 -244
  342. data/lib/xero-ruby/models/payroll_nz/employee_leave.rb +304 -304
  343. data/lib/xero-ruby/models/payroll_nz/employee_leave_balance.rb +252 -252
  344. data/lib/xero-ruby/models/payroll_nz/employee_leave_balances.rb +244 -244
  345. data/lib/xero-ruby/models/payroll_nz/employee_leave_object.rb +242 -242
  346. data/lib/xero-ruby/models/payroll_nz/employee_leave_setup.rb +282 -282
  347. data/lib/xero-ruby/models/payroll_nz/employee_leave_setup_object.rb +242 -242
  348. data/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb +350 -350
  349. data/lib/xero-ruby/models/payroll_nz/employee_leave_type_object.rb +242 -242
  350. data/lib/xero-ruby/models/payroll_nz/employee_leave_types.rb +244 -244
  351. data/lib/xero-ruby/models/payroll_nz/employee_leaves.rb +244 -244
  352. data/lib/xero-ruby/models/payroll_nz/employee_object.rb +242 -242
  353. data/lib/xero-ruby/models/payroll_nz/employee_opening_balance.rb +252 -252
  354. data/lib/xero-ruby/models/payroll_nz/employee_opening_balances_object.rb +244 -244
  355. data/lib/xero-ruby/models/payroll_nz/employee_pay_template.rb +234 -234
  356. data/lib/xero-ruby/models/payroll_nz/employee_pay_template_object.rb +242 -242
  357. data/lib/xero-ruby/models/payroll_nz/employee_pay_templates.rb +242 -242
  358. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb +294 -294
  359. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance_object.rb +242 -242
  360. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb +336 -336
  361. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leaves_summaries.rb +244 -244
  362. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leave.rb +433 -433
  363. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leave_object.rb +242 -242
  364. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leaves.rb +244 -244
  365. data/lib/xero-ruby/models/payroll_nz/employee_tax.rb +411 -411
  366. data/lib/xero-ruby/models/payroll_nz/employee_tax_object.rb +242 -242
  367. data/lib/xero-ruby/models/payroll_nz/employees.rb +244 -244
  368. data/lib/xero-ruby/models/payroll_nz/employment.rb +242 -242
  369. data/lib/xero-ruby/models/payroll_nz/employment_object.rb +242 -242
  370. data/lib/xero-ruby/models/payroll_nz/gross_earnings_history.rb +232 -232
  371. data/lib/xero-ruby/models/payroll_nz/invalid_field.rb +232 -232
  372. data/lib/xero-ruby/models/payroll_nz/leave_accrual_line.rb +232 -232
  373. data/lib/xero-ruby/models/payroll_nz/leave_earnings_line.rb +312 -312
  374. data/lib/xero-ruby/models/payroll_nz/leave_period.rb +288 -288
  375. data/lib/xero-ruby/models/payroll_nz/leave_periods.rb +244 -244
  376. data/lib/xero-ruby/models/payroll_nz/leave_type.rb +287 -287
  377. data/lib/xero-ruby/models/payroll_nz/leave_type_object.rb +242 -242
  378. data/lib/xero-ruby/models/payroll_nz/leave_types.rb +244 -244
  379. data/lib/xero-ruby/models/payroll_nz/pagination.rb +252 -252
  380. data/lib/xero-ruby/models/payroll_nz/pay_run.rb +385 -385
  381. data/lib/xero-ruby/models/payroll_nz/pay_run_calendar.rb +302 -302
  382. data/lib/xero-ruby/models/payroll_nz/pay_run_calendar_object.rb +242 -242
  383. data/lib/xero-ruby/models/payroll_nz/pay_run_calendars.rb +244 -244
  384. data/lib/xero-ruby/models/payroll_nz/pay_run_object.rb +242 -242
  385. data/lib/xero-ruby/models/payroll_nz/pay_runs.rb +244 -244
  386. data/lib/xero-ruby/models/payroll_nz/pay_slip.rb +571 -571
  387. data/lib/xero-ruby/models/payroll_nz/pay_slip_object.rb +242 -242
  388. data/lib/xero-ruby/models/payroll_nz/pay_slips.rb +244 -244
  389. data/lib/xero-ruby/models/payroll_nz/payment_line.rb +262 -262
  390. data/lib/xero-ruby/models/payroll_nz/payment_method.rb +271 -271
  391. data/lib/xero-ruby/models/payroll_nz/payment_method_object.rb +242 -242
  392. data/lib/xero-ruby/models/payroll_nz/problem.rb +275 -275
  393. data/lib/xero-ruby/models/payroll_nz/reimbursement.rb +378 -378
  394. data/lib/xero-ruby/models/payroll_nz/reimbursement_line.rb +262 -262
  395. data/lib/xero-ruby/models/payroll_nz/reimbursement_object.rb +242 -242
  396. data/lib/xero-ruby/models/payroll_nz/reimbursements.rb +244 -244
  397. data/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb +398 -398
  398. data/lib/xero-ruby/models/payroll_nz/salary_and_wage_object.rb +242 -242
  399. data/lib/xero-ruby/models/payroll_nz/salary_and_wages.rb +244 -244
  400. data/lib/xero-ruby/models/payroll_nz/settings.rb +242 -242
  401. data/lib/xero-ruby/models/payroll_nz/statutory_deduction.rb +262 -262
  402. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_category.rb +45 -45
  403. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_line.rb +252 -252
  404. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_object.rb +242 -242
  405. data/lib/xero-ruby/models/payroll_nz/statutory_deductions.rb +244 -244
  406. data/lib/xero-ruby/models/payroll_nz/superannuation_line.rb +272 -272
  407. data/lib/xero-ruby/models/payroll_nz/superannuation_object.rb +242 -242
  408. data/lib/xero-ruby/models/payroll_nz/superannuations.rb +244 -244
  409. data/lib/xero-ruby/models/payroll_nz/tax_code.rb +53 -53
  410. data/lib/xero-ruby/models/payroll_nz/tax_line.rb +262 -262
  411. data/lib/xero-ruby/models/payroll_nz/tax_settings.rb +308 -308
  412. data/lib/xero-ruby/models/payroll_nz/timesheet.rb +362 -362
  413. data/lib/xero-ruby/models/payroll_nz/timesheet_earnings_line.rb +312 -312
  414. data/lib/xero-ruby/models/payroll_nz/timesheet_line.rb +277 -277
  415. data/lib/xero-ruby/models/payroll_nz/timesheet_line_object.rb +242 -242
  416. data/lib/xero-ruby/models/payroll_nz/timesheet_object.rb +242 -242
  417. data/lib/xero-ruby/models/payroll_nz/timesheets.rb +244 -244
  418. data/lib/xero-ruby/models/payroll_nz/tracking_categories.rb +242 -242
  419. data/lib/xero-ruby/models/payroll_nz/tracking_category.rb +232 -232
  420. data/lib/xero-ruby/models/payroll_uk/account.rb +293 -293
  421. data/lib/xero-ruby/models/payroll_uk/accounts.rb +224 -224
  422. data/lib/xero-ruby/models/payroll_uk/address.rb +277 -277
  423. data/lib/xero-ruby/models/payroll_uk/bank_account.rb +257 -257
  424. data/lib/xero-ruby/models/payroll_uk/benefit.rb +432 -432
  425. data/lib/xero-ruby/models/payroll_uk/benefit_line.rb +262 -262
  426. data/lib/xero-ruby/models/payroll_uk/benefit_object.rb +242 -242
  427. data/lib/xero-ruby/models/payroll_uk/benefits.rb +244 -244
  428. data/lib/xero-ruby/models/payroll_uk/court_order_line.rb +232 -232
  429. data/lib/xero-ruby/models/payroll_uk/deduction.rb +440 -440
  430. data/lib/xero-ruby/models/payroll_uk/deduction_line.rb +252 -252
  431. data/lib/xero-ruby/models/payroll_uk/deduction_object.rb +242 -242
  432. data/lib/xero-ruby/models/payroll_uk/deductions.rb +244 -244
  433. data/lib/xero-ruby/models/payroll_uk/earnings_line.rb +302 -302
  434. data/lib/xero-ruby/models/payroll_uk/earnings_order.rb +269 -269
  435. data/lib/xero-ruby/models/payroll_uk/earnings_order_object.rb +242 -242
  436. data/lib/xero-ruby/models/payroll_uk/earnings_orders.rb +244 -244
  437. data/lib/xero-ruby/models/payroll_uk/earnings_rate.rb +409 -409
  438. data/lib/xero-ruby/models/payroll_uk/earnings_rate_object.rb +242 -242
  439. data/lib/xero-ruby/models/payroll_uk/earnings_rates.rb +244 -244
  440. data/lib/xero-ruby/models/payroll_uk/earnings_template.rb +272 -272
  441. data/lib/xero-ruby/models/payroll_uk/earnings_template_object.rb +242 -242
  442. data/lib/xero-ruby/models/payroll_uk/employee.rb +408 -408
  443. data/lib/xero-ruby/models/payroll_uk/employee_leave.rb +304 -304
  444. data/lib/xero-ruby/models/payroll_uk/employee_leave_balance.rb +252 -252
  445. data/lib/xero-ruby/models/payroll_uk/employee_leave_balances.rb +244 -244
  446. data/lib/xero-ruby/models/payroll_uk/employee_leave_object.rb +242 -242
  447. data/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb +320 -320
  448. data/lib/xero-ruby/models/payroll_uk/employee_leave_type_object.rb +242 -242
  449. data/lib/xero-ruby/models/payroll_uk/employee_leave_types.rb +244 -244
  450. data/lib/xero-ruby/models/payroll_uk/employee_leaves.rb +244 -244
  451. data/lib/xero-ruby/models/payroll_uk/employee_object.rb +242 -242
  452. data/lib/xero-ruby/models/payroll_uk/employee_opening_balances.rb +272 -272
  453. data/lib/xero-ruby/models/payroll_uk/employee_opening_balances_object.rb +242 -242
  454. data/lib/xero-ruby/models/payroll_uk/employee_pay_template.rb +234 -234
  455. data/lib/xero-ruby/models/payroll_uk/employee_pay_template_object.rb +242 -242
  456. data/lib/xero-ruby/models/payroll_uk/employee_pay_templates.rb +244 -244
  457. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb +294 -294
  458. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance_object.rb +242 -242
  459. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb +336 -336
  460. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leaves_summaries.rb +244 -244
  461. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leave.rb +433 -433
  462. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leave_object.rb +242 -242
  463. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leaves.rb +244 -244
  464. data/lib/xero-ruby/models/payroll_uk/employee_tax.rb +322 -322
  465. data/lib/xero-ruby/models/payroll_uk/employee_tax_object.rb +242 -242
  466. data/lib/xero-ruby/models/payroll_uk/employees.rb +244 -244
  467. data/lib/xero-ruby/models/payroll_uk/employment.rb +299 -299
  468. data/lib/xero-ruby/models/payroll_uk/employment_object.rb +242 -242
  469. data/lib/xero-ruby/models/payroll_uk/invalid_field.rb +232 -232
  470. data/lib/xero-ruby/models/payroll_uk/leave_accrual_line.rb +232 -232
  471. data/lib/xero-ruby/models/payroll_uk/leave_earnings_line.rb +272 -272
  472. data/lib/xero-ruby/models/payroll_uk/leave_period.rb +288 -288
  473. data/lib/xero-ruby/models/payroll_uk/leave_periods.rb +244 -244
  474. data/lib/xero-ruby/models/payroll_uk/leave_type.rb +307 -307
  475. data/lib/xero-ruby/models/payroll_uk/leave_type_object.rb +242 -242
  476. data/lib/xero-ruby/models/payroll_uk/leave_types.rb +244 -244
  477. data/lib/xero-ruby/models/payroll_uk/pagination.rb +252 -252
  478. data/lib/xero-ruby/models/payroll_uk/pay_run.rb +403 -403
  479. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb +342 -342
  480. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar_object.rb +242 -242
  481. data/lib/xero-ruby/models/payroll_uk/pay_run_calendars.rb +244 -244
  482. data/lib/xero-ruby/models/payroll_uk/pay_run_object.rb +242 -242
  483. data/lib/xero-ruby/models/payroll_uk/pay_runs.rb +244 -244
  484. data/lib/xero-ruby/models/payroll_uk/payment_line.rb +262 -262
  485. data/lib/xero-ruby/models/payroll_uk/payment_method.rb +276 -276
  486. data/lib/xero-ruby/models/payroll_uk/payment_method_object.rb +242 -242
  487. data/lib/xero-ruby/models/payroll_uk/payslip.rb +551 -551
  488. data/lib/xero-ruby/models/payroll_uk/payslip_object.rb +242 -242
  489. data/lib/xero-ruby/models/payroll_uk/payslips.rb +244 -244
  490. data/lib/xero-ruby/models/payroll_uk/problem.rb +275 -275
  491. data/lib/xero-ruby/models/payroll_uk/reimbursement.rb +262 -262
  492. data/lib/xero-ruby/models/payroll_uk/reimbursement_line.rb +242 -242
  493. data/lib/xero-ruby/models/payroll_uk/reimbursement_object.rb +242 -242
  494. data/lib/xero-ruby/models/payroll_uk/reimbursements.rb +244 -244
  495. data/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb +383 -383
  496. data/lib/xero-ruby/models/payroll_uk/salary_and_wage_object.rb +242 -242
  497. data/lib/xero-ruby/models/payroll_uk/salary_and_wages.rb +244 -244
  498. data/lib/xero-ruby/models/payroll_uk/settings.rb +242 -242
  499. data/lib/xero-ruby/models/payroll_uk/statutory_deduction.rb +262 -262
  500. data/lib/xero-ruby/models/payroll_uk/statutory_deduction_category.rb +48 -48
  501. data/lib/xero-ruby/models/payroll_uk/tax_line.rb +272 -272
  502. data/lib/xero-ruby/models/payroll_uk/timesheet.rb +361 -361
  503. data/lib/xero-ruby/models/payroll_uk/timesheet_earnings_line.rb +272 -272
  504. data/lib/xero-ruby/models/payroll_uk/timesheet_line.rb +277 -277
  505. data/lib/xero-ruby/models/payroll_uk/timesheet_line_object.rb +242 -242
  506. data/lib/xero-ruby/models/payroll_uk/timesheet_object.rb +242 -242
  507. data/lib/xero-ruby/models/payroll_uk/timesheets.rb +244 -244
  508. data/lib/xero-ruby/models/payroll_uk/tracking_categories.rb +242 -242
  509. data/lib/xero-ruby/models/payroll_uk/tracking_category.rb +232 -232
  510. data/lib/xero-ruby/models/projects/amount.rb +232 -232
  511. data/lib/xero-ruby/models/projects/charge_type.rb +37 -37
  512. data/lib/xero-ruby/models/projects/currency_code.rb +198 -198
  513. data/lib/xero-ruby/models/projects/error.rb +232 -232
  514. data/lib/xero-ruby/models/projects/pagination.rb +252 -252
  515. data/lib/xero-ruby/models/projects/project.rb +437 -437
  516. data/lib/xero-ruby/models/projects/project_create_or_update.rb +257 -257
  517. data/lib/xero-ruby/models/projects/project_patch.rb +227 -227
  518. data/lib/xero-ruby/models/projects/project_status.rb +36 -36
  519. data/lib/xero-ruby/models/projects/project_user.rb +242 -242
  520. data/lib/xero-ruby/models/projects/project_users.rb +234 -234
  521. data/lib/xero-ruby/models/projects/projects.rb +234 -234
  522. data/lib/xero-ruby/models/projects/task.rb +399 -399
  523. data/lib/xero-ruby/models/projects/task_create_or_update.rb +267 -267
  524. data/lib/xero-ruby/models/projects/tasks.rb +234 -234
  525. data/lib/xero-ruby/models/projects/time_entries.rb +234 -234
  526. data/lib/xero-ruby/models/projects/time_entry.rb +339 -339
  527. data/lib/xero-ruby/models/projects/time_entry_create_or_update.rb +282 -282
  528. data/lib/xero-ruby/string_serialization.rb +52 -52
  529. data/lib/xero-ruby/version.rb +15 -15
  530. data/lib/xero-ruby/where.rb +67 -67
  531. data/lib/xero-ruby.rb +556 -556
  532. data/spec/accounting/api/accounting_api_spec.rb +2873 -2873
  533. data/spec/accounting/models/account_spec.rb +171 -171
  534. data/spec/accounting/models/account_type_spec.rb +35 -35
  535. data/spec/accounting/models/accounts_payable_spec.rb +47 -47
  536. data/spec/accounting/models/accounts_receivable_spec.rb +47 -47
  537. data/spec/accounting/models/accounts_spec.rb +41 -41
  538. data/spec/accounting/models/address_spec.rb +99 -99
  539. data/spec/accounting/models/allocation_spec.rb +53 -53
  540. data/spec/accounting/models/allocations_spec.rb +41 -41
  541. data/spec/accounting/models/attachment_spec.rb +71 -71
  542. data/spec/accounting/models/attachments_spec.rb +41 -41
  543. data/spec/accounting/models/balances_spec.rb +47 -47
  544. data/spec/accounting/models/bank_transaction_spec.rb +175 -175
  545. data/spec/accounting/models/bank_transactions_spec.rb +41 -41
  546. data/spec/accounting/models/bank_transfer_spec.rb +101 -101
  547. data/spec/accounting/models/bank_transfers_spec.rb +41 -41
  548. data/spec/accounting/models/batch_payment_details_spec.rb +65 -65
  549. data/spec/accounting/models/batch_payment_spec.rb +139 -139
  550. data/spec/accounting/models/batch_payments_spec.rb +41 -41
  551. data/spec/accounting/models/bill_spec.rb +47 -47
  552. data/spec/accounting/models/branding_theme_spec.rb +75 -75
  553. data/spec/accounting/models/branding_themes_spec.rb +41 -41
  554. data/spec/accounting/models/cis_org_setting_spec.rb +53 -53
  555. data/spec/accounting/models/cis_setting_spec.rb +47 -47
  556. data/spec/accounting/models/cis_settings_spec.rb +41 -41
  557. data/spec/accounting/models/contact_group_spec.rb +63 -63
  558. data/spec/accounting/models/contact_groups_spec.rb +41 -41
  559. data/spec/accounting/models/contact_person_spec.rb +59 -59
  560. data/spec/accounting/models/contact_spec.rb +273 -273
  561. data/spec/accounting/models/contacts_spec.rb +41 -41
  562. data/spec/accounting/models/country_code_spec.rb +35 -35
  563. data/spec/accounting/models/credit_note_spec.rb +199 -199
  564. data/spec/accounting/models/credit_notes_spec.rb +41 -41
  565. data/spec/accounting/models/currencies_spec.rb +41 -41
  566. data/spec/accounting/models/currency_code_spec.rb +35 -35
  567. data/spec/accounting/models/currency_spec.rb +47 -47
  568. data/spec/accounting/models/element_spec.rb +83 -83
  569. data/spec/accounting/models/employee_spec.rb +87 -87
  570. data/spec/accounting/models/employees_spec.rb +41 -41
  571. data/spec/accounting/models/error_spec.rb +59 -59
  572. data/spec/accounting/models/expense_claim_spec.rb +111 -111
  573. data/spec/accounting/models/expense_claims_spec.rb +41 -41
  574. data/spec/accounting/models/external_link_spec.rb +57 -57
  575. data/spec/accounting/models/history_record_spec.rb +59 -59
  576. data/spec/accounting/models/history_records_spec.rb +41 -41
  577. data/spec/accounting/models/invoice_reminder_spec.rb +41 -41
  578. data/spec/accounting/models/invoice_reminders_spec.rb +41 -41
  579. data/spec/accounting/models/invoice_spec.rb +271 -271
  580. data/spec/accounting/models/invoices_spec.rb +41 -41
  581. data/spec/accounting/models/item_spec.rb +131 -131
  582. data/spec/accounting/models/items_spec.rb +41 -41
  583. data/spec/accounting/models/journal_line_spec.rb +107 -107
  584. data/spec/accounting/models/journal_spec.rb +87 -87
  585. data/spec/accounting/models/journals_spec.rb +41 -41
  586. data/spec/accounting/models/line_amount_types_spec.rb +35 -35
  587. data/spec/accounting/models/line_item_spec.rb +113 -113
  588. data/spec/accounting/models/line_item_tracking_spec.rb +59 -59
  589. data/spec/accounting/models/linked_transaction_spec.rb +113 -113
  590. data/spec/accounting/models/linked_transactions_spec.rb +41 -41
  591. data/spec/accounting/models/manual_journal_line_spec.rb +77 -77
  592. data/spec/accounting/models/manual_journal_spec.rb +123 -123
  593. data/spec/accounting/models/manual_journals_spec.rb +41 -41
  594. data/spec/accounting/models/online_invoice_spec.rb +41 -41
  595. data/spec/accounting/models/online_invoices_spec.rb +41 -41
  596. data/spec/accounting/models/organisation_spec.rb +255 -255
  597. data/spec/accounting/models/organisations_spec.rb +41 -41
  598. data/spec/accounting/models/overpayment_spec.rb +157 -157
  599. data/spec/accounting/models/overpayments_spec.rb +41 -41
  600. data/spec/accounting/models/payment_delete_spec.rb +41 -41
  601. data/spec/accounting/models/payment_service_spec.rb +71 -71
  602. data/spec/accounting/models/payment_services_spec.rb +41 -41
  603. data/spec/accounting/models/payment_spec.rb +187 -187
  604. data/spec/accounting/models/payment_term_spec.rb +47 -47
  605. data/spec/accounting/models/payment_term_type_spec.rb +35 -35
  606. data/spec/accounting/models/payments_spec.rb +41 -41
  607. data/spec/accounting/models/phone_spec.rb +63 -63
  608. data/spec/accounting/models/prepayment_spec.rb +157 -157
  609. data/spec/accounting/models/prepayments_spec.rb +41 -41
  610. data/spec/accounting/models/purchase_order_spec.rb +207 -207
  611. data/spec/accounting/models/purchase_orders_spec.rb +41 -41
  612. data/spec/accounting/models/purchase_spec.rb +59 -59
  613. data/spec/accounting/models/quote_line_amount_types_spec.rb +35 -35
  614. data/spec/accounting/models/quote_spec.rb +167 -167
  615. data/spec/accounting/models/quote_status_codes_spec.rb +35 -35
  616. data/spec/accounting/models/quotes_spec.rb +41 -41
  617. data/spec/accounting/models/receipt_spec.rb +147 -147
  618. data/spec/accounting/models/receipts_spec.rb +41 -41
  619. data/spec/accounting/models/repeating_invoice_spec.rb +139 -139
  620. data/spec/accounting/models/repeating_invoices_spec.rb +41 -41
  621. data/spec/accounting/models/report_attribute_spec.rb +47 -47
  622. data/spec/accounting/models/report_cell_spec.rb +47 -47
  623. data/spec/accounting/models/report_fields_spec.rb +53 -53
  624. data/spec/accounting/models/report_row_spec.rb +53 -53
  625. data/spec/accounting/models/report_rows_spec.rb +59 -59
  626. data/spec/accounting/models/report_spec.rb +81 -81
  627. data/spec/accounting/models/report_with_row_spec.rb +89 -89
  628. data/spec/accounting/models/report_with_rows_spec.rb +41 -41
  629. data/spec/accounting/models/reports_spec.rb +41 -41
  630. data/spec/accounting/models/request_empty_spec.rb +41 -41
  631. data/spec/accounting/models/row_type_spec.rb +35 -35
  632. data/spec/accounting/models/sales_tracking_category_spec.rb +47 -47
  633. data/spec/accounting/models/schedule_spec.rb +85 -85
  634. data/spec/accounting/models/tax_component_spec.rb +59 -59
  635. data/spec/accounting/models/tax_rate_spec.rb +115 -115
  636. data/spec/accounting/models/tax_rates_spec.rb +41 -41
  637. data/spec/accounting/models/tax_type_spec.rb +35 -35
  638. data/spec/accounting/models/ten_nintey_nine_contact_spec.rb +167 -167
  639. data/spec/accounting/models/time_zone_spec.rb +35 -35
  640. data/spec/accounting/models/tracking_categories_spec.rb +41 -41
  641. data/spec/accounting/models/tracking_category_spec.rb +75 -75
  642. data/spec/accounting/models/tracking_option_spec.rb +63 -63
  643. data/spec/accounting/models/tracking_options_spec.rb +41 -41
  644. data/spec/accounting/models/user_spec.rb +81 -81
  645. data/spec/accounting/models/users_spec.rb +41 -41
  646. data/spec/accounting/models/validation_error_spec.rb +41 -41
  647. data/spec/api_client_spec.rb +556 -556
  648. data/spec/api_error_spec.rb +45 -45
  649. data/spec/app_store/api/app_store_api_spec.rb +45 -45
  650. data/spec/app_store/models/plan_spec.rb +62 -62
  651. data/spec/app_store/models/price_spec.rb +52 -52
  652. data/spec/app_store/models/problem_details_spec.rb +70 -70
  653. data/spec/app_store/models/product_spec.rb +56 -56
  654. data/spec/app_store/models/subscription_item_spec.rb +70 -70
  655. data/spec/app_store/models/subscription_spec.rb +82 -82
  656. data/spec/assets/api/asset_api_spec.rb +116 -116
  657. data/spec/assets/models/asset_spec.rb +125 -125
  658. data/spec/assets/models/asset_status_query_param_spec.rb +35 -35
  659. data/spec/assets/models/asset_status_spec.rb +35 -35
  660. data/spec/assets/models/asset_type_spec.rb +77 -77
  661. data/spec/assets/models/assets_spec.rb +47 -47
  662. data/spec/assets/models/book_depreciation_detail_spec.rb +77 -77
  663. data/spec/assets/models/book_depreciation_setting_spec.rb +95 -95
  664. data/spec/assets/models/error_spec.rb +65 -65
  665. data/spec/assets/models/field_validation_errors_element_spec.rb +71 -71
  666. data/spec/assets/models/pagination_spec.rb +59 -59
  667. data/spec/assets/models/resource_validation_errors_element_spec.rb +65 -65
  668. data/spec/assets/models/setting_spec.rb +83 -83
  669. data/spec/configuration_spec.rb +37 -37
  670. data/spec/files/api/files_api_spec.rb +249 -249
  671. data/spec/files/models/association_spec.rb +59 -59
  672. data/spec/files/models/file_object_spec.rb +83 -83
  673. data/spec/files/models/files_spec.rb +59 -59
  674. data/spec/files/models/folder_spec.rb +65 -65
  675. data/spec/files/models/folders_spec.rb +41 -41
  676. data/spec/files/models/inline_object_spec.rb +59 -59
  677. data/spec/files/models/object_group_spec.rb +35 -35
  678. data/spec/files/models/object_type_spec.rb +35 -35
  679. data/spec/files/models/user_spec.rb +81 -81
  680. data/spec/finance/api/finance_api_spec.rb +156 -156
  681. data/spec/finance/models/account_usage_response_spec.rb +58 -58
  682. data/spec/finance/models/account_usage_spec.rb +112 -112
  683. data/spec/finance/models/balance_sheet_account_detail_spec.rb +64 -64
  684. data/spec/finance/models/balance_sheet_account_group_spec.rb +46 -46
  685. data/spec/finance/models/balance_sheet_account_type_spec.rb +52 -52
  686. data/spec/finance/models/balance_sheet_response_spec.rb +58 -58
  687. data/spec/finance/models/bank_statement_response_spec.rb +46 -46
  688. data/spec/finance/models/cash_account_response_spec.rb +64 -64
  689. data/spec/finance/models/cash_balance_spec.rb +52 -52
  690. data/spec/finance/models/cash_validation_response_spec.rb +64 -64
  691. data/spec/finance/models/cashflow_account_spec.rb +76 -76
  692. data/spec/finance/models/cashflow_activity_spec.rb +52 -52
  693. data/spec/finance/models/cashflow_response_spec.rb +58 -58
  694. data/spec/finance/models/cashflow_type_spec.rb +52 -52
  695. data/spec/finance/models/current_statement_response_spec.rb +70 -70
  696. data/spec/finance/models/data_source_response_spec.rb +124 -124
  697. data/spec/finance/models/history_record_response_spec.rb +64 -64
  698. data/spec/finance/models/lock_history_model_spec.rb +52 -52
  699. data/spec/finance/models/lock_history_response_spec.rb +52 -52
  700. data/spec/finance/models/pnl_account_class_spec.rb +46 -46
  701. data/spec/finance/models/pnl_account_spec.rb +70 -70
  702. data/spec/finance/models/pnl_account_type_spec.rb +52 -52
  703. data/spec/finance/models/practice_response_spec.rb +64 -64
  704. data/spec/finance/models/problem_spec.rb +58 -58
  705. data/spec/finance/models/problem_type_spec.rb +34 -34
  706. data/spec/finance/models/profit_and_loss_response_spec.rb +64 -64
  707. data/spec/finance/models/report_history_model_spec.rb +52 -52
  708. data/spec/finance/models/report_history_response_spec.rb +52 -52
  709. data/spec/finance/models/statement_balance_response_spec.rb +46 -46
  710. data/spec/finance/models/statement_lines_response_spec.rb +136 -136
  711. data/spec/finance/models/trial_balance_account_spec.rb +94 -94
  712. data/spec/finance/models/trial_balance_entry_spec.rb +46 -46
  713. data/spec/finance/models/trial_balance_movement_spec.rb +58 -58
  714. data/spec/finance/models/trial_balance_response_spec.rb +52 -52
  715. data/spec/finance/models/user_activities_response_spec.rb +52 -52
  716. data/spec/finance/models/user_response_spec.rb +106 -106
  717. data/spec/helper_methods_spec.rb +110 -110
  718. data/spec/payroll_au/api/payroll_au_api_spec.rb +415 -415
  719. data/spec/payroll_au/models/account_spec.rb +59 -59
  720. data/spec/payroll_au/models/account_type_spec.rb +35 -35
  721. data/spec/payroll_au/models/allowance_type_spec.rb +35 -35
  722. data/spec/payroll_au/models/api_exception_spec.rb +53 -53
  723. data/spec/payroll_au/models/bank_account_spec.rb +71 -71
  724. data/spec/payroll_au/models/calendar_type_spec.rb +35 -35
  725. data/spec/payroll_au/models/deduction_line_spec.rb +65 -65
  726. data/spec/payroll_au/models/deduction_type_calculation_type_spec.rb +35 -35
  727. data/spec/payroll_au/models/deduction_type_spec.rb +93 -93
  728. data/spec/payroll_au/models/earnings_line_spec.rb +89 -89
  729. data/spec/payroll_au/models/earnings_rate_calculation_type_spec.rb +35 -35
  730. data/spec/payroll_au/models/earnings_rate_spec.rb +137 -137
  731. data/spec/payroll_au/models/earnings_type_spec.rb +35 -35
  732. data/spec/payroll_au/models/employee_spec.rb +225 -225
  733. data/spec/payroll_au/models/employee_status_spec.rb +35 -35
  734. data/spec/payroll_au/models/employees_spec.rb +41 -41
  735. data/spec/payroll_au/models/employment_basis_spec.rb +35 -35
  736. data/spec/payroll_au/models/employment_termination_payment_type_spec.rb +35 -35
  737. data/spec/payroll_au/models/entitlement_final_pay_payout_type_spec.rb +35 -35
  738. data/spec/payroll_au/models/home_address_spec.rb +71 -71
  739. data/spec/payroll_au/models/leave_accrual_line_spec.rb +53 -53
  740. data/spec/payroll_au/models/leave_application_spec.rb +95 -95
  741. data/spec/payroll_au/models/leave_applications_spec.rb +41 -41
  742. data/spec/payroll_au/models/leave_balance_spec.rb +59 -59
  743. data/spec/payroll_au/models/leave_earnings_line_spec.rb +53 -53
  744. data/spec/payroll_au/models/leave_line_calculation_type_spec.rb +35 -35
  745. data/spec/payroll_au/models/leave_line_spec.rb +83 -83
  746. data/spec/payroll_au/models/leave_lines_spec.rb +41 -41
  747. data/spec/payroll_au/models/leave_period_spec.rb +59 -59
  748. data/spec/payroll_au/models/leave_period_status_spec.rb +35 -35
  749. data/spec/payroll_au/models/leave_type_contribution_type_spec.rb +35 -35
  750. data/spec/payroll_au/models/leave_type_spec.rb +89 -89
  751. data/spec/payroll_au/models/manual_tax_type_spec.rb +35 -35
  752. data/spec/payroll_au/models/opening_balances_spec.rb +77 -77
  753. data/spec/payroll_au/models/pay_item_spec.rb +59 -59
  754. data/spec/payroll_au/models/pay_items_spec.rb +41 -41
  755. data/spec/payroll_au/models/pay_run_spec.rb +131 -131
  756. data/spec/payroll_au/models/pay_run_status_spec.rb +35 -35
  757. data/spec/payroll_au/models/pay_runs_spec.rb +41 -41
  758. data/spec/payroll_au/models/pay_template_spec.rb +65 -65
  759. data/spec/payroll_au/models/payment_frequency_type_spec.rb +35 -35
  760. data/spec/payroll_au/models/payroll_calendar_spec.rb +77 -77
  761. data/spec/payroll_au/models/payroll_calendars_spec.rb +41 -41
  762. data/spec/payroll_au/models/payslip_lines_spec.rb +83 -83
  763. data/spec/payroll_au/models/payslip_object_spec.rb +41 -41
  764. data/spec/payroll_au/models/payslip_spec.rb +149 -149
  765. data/spec/payroll_au/models/payslip_summary_spec.rb +107 -107
  766. data/spec/payroll_au/models/payslips_spec.rb +41 -41
  767. data/spec/payroll_au/models/rate_type_spec.rb +35 -35
  768. data/spec/payroll_au/models/reimbursement_line_spec.rb +59 -59
  769. data/spec/payroll_au/models/reimbursement_lines_spec.rb +41 -41
  770. data/spec/payroll_au/models/reimbursement_type_spec.rb +65 -65
  771. data/spec/payroll_au/models/residency_status_spec.rb +35 -35
  772. data/spec/payroll_au/models/settings_object_spec.rb +41 -41
  773. data/spec/payroll_au/models/settings_spec.rb +53 -53
  774. data/spec/payroll_au/models/settings_tracking_categories_employee_groups_spec.rb +47 -47
  775. data/spec/payroll_au/models/settings_tracking_categories_spec.rb +47 -47
  776. data/spec/payroll_au/models/settings_tracking_categories_timesheet_categories_spec.rb +47 -47
  777. data/spec/payroll_au/models/state_spec.rb +35 -35
  778. data/spec/payroll_au/models/super_fund_product_spec.rb +59 -59
  779. data/spec/payroll_au/models/super_fund_products_spec.rb +41 -41
  780. data/spec/payroll_au/models/super_fund_spec.rb +113 -113
  781. data/spec/payroll_au/models/super_fund_type_spec.rb +35 -35
  782. data/spec/payroll_au/models/super_funds_spec.rb +41 -41
  783. data/spec/payroll_au/models/super_line_spec.rb +83 -83
  784. data/spec/payroll_au/models/super_membership_spec.rb +53 -53
  785. data/spec/payroll_au/models/superannuation_calculation_type_spec.rb +35 -35
  786. data/spec/payroll_au/models/superannuation_contribution_type_spec.rb +35 -35
  787. data/spec/payroll_au/models/superannuation_line_spec.rb +89 -89
  788. data/spec/payroll_au/models/tax_declaration_spec.rb +131 -131
  789. data/spec/payroll_au/models/tax_line_spec.rb +71 -71
  790. data/spec/payroll_au/models/tfn_exemption_type_spec.rb +35 -35
  791. data/spec/payroll_au/models/timesheet_line_spec.rb +59 -59
  792. data/spec/payroll_au/models/timesheet_object_spec.rb +41 -41
  793. data/spec/payroll_au/models/timesheet_spec.rb +89 -89
  794. data/spec/payroll_au/models/timesheet_status_spec.rb +35 -35
  795. data/spec/payroll_au/models/timesheets_spec.rb +41 -41
  796. data/spec/payroll_au/models/validation_error_spec.rb +41 -41
  797. data/spec/payroll_nz/api/payroll_nz_api_spec.rb +886 -886
  798. data/spec/payroll_nz/models/account_spec.rb +63 -63
  799. data/spec/payroll_nz/models/accounts_spec.rb +41 -41
  800. data/spec/payroll_nz/models/address_spec.rb +71 -71
  801. data/spec/payroll_nz/models/bank_account_spec.rb +87 -87
  802. data/spec/payroll_nz/models/benefit_spec.rb +103 -103
  803. data/spec/payroll_nz/models/deduction_line_spec.rb +65 -65
  804. data/spec/payroll_nz/models/deduction_object_spec.rb +53 -53
  805. data/spec/payroll_nz/models/deduction_spec.rb +75 -75
  806. data/spec/payroll_nz/models/deductions_spec.rb +53 -53
  807. data/spec/payroll_nz/models/earnings_line_spec.rb +95 -95
  808. data/spec/payroll_nz/models/earnings_order_object_spec.rb +53 -53
  809. data/spec/payroll_nz/models/earnings_order_spec.rb +65 -65
  810. data/spec/payroll_nz/models/earnings_orders_spec.rb +53 -53
  811. data/spec/payroll_nz/models/earnings_rate_object_spec.rb +53 -53
  812. data/spec/payroll_nz/models/earnings_rate_spec.rb +103 -103
  813. data/spec/payroll_nz/models/earnings_rates_spec.rb +53 -53
  814. data/spec/payroll_nz/models/earnings_template_object_spec.rb +53 -53
  815. data/spec/payroll_nz/models/earnings_template_spec.rb +71 -71
  816. data/spec/payroll_nz/models/employee_earnings_templates_spec.rb +53 -53
  817. data/spec/payroll_nz/models/employee_leave_balance_spec.rb +59 -59
  818. data/spec/payroll_nz/models/employee_leave_balances_spec.rb +53 -53
  819. data/spec/payroll_nz/models/employee_leave_object_spec.rb +53 -53
  820. data/spec/payroll_nz/models/employee_leave_setup_object_spec.rb +53 -53
  821. data/spec/payroll_nz/models/employee_leave_setup_spec.rb +77 -77
  822. data/spec/payroll_nz/models/employee_leave_spec.rb +77 -77
  823. data/spec/payroll_nz/models/employee_leave_type_object_spec.rb +53 -53
  824. data/spec/payroll_nz/models/employee_leave_type_spec.rb +99 -99
  825. data/spec/payroll_nz/models/employee_leave_types_spec.rb +53 -53
  826. data/spec/payroll_nz/models/employee_leaves_spec.rb +53 -53
  827. data/spec/payroll_nz/models/employee_object_spec.rb +53 -53
  828. data/spec/payroll_nz/models/employee_opening_balance_spec.rb +59 -59
  829. data/spec/payroll_nz/models/employee_opening_balances_object_spec.rb +53 -53
  830. data/spec/payroll_nz/models/employee_pay_template_object_spec.rb +53 -53
  831. data/spec/payroll_nz/models/employee_pay_template_spec.rb +47 -47
  832. data/spec/payroll_nz/models/employee_pay_templates_spec.rb +53 -53
  833. data/spec/payroll_nz/models/employee_spec.rb +123 -123
  834. data/spec/payroll_nz/models/employee_statutory_leave_balance_object_spec.rb +53 -53
  835. data/spec/payroll_nz/models/employee_statutory_leave_balance_spec.rb +61 -61
  836. data/spec/payroll_nz/models/employee_statutory_leave_summary_spec.rb +85 -85
  837. data/spec/payroll_nz/models/employee_statutory_leaves_summaries_spec.rb +53 -53
  838. data/spec/payroll_nz/models/employee_statutory_sick_leave_object_spec.rb +53 -53
  839. data/spec/payroll_nz/models/employee_statutory_sick_leave_spec.rb +135 -135
  840. data/spec/payroll_nz/models/employee_statutory_sick_leaves_spec.rb +53 -53
  841. data/spec/payroll_nz/models/employee_tax_object_spec.rb +53 -53
  842. data/spec/payroll_nz/models/employee_tax_spec.rb +135 -135
  843. data/spec/payroll_nz/models/employees_spec.rb +53 -53
  844. data/spec/payroll_nz/models/employment_object_spec.rb +53 -53
  845. data/spec/payroll_nz/models/employment_spec.rb +53 -53
  846. data/spec/payroll_nz/models/gross_earnings_history_spec.rb +47 -47
  847. data/spec/payroll_nz/models/invalid_field_spec.rb +47 -47
  848. data/spec/payroll_nz/models/leave_accrual_line_spec.rb +47 -47
  849. data/spec/payroll_nz/models/leave_earnings_line_spec.rb +95 -95
  850. data/spec/payroll_nz/models/leave_period_spec.rb +63 -63
  851. data/spec/payroll_nz/models/leave_periods_spec.rb +53 -53
  852. data/spec/payroll_nz/models/leave_type_object_spec.rb +53 -53
  853. data/spec/payroll_nz/models/leave_type_spec.rb +71 -71
  854. data/spec/payroll_nz/models/leave_types_spec.rb +53 -53
  855. data/spec/payroll_nz/models/pagination_spec.rb +59 -59
  856. data/spec/payroll_nz/models/pay_run_calendar_object_spec.rb +53 -53
  857. data/spec/payroll_nz/models/pay_run_calendar_spec.rb +81 -81
  858. data/spec/payroll_nz/models/pay_run_calendars_spec.rb +53 -53
  859. data/spec/payroll_nz/models/pay_run_object_spec.rb +53 -53
  860. data/spec/payroll_nz/models/pay_run_spec.rb +119 -119
  861. data/spec/payroll_nz/models/pay_runs_spec.rb +53 -53
  862. data/spec/payroll_nz/models/pay_slip_object_spec.rb +53 -53
  863. data/spec/payroll_nz/models/pay_slip_spec.rb +219 -219
  864. data/spec/payroll_nz/models/pay_slips_spec.rb +53 -53
  865. data/spec/payroll_nz/models/payment_line_spec.rb +65 -65
  866. data/spec/payroll_nz/models/payment_method_object_spec.rb +53 -53
  867. data/spec/payroll_nz/models/payment_method_spec.rb +51 -51
  868. data/spec/payroll_nz/models/problem_spec.rb +71 -71
  869. data/spec/payroll_nz/models/reimbursement_line_spec.rb +65 -65
  870. data/spec/payroll_nz/models/reimbursement_object_spec.rb +53 -53
  871. data/spec/payroll_nz/models/reimbursement_spec.rb +101 -101
  872. data/spec/payroll_nz/models/reimbursements_spec.rb +53 -53
  873. data/spec/payroll_nz/models/salary_and_wage_object_spec.rb +53 -53
  874. data/spec/payroll_nz/models/salary_and_wage_spec.rb +103 -103
  875. data/spec/payroll_nz/models/salary_and_wages_spec.rb +53 -53
  876. data/spec/payroll_nz/models/settings_spec.rb +53 -53
  877. data/spec/payroll_nz/models/statutory_deduction_category_spec.rb +35 -35
  878. data/spec/payroll_nz/models/statutory_deduction_line_spec.rb +59 -59
  879. data/spec/payroll_nz/models/statutory_deduction_object_spec.rb +53 -53
  880. data/spec/payroll_nz/models/statutory_deduction_spec.rb +65 -65
  881. data/spec/payroll_nz/models/statutory_deductions_spec.rb +53 -53
  882. data/spec/payroll_nz/models/superannuation_line_spec.rb +71 -71
  883. data/spec/payroll_nz/models/superannuation_object_spec.rb +53 -53
  884. data/spec/payroll_nz/models/superannuations_spec.rb +53 -53
  885. data/spec/payroll_nz/models/tax_code_spec.rb +35 -35
  886. data/spec/payroll_nz/models/tax_line_spec.rb +65 -65
  887. data/spec/payroll_nz/models/tax_settings_spec.rb +75 -75
  888. data/spec/payroll_nz/models/timesheet_earnings_line_spec.rb +95 -95
  889. data/spec/payroll_nz/models/timesheet_line_object_spec.rb +53 -53
  890. data/spec/payroll_nz/models/timesheet_line_spec.rb +65 -65
  891. data/spec/payroll_nz/models/timesheet_object_spec.rb +53 -53
  892. data/spec/payroll_nz/models/timesheet_spec.rb +93 -93
  893. data/spec/payroll_nz/models/timesheets_spec.rb +53 -53
  894. data/spec/payroll_nz/models/tracking_categories_spec.rb +53 -53
  895. data/spec/payroll_nz/models/tracking_category_spec.rb +47 -47
  896. data/spec/payroll_uk/api/payroll_uk_api_spec.rb +912 -912
  897. data/spec/payroll_uk/models/account_spec.rb +63 -63
  898. data/spec/payroll_uk/models/accounts_spec.rb +41 -41
  899. data/spec/payroll_uk/models/address_spec.rb +65 -65
  900. data/spec/payroll_uk/models/bank_account_spec.rb +53 -53
  901. data/spec/payroll_uk/models/benefit_line_spec.rb +65 -65
  902. data/spec/payroll_uk/models/benefit_object_spec.rb +53 -53
  903. data/spec/payroll_uk/models/benefit_spec.rb +127 -127
  904. data/spec/payroll_uk/models/benefits_spec.rb +53 -53
  905. data/spec/payroll_uk/models/court_order_line_spec.rb +47 -47
  906. data/spec/payroll_uk/models/deduction_line_spec.rb +59 -59
  907. data/spec/payroll_uk/models/deduction_object_spec.rb +53 -53
  908. data/spec/payroll_uk/models/deduction_spec.rb +139 -139
  909. data/spec/payroll_uk/models/deductions_spec.rb +53 -53
  910. data/spec/payroll_uk/models/earnings_line_spec.rb +89 -89
  911. data/spec/payroll_uk/models/earnings_order_object_spec.rb +53 -53
  912. data/spec/payroll_uk/models/earnings_order_spec.rb +65 -65
  913. data/spec/payroll_uk/models/earnings_orders_spec.rb +53 -53
  914. data/spec/payroll_uk/models/earnings_rate_object_spec.rb +53 -53
  915. data/spec/payroll_uk/models/earnings_rate_spec.rb +103 -103
  916. data/spec/payroll_uk/models/earnings_rates_spec.rb +53 -53
  917. data/spec/payroll_uk/models/earnings_template_object_spec.rb +53 -53
  918. data/spec/payroll_uk/models/earnings_template_spec.rb +71 -71
  919. data/spec/payroll_uk/models/employee_leave_balance_spec.rb +59 -59
  920. data/spec/payroll_uk/models/employee_leave_balances_spec.rb +53 -53
  921. data/spec/payroll_uk/models/employee_leave_object_spec.rb +53 -53
  922. data/spec/payroll_uk/models/employee_leave_spec.rb +77 -77
  923. data/spec/payroll_uk/models/employee_leave_type_object_spec.rb +53 -53
  924. data/spec/payroll_uk/models/employee_leave_type_spec.rb +75 -75
  925. data/spec/payroll_uk/models/employee_leave_types_spec.rb +53 -53
  926. data/spec/payroll_uk/models/employee_leaves_spec.rb +53 -53
  927. data/spec/payroll_uk/models/employee_object_spec.rb +53 -53
  928. data/spec/payroll_uk/models/employee_opening_balances_object_spec.rb +53 -53
  929. data/spec/payroll_uk/models/employee_opening_balances_spec.rb +71 -71
  930. data/spec/payroll_uk/models/employee_pay_template_object_spec.rb +53 -53
  931. data/spec/payroll_uk/models/employee_pay_template_spec.rb +47 -47
  932. data/spec/payroll_uk/models/employee_pay_templates_spec.rb +53 -53
  933. data/spec/payroll_uk/models/employee_spec.rb +129 -129
  934. data/spec/payroll_uk/models/employee_statutory_leave_balance_object_spec.rb +53 -53
  935. data/spec/payroll_uk/models/employee_statutory_leave_balance_spec.rb +61 -61
  936. data/spec/payroll_uk/models/employee_statutory_leave_summary_spec.rb +85 -85
  937. data/spec/payroll_uk/models/employee_statutory_leaves_summaries_spec.rb +53 -53
  938. data/spec/payroll_uk/models/employee_statutory_sick_leave_object_spec.rb +53 -53
  939. data/spec/payroll_uk/models/employee_statutory_sick_leave_spec.rb +135 -135
  940. data/spec/payroll_uk/models/employee_statutory_sick_leaves_spec.rb +53 -53
  941. data/spec/payroll_uk/models/employee_tax_object_spec.rb +53 -53
  942. data/spec/payroll_uk/models/employee_tax_spec.rb +101 -101
  943. data/spec/payroll_uk/models/employees_spec.rb +53 -53
  944. data/spec/payroll_uk/models/employment_object_spec.rb +53 -53
  945. data/spec/payroll_uk/models/employment_spec.rb +63 -63
  946. data/spec/payroll_uk/models/invalid_field_spec.rb +47 -47
  947. data/spec/payroll_uk/models/leave_accrual_line_spec.rb +47 -47
  948. data/spec/payroll_uk/models/leave_earnings_line_spec.rb +71 -71
  949. data/spec/payroll_uk/models/leave_period_spec.rb +63 -63
  950. data/spec/payroll_uk/models/leave_periods_spec.rb +53 -53
  951. data/spec/payroll_uk/models/leave_type_object_spec.rb +53 -53
  952. data/spec/payroll_uk/models/leave_type_spec.rb +83 -83
  953. data/spec/payroll_uk/models/leave_types_spec.rb +53 -53
  954. data/spec/payroll_uk/models/pagination_spec.rb +59 -59
  955. data/spec/payroll_uk/models/pay_run_calendar_object_spec.rb +53 -53
  956. data/spec/payroll_uk/models/pay_run_calendar_spec.rb +81 -81
  957. data/spec/payroll_uk/models/pay_run_calendars_spec.rb +53 -53
  958. data/spec/payroll_uk/models/pay_run_object_spec.rb +53 -53
  959. data/spec/payroll_uk/models/pay_run_spec.rb +119 -119
  960. data/spec/payroll_uk/models/pay_runs_spec.rb +53 -53
  961. data/spec/payroll_uk/models/payment_line_spec.rb +65 -65
  962. data/spec/payroll_uk/models/payment_method_object_spec.rb +53 -53
  963. data/spec/payroll_uk/models/payment_method_spec.rb +51 -51
  964. data/spec/payroll_uk/models/payslip_object_spec.rb +53 -53
  965. data/spec/payroll_uk/models/payslip_spec.rb +201 -201
  966. data/spec/payroll_uk/models/payslips_spec.rb +53 -53
  967. data/spec/payroll_uk/models/problem_spec.rb +71 -71
  968. data/spec/payroll_uk/models/reimbursement_line_spec.rb +53 -53
  969. data/spec/payroll_uk/models/reimbursement_object_spec.rb +53 -53
  970. data/spec/payroll_uk/models/reimbursement_spec.rb +59 -59
  971. data/spec/payroll_uk/models/reimbursements_spec.rb +53 -53
  972. data/spec/payroll_uk/models/salary_and_wage_object_spec.rb +53 -53
  973. data/spec/payroll_uk/models/salary_and_wage_spec.rb +97 -97
  974. data/spec/payroll_uk/models/salary_and_wages_spec.rb +53 -53
  975. data/spec/payroll_uk/models/settings_spec.rb +53 -53
  976. data/spec/payroll_uk/models/statutory_deduction_category_spec.rb +35 -35
  977. data/spec/payroll_uk/models/statutory_deduction_spec.rb +65 -65
  978. data/spec/payroll_uk/models/tax_line_spec.rb +71 -71
  979. data/spec/payroll_uk/models/timesheet_earnings_line_spec.rb +71 -71
  980. data/spec/payroll_uk/models/timesheet_line_object_spec.rb +53 -53
  981. data/spec/payroll_uk/models/timesheet_line_spec.rb +65 -65
  982. data/spec/payroll_uk/models/timesheet_object_spec.rb +53 -53
  983. data/spec/payroll_uk/models/timesheet_spec.rb +93 -93
  984. data/spec/payroll_uk/models/timesheets_spec.rb +53 -53
  985. data/spec/payroll_uk/models/tracking_categories_spec.rb +53 -53
  986. data/spec/payroll_uk/models/tracking_category_spec.rb +47 -47
  987. data/spec/projects/api/project_api_spec.rb +229 -229
  988. data/spec/projects/models/amount_spec.rb +47 -47
  989. data/spec/projects/models/charge_type_spec.rb +35 -35
  990. data/spec/projects/models/currency_code_spec.rb +35 -35
  991. data/spec/projects/models/error_spec.rb +47 -47
  992. data/spec/projects/models/pagination_spec.rb +59 -59
  993. data/spec/projects/models/project_create_or_update_spec.rb +59 -59
  994. data/spec/projects/models/project_patch_spec.rb +41 -41
  995. data/spec/projects/models/project_spec.rb +167 -167
  996. data/spec/projects/models/project_status_spec.rb +35 -35
  997. data/spec/projects/models/project_user_spec.rb +53 -53
  998. data/spec/projects/models/project_users_spec.rb +47 -47
  999. data/spec/projects/models/projects_spec.rb +47 -47
  1000. data/spec/projects/models/task_create_or_update_spec.rb +59 -59
  1001. data/spec/projects/models/task_spec.rb +129 -129
  1002. data/spec/projects/models/tasks_spec.rb +47 -47
  1003. data/spec/projects/models/time_entries_spec.rb +47 -47
  1004. data/spec/projects/models/time_entry_create_or_update_spec.rb +65 -65
  1005. data/spec/projects/models/time_entry_spec.rb +93 -93
  1006. data/spec/spec_helper.rb +111 -111
  1007. data/spec/where_spec.rb +82 -82
  1008. metadata +386 -386
@@ -1,675 +1,675 @@
1
- =begin
2
- #Xero Accounting API
3
-
4
- #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
-
6
- Contact: api@xero.com
7
- Generated by: https://openapi-generator.tech
8
- OpenAPI Generator version: 4.3.1
9
-
10
- =end
11
-
12
- require 'date'
13
- require 'json'
14
- require 'logger'
15
- require 'tempfile'
16
- require 'find'
17
- require 'faraday'
18
- require 'base64'
19
- require 'cgi'
20
- require 'json/jwt'
21
-
22
- module XeroRuby
23
- class ApiClient
24
- include StringSerialization
25
-
26
- # The Configuration object holding settings to be used in the API client.
27
- attr_accessor :config
28
-
29
- # Defines the headers to be used in HTTP requests of all API calls by default.
30
- #
31
- # @return [Hash]
32
- attr_accessor :default_headers, :grant_type
33
-
34
- # Initializes the ApiClient
35
- # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
36
- def initialize(config: {}, credentials: {})
37
- @client_id = credentials[:client_id]
38
- @client_secret = credentials[:client_secret]
39
- @redirect_uri = credentials[:redirect_uri]
40
- @grant_type = credentials[:grant_type] || 'authorization_code'
41
- @scopes = credentials[:scopes]
42
- @state = credentials[:state]
43
- default_config = Configuration.default.clone
44
- @config = append_to_default_config(default_config, config)
45
-
46
- @user_agent = "xero-ruby-#{VERSION}"
47
- @default_headers = {
48
- 'Content-Type' => 'application/json',
49
- 'User-Agent' => @user_agent
50
- }
51
- end
52
-
53
- def append_to_default_config(default_config, user_config)
54
- config = default_config
55
- user_config.each{|k,v| config.send("#{k}=", v)}
56
- config
57
- end
58
-
59
- def authorization_url
60
- url = URI.parse(@config.login_url)
61
- url.query = URI.encode_www_form(
62
- {
63
- response_type: 'code',
64
- client_id: @client_id,
65
- redirect_uri: @redirect_uri,
66
- scope: @scopes,
67
- state: @state
68
- }.compact
69
- )
70
- url.to_s
71
- end
72
-
73
- def accounting_api
74
- @config.base_url = @config.accounting_url
75
- XeroRuby::AccountingApi.new(self)
76
- end
77
-
78
- def asset_api
79
- @config.base_url = @config.asset_url
80
- XeroRuby::AssetApi.new(self)
81
- end
82
-
83
- def project_api
84
- @config.base_url = @config.project_url
85
- XeroRuby::ProjectApi.new(self)
86
- end
87
-
88
- def files_api
89
- @config.base_url = @config.files_url
90
- XeroRuby::FilesApi.new(self)
91
- end
92
-
93
- def payroll_au_api
94
- @config.base_url = @config.payroll_au_url
95
- XeroRuby::PayrollAuApi.new(self)
96
- end
97
-
98
- def payroll_nz_api
99
- @config.base_url = @config.payroll_nz_url
100
- XeroRuby::PayrollNzApi.new(self)
101
- end
102
-
103
- def payroll_uk_api
104
- @config.base_url = @config.payroll_uk_url
105
- XeroRuby::PayrollUkApi.new(self)
106
- end
107
-
108
- def app_store_api
109
- @config.base_url = @config.app_store_url
110
- XeroRuby::AppStoreApi.new(self)
111
- end
112
-
113
- def finance_api
114
- @config.base_url = @config.finance_url
115
- XeroRuby::FinanceApi.new(self)
116
- end
117
-
118
- # Token Helpers
119
- def token_set
120
- @config.token_set
121
- end
122
-
123
- def access_token
124
- @config.access_token
125
- end
126
-
127
- def id_token
128
- @config.id_token
129
- end
130
-
131
- def decoded_access_token
132
- decode_jwt(@config.access_token, false)
133
- end
134
-
135
- def decoded_id_token
136
- decode_jwt(@config.id_token, false)
137
- end
138
-
139
- def set_token_set(token_set)
140
- token_set = token_set.with_indifferent_access
141
- @config.token_set = token_set
142
-
143
- set_access_token(token_set[:access_token]) if token_set[:access_token]
144
- set_id_token(token_set[:id_token]) if token_set[:id_token]
145
-
146
- return true
147
- end
148
-
149
- def set_access_token(access_token)
150
- @config.access_token = access_token
151
- end
152
-
153
- def set_id_token(id_token)
154
- @config.id_token = id_token
155
- end
156
-
157
- def get_client_credentials_token
158
- data = {
159
- grant_type: @grant_type
160
- }
161
- token_set = token_request(data, '/token')
162
-
163
- return token_set
164
- end
165
-
166
- def get_token_set_from_callback(params)
167
- data = {
168
- grant_type: @grant_type,
169
- code: params['code'],
170
- redirect_uri: @redirect_uri
171
- }
172
- token_set = token_request(data, '/token')
173
-
174
- validate_tokens(token_set)
175
- validate_state(params)
176
- return token_set
177
- end
178
-
179
- def validate_tokens(token_set)
180
- token_set = token_set.with_indifferent_access
181
- id_token = token_set[:id_token]
182
- access_token = token_set[:access_token]
183
- if id_token || access_token
184
- decode_jwt(access_token) if access_token
185
- decode_jwt(id_token) if id_token
186
- end
187
- return true
188
- end
189
-
190
- def validate_state(params)
191
- if params['state'] != @state
192
- raise StandardError.new "WARNING: @config.state: #{@state} and OAuth callback state: #{params['state']} do not match!"
193
- end
194
- return true
195
- end
196
-
197
- def decode_jwt(tkn, verify=true)
198
- if verify == true
199
-
200
- response = Faraday.get('https://identity.xero.com/.well-known/openid-configuration/jwks') do |req|
201
- req.headers['User-Agent'] = @user_agent
202
- end
203
-
204
- jwks_data = JSON.parse(response.body)
205
- jwk_set = JSON::JWK::Set.new(jwks_data)
206
- JSON::JWT.decode(tkn, jwk_set)
207
- else
208
- JSON::JWT.decode(tkn, :skip_verification)
209
- end
210
- end
211
-
212
- def token_expired?
213
- token_expiry = Time.at(decoded_access_token['exp'])
214
- token_expiry < Time.now
215
- end
216
-
217
- def refresh_token_set(token_set)
218
- token_set = token_set.with_indifferent_access
219
- data = {
220
- grant_type: 'refresh_token',
221
- refresh_token: token_set[:refresh_token]
222
- }
223
- return token_request(data, '/token')
224
- end
225
-
226
- def revoke_token(token_set)
227
- token_set = token_set.with_indifferent_access
228
- data = {
229
- token: token_set[:refresh_token]
230
- }
231
- return token_request(data, '/revocation')
232
- end
233
-
234
- def token_request(data, path)
235
- response = Faraday.post("#{@config.token_url}#{path}") do |req|
236
- req.headers['Authorization'] = "Basic " + Base64.strict_encode64("#{@client_id}:#{@client_secret}")
237
- req.headers['Content-Type'] = 'application/x-www-form-urlencoded'
238
- req.headers['User-Agent'] = @user_agent
239
- req.body = URI.encode_www_form(data)
240
- end
241
- return_error(response) unless response.success?
242
- if !response.body.nil? && !response.body.empty?
243
- body = JSON.parse(response.body)
244
- set_token_set(body)
245
- else
246
- body = {}
247
- end
248
- return body
249
- end
250
-
251
- # Connection heplers
252
- def connections
253
- @config.base_url = 'https://api.xero.com'
254
- opts = { :header_params => {'Content-Type': 'application/json'}, :auth_names => ['OAuth2'] }
255
- response = call_api(:GET, "/connections/", nil, opts)
256
- response[0]
257
- end
258
-
259
- def last_connection
260
- connections.sort { |a,b| DateTime.parse(a['updatedDateUtc']) <=> DateTime.parse(b['updatedDateUtc'])}.last
261
- end
262
-
263
- def disconnect(connection_id)
264
- @config.base_url = 'https://api.xero.com'
265
- opts = { :header_params => {'Content-Type': 'application/json'}, :auth_names => ['OAuth2'] }
266
- call_api(:DELETE, "/connections/#{connection_id}", nil, opts)
267
- connections
268
- end
269
-
270
- # Call an API with given options.
271
- #
272
- # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
273
- # the data deserialized from response body (could be nil), response status code and response headers.
274
- def call_api(http_method, path, api_client, opts = {})
275
- ssl_options = {
276
- :ca_file => @config.ssl_ca_file,
277
- :verify => @config.ssl_verify,
278
- :verify_mode => @config.ssl_verify_mode,
279
- :client_cert => @config.ssl_client_cert,
280
- :client_key => @config.ssl_client_key
281
- }
282
-
283
- case api_client
284
- when "AccountingApi"
285
- method_base_url = @config.accounting_url
286
- when "AssetApi"
287
- method_base_url = @config.asset_url
288
- when "FilesApi"
289
- method_base_url = @config.files_url
290
- when "PayrollAuApi"
291
- method_base_url = @config.payroll_au_url
292
- when "PayrollNzApi"
293
- method_base_url = @config.payroll_nz_url
294
- when "PayrollUkApi"
295
- method_base_url = @config.payroll_uk_url
296
- when "ProjectApi"
297
- method_base_url = @config.project_url
298
- when "AppStoreApi"
299
- method_base_url = @config.app_store_url
300
- when "FinanceApi"
301
- method_base_url = @config.finance_url
302
- else
303
- method_base_url = @config.accounting_url
304
- end
305
-
306
- connection = Faraday.new(:url => method_base_url, :ssl => ssl_options) do |conn|
307
- conn.request(:authorization, :basic, config.username, config.password)
308
- if opts[:header_params]["Content-Type"] == "multipart/form-data"
309
- conn.request :multipart
310
- conn.request :url_encoded
311
- end
312
- conn.adapter(Faraday.default_adapter)
313
- end
314
-
315
- begin
316
- response = connection.public_send(http_method.to_sym.downcase) do |req|
317
- build_request(http_method, path, req, opts)
318
- end
319
-
320
- if @config.debugging
321
- @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
322
- end
323
-
324
- return_error(response) unless response.success?
325
- rescue Faraday::TimeoutError
326
- fail ApiError.new('Connection timed out')
327
- end
328
-
329
- if opts[:return_type]
330
- prepare_file(response) if opts[:return_type] == 'File'
331
- data = deserialize(response, opts[:return_type], api_client)
332
- elsif !response.body.empty?
333
- data = JSON.parse(response.body)
334
- else
335
- data = nil
336
- end
337
- return data, response.status, response.headers
338
- end
339
-
340
- def return_error(response)
341
- if response.status == 0
342
- # Errors from libcurl will be made visible here
343
- fail ApiError.new(:code => 0,
344
- :message => response.return_message)
345
- else
346
- fail ApiError.new(:code => response.status,
347
- :response_headers => response.headers,
348
- :response_body => response.body),
349
- response.reason_phrase
350
- end
351
- end
352
-
353
- # Builds the HTTP request
354
- #
355
- # @param [String] http_method HTTP method/verb (e.g. POST)
356
- # @param [String] path URL path (e.g. /account/new)
357
- # @option opts [Hash] :header_params Header parameters
358
- # @option opts [Hash] :query_params Query parameters
359
- # @option opts [Hash] :form_params Query parameters
360
- # @option opts [Object] :body HTTP body (JSON/XML)
361
- # @return A Faraday Request
362
- def build_request(http_method, path, request, opts = {})
363
- url = build_request_url(path)
364
- http_method = http_method.to_sym.downcase
365
-
366
- header_params = @default_headers.merge(opts[:header_params] || {})
367
- query_params = opts[:query_params] || {}
368
- form_params = opts[:form_params] || {}
369
-
370
- update_params_for_auth! header_params, query_params, opts[:auth_names]
371
-
372
- req_opts = {
373
- :method => http_method,
374
- :headers => header_params,
375
- :params => query_params,
376
- :params_encoding => @config.params_encoding,
377
- :timeout => @config.timeout,
378
- :verbose => @config.debugging
379
- }
380
-
381
- if [:post, :patch, :put, :delete].include?(http_method)
382
- req_body = build_request_body(header_params, form_params, opts[:body])
383
- req_opts.update :body => req_body
384
- if @config.debugging
385
- @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
386
- end
387
- end
388
- request.headers = header_params
389
- timeout = @config.timeout
390
- request.options.timeout = timeout if timeout > 0
391
- request.body = req_body
392
- request.url url
393
- request.params = query_params
394
- request
395
- end
396
-
397
- # Builds the HTTP request body
398
- #
399
- # @param [Hash] header_params Header parameters
400
- # @param [Hash] form_params Query parameters
401
- # @param [Object] body HTTP body (JSON/XML)
402
- # @return [String] HTTP body data in the form of string
403
- def build_request_body(header_params, form_params, body)
404
- # http form
405
- if header_params['Content-Type'] == 'application/x-www-form-urlencoded'
406
- data = URI.encode_www_form(form_params)
407
- elsif header_params['Content-Type'] == 'multipart/form-data'
408
- data = {}
409
- form_params.each do |key, value|
410
- case value
411
- when ::File, ::Tempfile
412
- data[form_params["name"]] = Faraday::UploadIO.new(value.path, form_params["mimeType"], value.path)
413
- when ::Array, nil
414
- # let Faraday handle Array and nil parameters
415
- data[key] = value
416
- else
417
- data[key] = value.to_s
418
- end
419
- end
420
- elsif body
421
- data = body.is_a?(String) ? body : body.to_json
422
- else
423
- data = nil
424
- end
425
- data
426
- end
427
-
428
- # Check if the given MIME is a JSON MIME.
429
- # JSON MIME examples:
430
- # application/json
431
- # application/json; charset=UTF8
432
- # APPLICATION/JSON
433
- # */*
434
- # @param [String] mime MIME
435
- # @return [Boolean] True if the MIME is application/json
436
- def json_mime?(mime)
437
- (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
438
- end
439
-
440
- # Deserialize the response to the given return type.
441
- #
442
- # @param [Response] response HTTP response
443
- # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
444
- def deserialize(response, return_type, api_client)
445
- body = response.body
446
-
447
- # handle file downloading - return the File instance processed in request callbacks
448
- # note that response body is empty when the file is written in chunks in request on_body callback
449
- return @tempfile if return_type == 'File'
450
-
451
- return nil if body.nil? || body.empty?
452
-
453
- # return response body directly for String return type
454
- return body if return_type == 'String'
455
-
456
- # ensuring a default content type
457
- content_type = response.headers['Content-Type'] || 'application/json'
458
-
459
- fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
460
-
461
- begin
462
- data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
463
- rescue JSON::ParserError => e
464
- if %w(String Date DateTime).include?(return_type)
465
- data = body
466
- else
467
- raise e
468
- end
469
- end
470
-
471
- convert_to_type(data, return_type, api_client)
472
- end
473
-
474
- # Convert data to the given return type.
475
- # @param [Object] data Data to be converted
476
- # @param [String] return_type Return type
477
- # @return [Mixed] Data in a particular type
478
- def convert_to_type(data, return_type, api_client)
479
- return nil if data.nil?
480
- case return_type
481
- when 'String'
482
- data.to_s
483
- when 'Integer'
484
- data.to_i
485
- when 'Float'
486
- data.to_f
487
- when 'Boolean'
488
- data == true
489
- when 'DateTime'
490
- # parse date time (expecting ISO 8601 format)
491
- DateTime.parse data
492
- when 'Date'
493
- # parse date time (expecting ISO 8601 format)
494
- Date.parse data
495
- when 'Object'
496
- # generic object (usually a Hash), return directly
497
- data
498
- when /\AArray<(.+)>\z/
499
- # e.g. Array<Pet>
500
- sub_type = $1
501
- data.map { |item| convert_to_type(item, sub_type, api_client) }
502
- when /\AHash\<String, (.+)\>\z/
503
- # e.g. Hash<String, Integer>
504
- sub_type = $1
505
- {}.tap do |hash|
506
- data.each { |k, v| hash[k] = convert_to_type(v, sub_type, api_client) }
507
- end
508
- else
509
- case api_client
510
- when 'AccountingApi'
511
- XeroRuby::Accounting.const_get(return_type).build_from_hash(data)
512
- when 'AssetApi'
513
- XeroRuby::Assets.const_get(return_type).build_from_hash(data)
514
- when 'ProjectApi'
515
- XeroRuby::Projects.const_get(return_type).build_from_hash(data)
516
- when 'FilesApi'
517
- XeroRuby::Files.const_get(return_type).build_from_hash(data)
518
- when 'PayrollAuApi'
519
- XeroRuby::PayrollAu.const_get(return_type).build_from_hash(data)
520
- when 'PayrollNzApi'
521
- XeroRuby::PayrollNz.const_get(return_type).build_from_hash(data)
522
- when 'PayrollUkApi'
523
- XeroRuby::PayrollUk.const_get(return_type).build_from_hash(data)
524
- when 'AppStoreApi'
525
- XeroRuby::AppStore.const_get(return_type).build_from_hash(data)
526
- when 'FinanceApi'
527
- XeroRuby::Finance.const_get(return_type).build_from_hash(data)
528
- else
529
- XeroRuby::Accounting.const_get(return_type).build_from_hash(data)
530
- end
531
- end
532
- end
533
-
534
- # Save response body into a file in (the defined) temporary folder, using the filename
535
- # from the "Content-Disposition" header if provided, otherwise a random filename.
536
- # The response body is written to the file in chunks in order to handle files which
537
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
538
- # process can use.
539
- #
540
- # @see Configuration#temp_folder_path
541
- def prepare_file(response)
542
- content_disposition = response.headers['Content-Disposition']
543
- if content_disposition && content_disposition =~ /filename=/i
544
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
545
- prefix = sanitize_filename(filename)
546
- else
547
- prefix = 'download-'
548
- end
549
- prefix = prefix + '-' unless prefix.end_with?('-')
550
- encoding = response.body.encoding
551
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
552
- @tempfile = tempfile
553
- tempfile.write(response.body)
554
- tempfile.close if tempfile
555
- @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
556
- "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
557
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
558
- "explicitly with `tempfile.delete`"
559
- end
560
-
561
- # Sanitize filename by removing path.
562
- # e.g. ../../sun.gif becomes sun.gif
563
- #
564
- # @param [String] filename the filename to be sanitized
565
- # @return [String] the sanitized filename
566
- def sanitize_filename(filename)
567
- filename.gsub(/.*[\/\\]/, '')
568
- end
569
-
570
- def build_request_url(path)
571
- if @config.base_url
572
- # Add leading and trailing slashes to path
573
- path = "/#{path}".gsub(/\/+/, '/')
574
- @config.base_url + path
575
- else
576
- path
577
- end
578
- end
579
-
580
- # Update hearder and query params based on authentication settings.
581
- #
582
- # @param [Hash] header_params Header parameters
583
- # @param [Hash] query_params Query parameters
584
- # @param [String] auth_names Authentication scheme name
585
- def update_params_for_auth!(header_params, query_params, auth_names)
586
- Array(auth_names).each do |auth_name|
587
- auth_setting = @config.auth_settings[auth_name]
588
- next unless auth_setting
589
- case auth_setting[:in]
590
- when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
591
- when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
592
- else fail ArgumentError, 'Authentication token must be in `query` of `header`'
593
- end
594
- end
595
- end
596
-
597
- # Sets user agent in HTTP header
598
- #
599
- # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0)
600
- def user_agent=(user_agent)
601
- @user_agent = user_agent
602
- @default_headers['User-Agent'] = @user_agent
603
- end
604
-
605
- # Return Accept header based on an array of accepts provided.
606
- # @param [Array] accepts array for Accept
607
- # @return [String] the Accept header (e.g. application/json)
608
- def select_header_accept(accepts)
609
- return nil if accepts.nil? || accepts.empty?
610
- # use JSON when present, otherwise use all of the provided
611
- json_accept = accepts.find { |s| json_mime?(s) }
612
- json_accept || accepts.join(',')
613
- end
614
-
615
- # Return Content-Type header based on an array of content types provided.
616
- # @param [Array] content_types array for Content-Type
617
- # @return [String] the Content-Type header (e.g. application/json)
618
- def select_header_content_type(content_types)
619
- # use application/json by default
620
- return 'application/json' if content_types.nil? || content_types.empty?
621
- # use JSON when present, otherwise use the first one
622
- json_content_type = content_types.find { |s| json_mime?(s) }
623
- json_content_type || content_types.first
624
- end
625
-
626
- # Convert object (array, hash, object, etc) to JSON string.
627
- # @param [Object] model object to be converted into JSON string
628
- # @return [String] JSON string representation of the object
629
- def object_to_http_body(model)
630
- return model if model.nil? || model.is_a?(String)
631
- local_body = nil
632
- if model.is_a?(Array)
633
- local_body = model.map { |m| object_to_hash(m) }
634
- else
635
- local_body = object_to_hash(model)
636
- end
637
- local_body.to_json
638
- end
639
-
640
- # Convert object(non-array) to hash.
641
- # @param [Object] obj object to be converted into JSON string
642
- # @return [String] JSON string representation of the object
643
- def object_to_hash(obj)
644
- if obj.respond_to?(:to_hash)
645
- to_camel_keys(obj).to_hash
646
- else
647
- to_camel_keys(obj)
648
- end
649
- end
650
-
651
- # Build parameter value according to the given collection format.
652
- # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
653
- def build_collection_param(param, collection_format)
654
- case collection_format
655
- when :csv
656
- param.join(',')
657
- when :ssv
658
- param.join(' ')
659
- when :tsv
660
- param.join("\t")
661
- when :pipes
662
- param.join('|')
663
- when :multi
664
- # return the array directly as http client will handle it as expected
665
- param
666
- else
667
- fail "unknown collection format: #{collection_format.inspect}"
668
- end
669
- end
670
-
671
- def parameterize_where(where_opts)
672
- Where.new(where_opts).to_param
673
- end
674
- end
675
- end
1
+ =begin
2
+ #Xero Accounting API
3
+
4
+ #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
+
6
+ Contact: api@xero.com
7
+ Generated by: https://openapi-generator.tech
8
+ OpenAPI Generator version: 4.3.1
9
+
10
+ =end
11
+
12
+ require 'date'
13
+ require 'json'
14
+ require 'logger'
15
+ require 'tempfile'
16
+ require 'find'
17
+ require 'faraday'
18
+ require 'base64'
19
+ require 'cgi'
20
+ require 'json/jwt'
21
+
22
+ module XeroRuby
23
+ class ApiClient
24
+ include StringSerialization
25
+
26
+ # The Configuration object holding settings to be used in the API client.
27
+ attr_accessor :config
28
+
29
+ # Defines the headers to be used in HTTP requests of all API calls by default.
30
+ #
31
+ # @return [Hash]
32
+ attr_accessor :default_headers, :grant_type
33
+
34
+ # Initializes the ApiClient
35
+ # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
36
+ def initialize(config: {}, credentials: {})
37
+ @client_id = credentials[:client_id]
38
+ @client_secret = credentials[:client_secret]
39
+ @redirect_uri = credentials[:redirect_uri]
40
+ @grant_type = credentials[:grant_type] || 'authorization_code'
41
+ @scopes = credentials[:scopes]
42
+ @state = credentials[:state]
43
+ default_config = Configuration.default.clone
44
+ @config = append_to_default_config(default_config, config)
45
+
46
+ @user_agent = "xero-ruby-#{VERSION}"
47
+ @default_headers = {
48
+ 'Content-Type' => 'application/json',
49
+ 'User-Agent' => @user_agent
50
+ }
51
+ end
52
+
53
+ def append_to_default_config(default_config, user_config)
54
+ config = default_config
55
+ user_config.each{|k,v| config.send("#{k}=", v)}
56
+ config
57
+ end
58
+
59
+ def authorization_url
60
+ url = URI.parse(@config.login_url)
61
+ url.query = URI.encode_www_form(
62
+ {
63
+ response_type: 'code',
64
+ client_id: @client_id,
65
+ redirect_uri: @redirect_uri,
66
+ scope: @scopes,
67
+ state: @state
68
+ }.compact
69
+ )
70
+ url.to_s
71
+ end
72
+
73
+ def accounting_api
74
+ @config.base_url = @config.accounting_url
75
+ XeroRuby::AccountingApi.new(self)
76
+ end
77
+
78
+ def asset_api
79
+ @config.base_url = @config.asset_url
80
+ XeroRuby::AssetApi.new(self)
81
+ end
82
+
83
+ def project_api
84
+ @config.base_url = @config.project_url
85
+ XeroRuby::ProjectApi.new(self)
86
+ end
87
+
88
+ def files_api
89
+ @config.base_url = @config.files_url
90
+ XeroRuby::FilesApi.new(self)
91
+ end
92
+
93
+ def payroll_au_api
94
+ @config.base_url = @config.payroll_au_url
95
+ XeroRuby::PayrollAuApi.new(self)
96
+ end
97
+
98
+ def payroll_nz_api
99
+ @config.base_url = @config.payroll_nz_url
100
+ XeroRuby::PayrollNzApi.new(self)
101
+ end
102
+
103
+ def payroll_uk_api
104
+ @config.base_url = @config.payroll_uk_url
105
+ XeroRuby::PayrollUkApi.new(self)
106
+ end
107
+
108
+ def app_store_api
109
+ @config.base_url = @config.app_store_url
110
+ XeroRuby::AppStoreApi.new(self)
111
+ end
112
+
113
+ def finance_api
114
+ @config.base_url = @config.finance_url
115
+ XeroRuby::FinanceApi.new(self)
116
+ end
117
+
118
+ # Token Helpers
119
+ def token_set
120
+ @config.token_set
121
+ end
122
+
123
+ def access_token
124
+ @config.access_token
125
+ end
126
+
127
+ def id_token
128
+ @config.id_token
129
+ end
130
+
131
+ def decoded_access_token
132
+ decode_jwt(@config.access_token, false)
133
+ end
134
+
135
+ def decoded_id_token
136
+ decode_jwt(@config.id_token, false)
137
+ end
138
+
139
+ def set_token_set(token_set)
140
+ token_set = token_set.with_indifferent_access
141
+ @config.token_set = token_set
142
+
143
+ set_access_token(token_set[:access_token]) if token_set[:access_token]
144
+ set_id_token(token_set[:id_token]) if token_set[:id_token]
145
+
146
+ return true
147
+ end
148
+
149
+ def set_access_token(access_token)
150
+ @config.access_token = access_token
151
+ end
152
+
153
+ def set_id_token(id_token)
154
+ @config.id_token = id_token
155
+ end
156
+
157
+ def get_client_credentials_token
158
+ data = {
159
+ grant_type: @grant_type
160
+ }
161
+ token_set = token_request(data, '/token')
162
+
163
+ return token_set
164
+ end
165
+
166
+ def get_token_set_from_callback(params)
167
+ data = {
168
+ grant_type: @grant_type,
169
+ code: params['code'],
170
+ redirect_uri: @redirect_uri
171
+ }
172
+ token_set = token_request(data, '/token')
173
+
174
+ validate_tokens(token_set)
175
+ validate_state(params)
176
+ return token_set
177
+ end
178
+
179
+ def validate_tokens(token_set)
180
+ token_set = token_set.with_indifferent_access
181
+ id_token = token_set[:id_token]
182
+ access_token = token_set[:access_token]
183
+ if id_token || access_token
184
+ decode_jwt(access_token) if access_token
185
+ decode_jwt(id_token) if id_token
186
+ end
187
+ return true
188
+ end
189
+
190
+ def validate_state(params)
191
+ if params['state'] != @state
192
+ raise StandardError.new "WARNING: @config.state: #{@state} and OAuth callback state: #{params['state']} do not match!"
193
+ end
194
+ return true
195
+ end
196
+
197
+ def decode_jwt(tkn, verify=true)
198
+ if verify == true
199
+
200
+ response = Faraday.get('https://identity.xero.com/.well-known/openid-configuration/jwks') do |req|
201
+ req.headers['User-Agent'] = @user_agent
202
+ end
203
+
204
+ jwks_data = JSON.parse(response.body)
205
+ jwk_set = JSON::JWK::Set.new(jwks_data)
206
+ JSON::JWT.decode(tkn, jwk_set)
207
+ else
208
+ JSON::JWT.decode(tkn, :skip_verification)
209
+ end
210
+ end
211
+
212
+ def token_expired?
213
+ token_expiry = Time.at(decoded_access_token['exp'])
214
+ token_expiry < Time.now
215
+ end
216
+
217
+ def refresh_token_set(token_set)
218
+ token_set = token_set.with_indifferent_access
219
+ data = {
220
+ grant_type: 'refresh_token',
221
+ refresh_token: token_set[:refresh_token]
222
+ }
223
+ return token_request(data, '/token')
224
+ end
225
+
226
+ def revoke_token(token_set)
227
+ token_set = token_set.with_indifferent_access
228
+ data = {
229
+ token: token_set[:refresh_token]
230
+ }
231
+ return token_request(data, '/revocation')
232
+ end
233
+
234
+ def token_request(data, path)
235
+ response = Faraday.post("#{@config.token_url}#{path}") do |req|
236
+ req.headers['Authorization'] = "Basic " + Base64.strict_encode64("#{@client_id}:#{@client_secret}")
237
+ req.headers['Content-Type'] = 'application/x-www-form-urlencoded'
238
+ req.headers['User-Agent'] = @user_agent
239
+ req.body = URI.encode_www_form(data)
240
+ end
241
+ return_error(response) unless response.success?
242
+ if !response.body.nil? && !response.body.empty?
243
+ body = JSON.parse(response.body)
244
+ set_token_set(body)
245
+ else
246
+ body = {}
247
+ end
248
+ return body
249
+ end
250
+
251
+ # Connection heplers
252
+ def connections
253
+ @config.base_url = 'https://api.xero.com'
254
+ opts = { :header_params => {'Content-Type': 'application/json'}, :auth_names => ['OAuth2'] }
255
+ response = call_api(:GET, "/connections/", nil, opts)
256
+ response[0]
257
+ end
258
+
259
+ def last_connection
260
+ connections.sort { |a,b| DateTime.parse(a['updatedDateUtc']) <=> DateTime.parse(b['updatedDateUtc'])}.last
261
+ end
262
+
263
+ def disconnect(connection_id)
264
+ @config.base_url = 'https://api.xero.com'
265
+ opts = { :header_params => {'Content-Type': 'application/json'}, :auth_names => ['OAuth2'] }
266
+ call_api(:DELETE, "/connections/#{connection_id}", nil, opts)
267
+ connections
268
+ end
269
+
270
+ # Call an API with given options.
271
+ #
272
+ # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
273
+ # the data deserialized from response body (could be nil), response status code and response headers.
274
+ def call_api(http_method, path, api_client, opts = {})
275
+ ssl_options = {
276
+ :ca_file => @config.ssl_ca_file,
277
+ :verify => @config.ssl_verify,
278
+ :verify_mode => @config.ssl_verify_mode,
279
+ :client_cert => @config.ssl_client_cert,
280
+ :client_key => @config.ssl_client_key
281
+ }
282
+
283
+ case api_client
284
+ when "AccountingApi"
285
+ method_base_url = @config.accounting_url
286
+ when "AssetApi"
287
+ method_base_url = @config.asset_url
288
+ when "FilesApi"
289
+ method_base_url = @config.files_url
290
+ when "PayrollAuApi"
291
+ method_base_url = @config.payroll_au_url
292
+ when "PayrollNzApi"
293
+ method_base_url = @config.payroll_nz_url
294
+ when "PayrollUkApi"
295
+ method_base_url = @config.payroll_uk_url
296
+ when "ProjectApi"
297
+ method_base_url = @config.project_url
298
+ when "AppStoreApi"
299
+ method_base_url = @config.app_store_url
300
+ when "FinanceApi"
301
+ method_base_url = @config.finance_url
302
+ else
303
+ method_base_url = @config.accounting_url
304
+ end
305
+
306
+ connection = Faraday.new(:url => method_base_url, :ssl => ssl_options) do |conn|
307
+ conn.request(:authorization, :basic, config.username, config.password)
308
+ if opts[:header_params]["Content-Type"] == "multipart/form-data"
309
+ conn.request :multipart
310
+ conn.request :url_encoded
311
+ end
312
+ conn.adapter(Faraday.default_adapter)
313
+ end
314
+
315
+ begin
316
+ response = connection.public_send(http_method.to_sym.downcase) do |req|
317
+ build_request(http_method, path, req, opts)
318
+ end
319
+
320
+ if @config.debugging
321
+ @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
322
+ end
323
+
324
+ return_error(response) unless response.success?
325
+ rescue Faraday::TimeoutError
326
+ fail ApiError.new('Connection timed out')
327
+ end
328
+
329
+ if opts[:return_type]
330
+ prepare_file(response) if opts[:return_type] == 'File'
331
+ data = deserialize(response, opts[:return_type], api_client)
332
+ elsif !response.body.empty?
333
+ data = JSON.parse(response.body)
334
+ else
335
+ data = nil
336
+ end
337
+ return data, response.status, response.headers
338
+ end
339
+
340
+ def return_error(response)
341
+ if response.status == 0
342
+ # Errors from libcurl will be made visible here
343
+ fail ApiError.new(:code => 0,
344
+ :message => response.return_message)
345
+ else
346
+ fail ApiError.new(:code => response.status,
347
+ :response_headers => response.headers,
348
+ :response_body => response.body),
349
+ response.reason_phrase
350
+ end
351
+ end
352
+
353
+ # Builds the HTTP request
354
+ #
355
+ # @param [String] http_method HTTP method/verb (e.g. POST)
356
+ # @param [String] path URL path (e.g. /account/new)
357
+ # @option opts [Hash] :header_params Header parameters
358
+ # @option opts [Hash] :query_params Query parameters
359
+ # @option opts [Hash] :form_params Query parameters
360
+ # @option opts [Object] :body HTTP body (JSON/XML)
361
+ # @return A Faraday Request
362
+ def build_request(http_method, path, request, opts = {})
363
+ url = build_request_url(path)
364
+ http_method = http_method.to_sym.downcase
365
+
366
+ header_params = @default_headers.merge(opts[:header_params] || {})
367
+ query_params = opts[:query_params] || {}
368
+ form_params = opts[:form_params] || {}
369
+
370
+ update_params_for_auth! header_params, query_params, opts[:auth_names]
371
+
372
+ req_opts = {
373
+ :method => http_method,
374
+ :headers => header_params,
375
+ :params => query_params,
376
+ :params_encoding => @config.params_encoding,
377
+ :timeout => @config.timeout,
378
+ :verbose => @config.debugging
379
+ }
380
+
381
+ if [:post, :patch, :put, :delete].include?(http_method)
382
+ req_body = build_request_body(header_params, form_params, opts[:body])
383
+ req_opts.update :body => req_body
384
+ if @config.debugging
385
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
386
+ end
387
+ end
388
+ request.headers = header_params
389
+ timeout = @config.timeout
390
+ request.options.timeout = timeout if timeout > 0
391
+ request.body = req_body
392
+ request.url url
393
+ request.params = query_params
394
+ request
395
+ end
396
+
397
+ # Builds the HTTP request body
398
+ #
399
+ # @param [Hash] header_params Header parameters
400
+ # @param [Hash] form_params Query parameters
401
+ # @param [Object] body HTTP body (JSON/XML)
402
+ # @return [String] HTTP body data in the form of string
403
+ def build_request_body(header_params, form_params, body)
404
+ # http form
405
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded'
406
+ data = URI.encode_www_form(form_params)
407
+ elsif header_params['Content-Type'] == 'multipart/form-data'
408
+ data = {}
409
+ form_params.each do |key, value|
410
+ case value
411
+ when ::File, ::Tempfile
412
+ data[form_params["name"]] = Faraday::UploadIO.new(value.path, form_params["mimeType"], value.path)
413
+ when ::Array, nil
414
+ # let Faraday handle Array and nil parameters
415
+ data[key] = value
416
+ else
417
+ data[key] = value.to_s
418
+ end
419
+ end
420
+ elsif body
421
+ data = body.is_a?(String) ? body : body.to_json
422
+ else
423
+ data = nil
424
+ end
425
+ data
426
+ end
427
+
428
+ # Check if the given MIME is a JSON MIME.
429
+ # JSON MIME examples:
430
+ # application/json
431
+ # application/json; charset=UTF8
432
+ # APPLICATION/JSON
433
+ # */*
434
+ # @param [String] mime MIME
435
+ # @return [Boolean] True if the MIME is application/json
436
+ def json_mime?(mime)
437
+ (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
438
+ end
439
+
440
+ # Deserialize the response to the given return type.
441
+ #
442
+ # @param [Response] response HTTP response
443
+ # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
444
+ def deserialize(response, return_type, api_client)
445
+ body = response.body
446
+
447
+ # handle file downloading - return the File instance processed in request callbacks
448
+ # note that response body is empty when the file is written in chunks in request on_body callback
449
+ return @tempfile if return_type == 'File'
450
+
451
+ return nil if body.nil? || body.empty?
452
+
453
+ # return response body directly for String return type
454
+ return body if return_type == 'String'
455
+
456
+ # ensuring a default content type
457
+ content_type = response.headers['Content-Type'] || 'application/json'
458
+
459
+ fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
460
+
461
+ begin
462
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
463
+ rescue JSON::ParserError => e
464
+ if %w(String Date DateTime).include?(return_type)
465
+ data = body
466
+ else
467
+ raise e
468
+ end
469
+ end
470
+
471
+ convert_to_type(data, return_type, api_client)
472
+ end
473
+
474
+ # Convert data to the given return type.
475
+ # @param [Object] data Data to be converted
476
+ # @param [String] return_type Return type
477
+ # @return [Mixed] Data in a particular type
478
+ def convert_to_type(data, return_type, api_client)
479
+ return nil if data.nil?
480
+ case return_type
481
+ when 'String'
482
+ data.to_s
483
+ when 'Integer'
484
+ data.to_i
485
+ when 'Float'
486
+ data.to_f
487
+ when 'Boolean'
488
+ data == true
489
+ when 'DateTime'
490
+ # parse date time (expecting ISO 8601 format)
491
+ DateTime.parse data
492
+ when 'Date'
493
+ # parse date time (expecting ISO 8601 format)
494
+ Date.parse data
495
+ when 'Object'
496
+ # generic object (usually a Hash), return directly
497
+ data
498
+ when /\AArray<(.+)>\z/
499
+ # e.g. Array<Pet>
500
+ sub_type = $1
501
+ data.map { |item| convert_to_type(item, sub_type, api_client) }
502
+ when /\AHash\<String, (.+)\>\z/
503
+ # e.g. Hash<String, Integer>
504
+ sub_type = $1
505
+ {}.tap do |hash|
506
+ data.each { |k, v| hash[k] = convert_to_type(v, sub_type, api_client) }
507
+ end
508
+ else
509
+ case api_client
510
+ when 'AccountingApi'
511
+ XeroRuby::Accounting.const_get(return_type).build_from_hash(data)
512
+ when 'AssetApi'
513
+ XeroRuby::Assets.const_get(return_type).build_from_hash(data)
514
+ when 'ProjectApi'
515
+ XeroRuby::Projects.const_get(return_type).build_from_hash(data)
516
+ when 'FilesApi'
517
+ XeroRuby::Files.const_get(return_type).build_from_hash(data)
518
+ when 'PayrollAuApi'
519
+ XeroRuby::PayrollAu.const_get(return_type).build_from_hash(data)
520
+ when 'PayrollNzApi'
521
+ XeroRuby::PayrollNz.const_get(return_type).build_from_hash(data)
522
+ when 'PayrollUkApi'
523
+ XeroRuby::PayrollUk.const_get(return_type).build_from_hash(data)
524
+ when 'AppStoreApi'
525
+ XeroRuby::AppStore.const_get(return_type).build_from_hash(data)
526
+ when 'FinanceApi'
527
+ XeroRuby::Finance.const_get(return_type).build_from_hash(data)
528
+ else
529
+ XeroRuby::Accounting.const_get(return_type).build_from_hash(data)
530
+ end
531
+ end
532
+ end
533
+
534
+ # Save response body into a file in (the defined) temporary folder, using the filename
535
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
536
+ # The response body is written to the file in chunks in order to handle files which
537
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
538
+ # process can use.
539
+ #
540
+ # @see Configuration#temp_folder_path
541
+ def prepare_file(response)
542
+ content_disposition = response.headers['Content-Disposition']
543
+ if content_disposition && content_disposition =~ /filename=/i
544
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
545
+ prefix = sanitize_filename(filename)
546
+ else
547
+ prefix = 'download-'
548
+ end
549
+ prefix = prefix + '-' unless prefix.end_with?('-')
550
+ encoding = response.body.encoding
551
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
552
+ @tempfile = tempfile
553
+ tempfile.write(response.body)
554
+ tempfile.close if tempfile
555
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
556
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
557
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
558
+ "explicitly with `tempfile.delete`"
559
+ end
560
+
561
+ # Sanitize filename by removing path.
562
+ # e.g. ../../sun.gif becomes sun.gif
563
+ #
564
+ # @param [String] filename the filename to be sanitized
565
+ # @return [String] the sanitized filename
566
+ def sanitize_filename(filename)
567
+ filename.gsub(/.*[\/\\]/, '')
568
+ end
569
+
570
+ def build_request_url(path)
571
+ if @config.base_url
572
+ # Add leading and trailing slashes to path
573
+ path = "/#{path}".gsub(/\/+/, '/')
574
+ @config.base_url + path
575
+ else
576
+ path
577
+ end
578
+ end
579
+
580
+ # Update hearder and query params based on authentication settings.
581
+ #
582
+ # @param [Hash] header_params Header parameters
583
+ # @param [Hash] query_params Query parameters
584
+ # @param [String] auth_names Authentication scheme name
585
+ def update_params_for_auth!(header_params, query_params, auth_names)
586
+ Array(auth_names).each do |auth_name|
587
+ auth_setting = @config.auth_settings[auth_name]
588
+ next unless auth_setting
589
+ case auth_setting[:in]
590
+ when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
591
+ when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
592
+ else fail ArgumentError, 'Authentication token must be in `query` of `header`'
593
+ end
594
+ end
595
+ end
596
+
597
+ # Sets user agent in HTTP header
598
+ #
599
+ # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0)
600
+ def user_agent=(user_agent)
601
+ @user_agent = user_agent
602
+ @default_headers['User-Agent'] = @user_agent
603
+ end
604
+
605
+ # Return Accept header based on an array of accepts provided.
606
+ # @param [Array] accepts array for Accept
607
+ # @return [String] the Accept header (e.g. application/json)
608
+ def select_header_accept(accepts)
609
+ return nil if accepts.nil? || accepts.empty?
610
+ # use JSON when present, otherwise use all of the provided
611
+ json_accept = accepts.find { |s| json_mime?(s) }
612
+ json_accept || accepts.join(',')
613
+ end
614
+
615
+ # Return Content-Type header based on an array of content types provided.
616
+ # @param [Array] content_types array for Content-Type
617
+ # @return [String] the Content-Type header (e.g. application/json)
618
+ def select_header_content_type(content_types)
619
+ # use application/json by default
620
+ return 'application/json' if content_types.nil? || content_types.empty?
621
+ # use JSON when present, otherwise use the first one
622
+ json_content_type = content_types.find { |s| json_mime?(s) }
623
+ json_content_type || content_types.first
624
+ end
625
+
626
+ # Convert object (array, hash, object, etc) to JSON string.
627
+ # @param [Object] model object to be converted into JSON string
628
+ # @return [String] JSON string representation of the object
629
+ def object_to_http_body(model)
630
+ return model if model.nil? || model.is_a?(String)
631
+ local_body = nil
632
+ if model.is_a?(Array)
633
+ local_body = model.map { |m| object_to_hash(m) }
634
+ else
635
+ local_body = object_to_hash(model)
636
+ end
637
+ local_body.to_json
638
+ end
639
+
640
+ # Convert object(non-array) to hash.
641
+ # @param [Object] obj object to be converted into JSON string
642
+ # @return [String] JSON string representation of the object
643
+ def object_to_hash(obj)
644
+ if obj.respond_to?(:to_hash)
645
+ to_camel_keys(obj).to_hash
646
+ else
647
+ to_camel_keys(obj)
648
+ end
649
+ end
650
+
651
+ # Build parameter value according to the given collection format.
652
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
653
+ def build_collection_param(param, collection_format)
654
+ case collection_format
655
+ when :csv
656
+ param.join(',')
657
+ when :ssv
658
+ param.join(' ')
659
+ when :tsv
660
+ param.join("\t")
661
+ when :pipes
662
+ param.join('|')
663
+ when :multi
664
+ # return the array directly as http client will handle it as expected
665
+ param
666
+ else
667
+ fail "unknown collection format: #{collection_format.inspect}"
668
+ end
669
+ end
670
+
671
+ def parameterize_where(where_opts)
672
+ Where.new(where_opts).to_param
673
+ end
674
+ end
675
+ end