xero-ruby 0.2.3 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +76 -0
  3. data/CONTRIBUTING.md +82 -0
  4. data/Gemfile.lock +68 -0
  5. data/LICENSE +21 -0
  6. data/README.md +132 -438
  7. data/docs/{Account.md → accounting/Account.md} +5 -5
  8. data/docs/accounting/AccountType.md +16 -0
  9. data/docs/{AccountingApi.md → accounting/AccountingApi.md} +4973 -1782
  10. data/docs/{Accounts.md → accounting/Accounts.md} +3 -3
  11. data/docs/{AccountsPayable.md → accounting/AccountsPayable.md} +3 -3
  12. data/docs/{AccountsReceivable.md → accounting/AccountsReceivable.md} +3 -3
  13. data/docs/{Address.md → accounting/Address.md} +3 -3
  14. data/docs/accounting/Allocation.md +31 -0
  15. data/docs/{Allocations.md → accounting/Allocations.md} +3 -3
  16. data/docs/{Attachment.md → accounting/Attachment.md} +3 -3
  17. data/docs/{Attachments.md → accounting/Attachments.md} +3 -3
  18. data/docs/{Balances.md → accounting/Balances.md} +3 -3
  19. data/docs/{BankTransaction.md → accounting/BankTransaction.md} +5 -5
  20. data/docs/{BankTransactions.md → accounting/BankTransactions.md} +3 -3
  21. data/docs/{BankTransfer.md → accounting/BankTransfer.md} +6 -6
  22. data/docs/{BankTransfers.md → accounting/BankTransfers.md} +3 -3
  23. data/docs/{BatchPayment.md → accounting/BatchPayment.md} +4 -4
  24. data/docs/{BatchPaymentDetails.md → accounting/BatchPaymentDetails.md} +3 -3
  25. data/docs/{BatchPayments.md → accounting/BatchPayments.md} +3 -3
  26. data/docs/{Bill.md → accounting/Bill.md} +3 -3
  27. data/docs/{BrandingTheme.md → accounting/BrandingTheme.md} +3 -3
  28. data/docs/{BrandingThemes.md → accounting/BrandingThemes.md} +3 -3
  29. data/docs/{CISOrgSetting.md → accounting/CISOrgSetting.md} +3 -3
  30. data/docs/{CISSetting.md → accounting/CISSetting.md} +3 -3
  31. data/docs/{CISSettings.md → accounting/CISSettings.md} +3 -3
  32. data/docs/{Contact.md → accounting/Contact.md} +7 -7
  33. data/docs/{ContactGroup.md → accounting/ContactGroup.md} +3 -3
  34. data/docs/{ContactGroups.md → accounting/ContactGroups.md} +3 -3
  35. data/docs/{ContactPerson.md → accounting/ContactPerson.md} +3 -3
  36. data/docs/{Contacts.md → accounting/Contacts.md} +3 -3
  37. data/docs/accounting/CountryCode.md +16 -0
  38. data/docs/{CreditNote.md → accounting/CreditNote.md} +9 -7
  39. data/docs/{CreditNotes.md → accounting/CreditNotes.md} +3 -3
  40. data/docs/{Currencies.md → accounting/Currencies.md} +3 -3
  41. data/docs/{Currency.md → accounting/Currency.md} +3 -3
  42. data/docs/accounting/CurrencyCode.md +16 -0
  43. data/docs/{Element.md → accounting/Element.md} +3 -3
  44. data/docs/{Employee.md → accounting/Employee.md} +3 -3
  45. data/docs/{Employees.md → accounting/Employees.md} +3 -3
  46. data/docs/{Error.md → accounting/Error.md} +3 -3
  47. data/docs/{ExpenseClaim.md → accounting/ExpenseClaim.md} +3 -3
  48. data/docs/{ExpenseClaims.md → accounting/ExpenseClaims.md} +3 -3
  49. data/docs/{ExternalLink.md → accounting/ExternalLink.md} +3 -3
  50. data/docs/{HistoryRecord.md → accounting/HistoryRecord.md} +3 -3
  51. data/docs/{HistoryRecords.md → accounting/HistoryRecords.md} +3 -3
  52. data/docs/{Invoice.md → accounting/Invoice.md} +7 -7
  53. data/docs/{InvoiceReminder.md → accounting/InvoiceReminder.md} +3 -3
  54. data/docs/{InvoiceReminders.md → accounting/InvoiceReminders.md} +3 -3
  55. data/docs/{Invoices.md → accounting/Invoices.md} +3 -3
  56. data/docs/{Item.md → accounting/Item.md} +3 -3
  57. data/docs/{Items.md → accounting/Items.md} +3 -3
  58. data/docs/{Journal.md → accounting/Journal.md} +4 -4
  59. data/docs/{JournalLine.md → accounting/JournalLine.md} +3 -3
  60. data/docs/{Journals.md → accounting/Journals.md} +3 -3
  61. data/docs/accounting/LineAmountTypes.md +16 -0
  62. data/docs/{LineItem.md → accounting/LineItem.md} +3 -3
  63. data/docs/{LineItemTracking.md → accounting/LineItemTracking.md} +3 -3
  64. data/docs/{LinkedTransaction.md → accounting/LinkedTransaction.md} +3 -3
  65. data/docs/{LinkedTransactions.md → accounting/LinkedTransactions.md} +3 -3
  66. data/docs/{ManualJournal.md → accounting/ManualJournal.md} +5 -5
  67. data/docs/{ManualJournalLine.md → accounting/ManualJournalLine.md} +3 -3
  68. data/docs/{ManualJournals.md → accounting/ManualJournals.md} +3 -3
  69. data/docs/{OnlineInvoice.md → accounting/OnlineInvoice.md} +3 -3
  70. data/docs/{OnlineInvoices.md → accounting/OnlineInvoices.md} +3 -3
  71. data/docs/{Organisation.md → accounting/Organisation.md} +5 -3
  72. data/docs/{Organisations.md → accounting/Organisations.md} +3 -3
  73. data/docs/{Overpayment.md → accounting/Overpayment.md} +5 -5
  74. data/docs/{Overpayments.md → accounting/Overpayments.md} +3 -3
  75. data/docs/{Payment.md → accounting/Payment.md} +9 -7
  76. data/docs/{PaymentDelete.md → accounting/PaymentDelete.md} +3 -3
  77. data/docs/{PaymentService.md → accounting/PaymentService.md} +3 -3
  78. data/docs/{PaymentServices.md → accounting/PaymentServices.md} +3 -3
  79. data/docs/{PaymentTerm.md → accounting/PaymentTerm.md} +3 -3
  80. data/docs/{PaymentTermType.md → accounting/PaymentTermType.md} +3 -3
  81. data/docs/{Payments.md → accounting/Payments.md} +3 -3
  82. data/docs/{Phone.md → accounting/Phone.md} +3 -3
  83. data/docs/{Prepayment.md → accounting/Prepayment.md} +5 -5
  84. data/docs/{Prepayments.md → accounting/Prepayments.md} +3 -3
  85. data/docs/{Purchase.md → accounting/Purchase.md} +3 -3
  86. data/docs/{PurchaseOrder.md → accounting/PurchaseOrder.md} +5 -5
  87. data/docs/{PurchaseOrders.md → accounting/PurchaseOrders.md} +3 -3
  88. data/docs/{Quote.md → accounting/Quote.md} +8 -4
  89. data/docs/{QuoteLineAmountTypes.md → accounting/QuoteLineAmountTypes.md} +3 -3
  90. data/docs/{QuoteStatusCodes.md → accounting/QuoteStatusCodes.md} +3 -3
  91. data/docs/{Quotes.md → accounting/Quotes.md} +3 -3
  92. data/docs/{Receipt.md → accounting/Receipt.md} +5 -5
  93. data/docs/{Receipts.md → accounting/Receipts.md} +3 -3
  94. data/docs/{RepeatingInvoice.md → accounting/RepeatingInvoice.md} +5 -5
  95. data/docs/{RepeatingInvoices.md → accounting/RepeatingInvoices.md} +3 -3
  96. data/docs/{Report.md → accounting/Report.md} +3 -3
  97. data/docs/{ReportAttribute.md → accounting/ReportAttribute.md} +3 -3
  98. data/docs/{ReportCell.md → accounting/ReportCell.md} +3 -3
  99. data/docs/{ReportFields.md → accounting/ReportFields.md} +3 -3
  100. data/docs/{ReportRow.md → accounting/ReportRow.md} +3 -3
  101. data/docs/{ReportRows.md → accounting/ReportRows.md} +3 -3
  102. data/docs/{ReportWithRow.md → accounting/ReportWithRow.md} +3 -3
  103. data/docs/{ReportWithRows.md → accounting/ReportWithRows.md} +3 -3
  104. data/docs/{Reports.md → accounting/Reports.md} +3 -3
  105. data/docs/{RequestEmpty.md → accounting/RequestEmpty.md} +3 -3
  106. data/docs/{RowType.md → accounting/RowType.md} +3 -3
  107. data/docs/{SalesTrackingCategory.md → accounting/SalesTrackingCategory.md} +3 -3
  108. data/docs/{Schedule.md → accounting/Schedule.md} +3 -3
  109. data/docs/{TaxComponent.md → accounting/TaxComponent.md} +3 -3
  110. data/docs/{TaxRate.md → accounting/TaxRate.md} +3 -3
  111. data/docs/{TaxRates.md → accounting/TaxRates.md} +3 -3
  112. data/docs/{TaxType.md → accounting/TaxType.md} +3 -3
  113. data/docs/{TenNinteyNineContact.md → accounting/TenNinteyNineContact.md} +3 -3
  114. data/docs/{TimeZone.md → accounting/TimeZone.md} +3 -3
  115. data/docs/{TrackingCategories.md → accounting/TrackingCategories.md} +3 -3
  116. data/docs/{TrackingCategory.md → accounting/TrackingCategory.md} +3 -3
  117. data/docs/{TrackingOption.md → accounting/TrackingOption.md} +3 -3
  118. data/docs/{TrackingOptions.md → accounting/TrackingOptions.md} +3 -3
  119. data/docs/{User.md → accounting/User.md} +3 -3
  120. data/docs/{Users.md → accounting/Users.md} +3 -3
  121. data/docs/{ValidationError.md → accounting/ValidationError.md} +3 -3
  122. data/docs/assets/Asset.md +45 -0
  123. data/docs/assets/AssetApi.md +438 -0
  124. data/docs/{CurrencyCode.md → assets/AssetStatus.md} +3 -3
  125. data/docs/assets/AssetStatusQueryParam.md +16 -0
  126. data/docs/assets/AssetType.md +29 -0
  127. data/docs/assets/Assets.md +19 -0
  128. data/docs/assets/BookDepreciationDetail.md +29 -0
  129. data/docs/assets/BookDepreciationSetting.md +31 -0
  130. data/docs/assets/Error.md +25 -0
  131. data/docs/assets/FieldValidationErrorsElement.md +27 -0
  132. data/docs/assets/Pagination.md +23 -0
  133. data/docs/assets/ResourceValidationErrorsElement.md +25 -0
  134. data/docs/assets/Setting.md +31 -0
  135. data/docs/projects/Amount.md +19 -0
  136. data/docs/{AccountType.md → projects/ChargeType.md} +3 -3
  137. data/docs/{CountryCode.md → projects/CurrencyCode.md} +3 -3
  138. data/docs/projects/Error.md +19 -0
  139. data/docs/projects/Pagination.md +23 -0
  140. data/docs/projects/Project.md +59 -0
  141. data/docs/projects/ProjectApi.md +979 -0
  142. data/docs/projects/ProjectCreateOrUpdate.md +23 -0
  143. data/docs/projects/ProjectPatch.md +17 -0
  144. data/docs/{LineAmountTypes.md → projects/ProjectStatus.md} +3 -3
  145. data/docs/projects/ProjectUser.md +21 -0
  146. data/docs/projects/ProjectUsers.md +19 -0
  147. data/docs/projects/Projects.md +19 -0
  148. data/docs/projects/Task.md +45 -0
  149. data/docs/projects/TaskCreateOrUpdate.md +23 -0
  150. data/docs/projects/Tasks.md +19 -0
  151. data/docs/projects/TimeEntries.md +19 -0
  152. data/docs/projects/TimeEntry.md +33 -0
  153. data/docs/projects/TimeEntryCreateOrUpdate.md +25 -0
  154. data/lib/xero-ruby.rb +148 -122
  155. data/lib/xero-ruby/api/accounting_api.rb +165 -42
  156. data/lib/xero-ruby/api/asset_api.rb +452 -0
  157. data/lib/xero-ruby/api/project_api.rb +1035 -0
  158. data/lib/xero-ruby/api_client.rb +172 -44
  159. data/lib/xero-ruby/api_error.rb +2 -2
  160. data/lib/xero-ruby/configuration.rb +35 -22
  161. data/lib/xero-ruby/models/{account.rb → accounting/account.rb} +62 -24
  162. data/lib/xero-ruby/models/{account_type.rb → accounting/account_type.rb} +3 -3
  163. data/lib/xero-ruby/models/{accounts.rb → accounting/accounts.rb} +8 -7
  164. data/lib/xero-ruby/models/{accounts_payable.rb → accounting/accounts_payable.rb} +9 -7
  165. data/lib/xero-ruby/models/{accounts_receivable.rb → accounting/accounts_receivable.rb} +9 -7
  166. data/lib/xero-ruby/models/{address.rb → accounting/address.rb} +19 -16
  167. data/lib/xero-ruby/models/accounting/allocation.rb +291 -0
  168. data/lib/xero-ruby/models/{allocations.rb → accounting/allocations.rb} +8 -7
  169. data/lib/xero-ruby/models/{attachment.rb → accounting/attachment.rb} +12 -12
  170. data/lib/xero-ruby/models/{attachments.rb → accounting/attachments.rb} +8 -7
  171. data/lib/xero-ruby/models/{balances.rb → accounting/balances.rb} +9 -7
  172. data/lib/xero-ruby/models/{bank_transaction.rb → accounting/bank_transaction.rb} +41 -24
  173. data/lib/xero-ruby/models/{bank_transactions.rb → accounting/bank_transactions.rb} +8 -7
  174. data/lib/xero-ruby/models/{bank_transfer.rb → accounting/bank_transfer.rb} +21 -17
  175. data/lib/xero-ruby/models/{bank_transfers.rb → accounting/bank_transfers.rb} +8 -7
  176. data/lib/xero-ruby/models/{batch_payment.rb → accounting/batch_payment.rb} +28 -22
  177. data/lib/xero-ruby/models/{batch_payment_details.rb → accounting/batch_payment_details.rb} +11 -11
  178. data/lib/xero-ruby/models/{batch_payments.rb → accounting/batch_payments.rb} +8 -7
  179. data/lib/xero-ruby/models/{bill.rb → accounting/bill.rb} +8 -7
  180. data/lib/xero-ruby/models/{branding_theme.rb → accounting/branding_theme.rb} +13 -12
  181. data/lib/xero-ruby/models/{branding_themes.rb → accounting/branding_themes.rb} +8 -7
  182. data/lib/xero-ruby/models/{cis_org_setting.rb → accounting/cis_org_setting.rb} +9 -9
  183. data/lib/xero-ruby/models/{cis_setting.rb → accounting/cis_setting.rb} +8 -8
  184. data/lib/xero-ruby/models/{cis_settings.rb → accounting/cis_settings.rb} +8 -7
  185. data/lib/xero-ruby/models/{contact.rb → accounting/contact.rb} +52 -40
  186. data/lib/xero-ruby/models/{contact_group.rb → accounting/contact_group.rb} +12 -10
  187. data/lib/xero-ruby/models/{contact_groups.rb → accounting/contact_groups.rb} +8 -7
  188. data/lib/xero-ruby/models/{contact_person.rb → accounting/contact_person.rb} +10 -10
  189. data/lib/xero-ruby/models/{contacts.rb → accounting/contacts.rb} +8 -7
  190. data/lib/xero-ruby/models/{country_code.rb → accounting/country_code.rb} +3 -3
  191. data/lib/xero-ruby/models/{credit_note.rb → accounting/credit_note.rb} +54 -29
  192. data/lib/xero-ruby/models/{credit_notes.rb → accounting/credit_notes.rb} +8 -7
  193. data/lib/xero-ruby/models/{currencies.rb → accounting/currencies.rb} +8 -7
  194. data/lib/xero-ruby/models/{currency.rb → accounting/currency.rb} +9 -8
  195. data/lib/xero-ruby/models/{currency_code.rb → accounting/currency_code.rb} +5 -5
  196. data/lib/xero-ruby/models/{element.rb → accounting/element.rb} +14 -8
  197. data/lib/xero-ruby/models/{employee.rb → accounting/employee.rb} +17 -12
  198. data/lib/xero-ruby/models/{employees.rb → accounting/employees.rb} +8 -7
  199. data/lib/xero-ruby/models/{error.rb → accounting/error.rb} +10 -10
  200. data/lib/xero-ruby/models/{expense_claim.rb → accounting/expense_claim.rb} +23 -16
  201. data/lib/xero-ruby/models/{expense_claims.rb → accounting/expense_claims.rb} +8 -7
  202. data/lib/xero-ruby/models/{external_link.rb → accounting/external_link.rb} +14 -8
  203. data/lib/xero-ruby/models/{history_record.rb → accounting/history_record.rb} +10 -10
  204. data/lib/xero-ruby/models/{history_records.rb → accounting/history_records.rb} +8 -7
  205. data/lib/xero-ruby/models/{invoice.rb → accounting/invoice.rb} +62 -41
  206. data/lib/xero-ruby/models/{invoice_reminder.rb → accounting/invoice_reminder.rb} +7 -7
  207. data/lib/xero-ruby/models/{invoice_reminders.rb → accounting/invoice_reminders.rb} +8 -7
  208. data/lib/xero-ruby/models/{invoices.rb → accounting/invoices.rb} +8 -7
  209. data/lib/xero-ruby/models/{item.rb → accounting/item.rb} +22 -20
  210. data/lib/xero-ruby/models/{items.rb → accounting/items.rb} +8 -7
  211. data/lib/xero-ruby/models/{journal.rb → accounting/journal.rb} +40 -15
  212. data/lib/xero-ruby/models/{journal_line.rb → accounting/journal_line.rb} +18 -17
  213. data/lib/xero-ruby/models/{journals.rb → accounting/journals.rb} +8 -7
  214. data/lib/xero-ruby/models/{line_amount_types.rb → accounting/line_amount_types.rb} +3 -3
  215. data/lib/xero-ruby/models/{line_item.rb → accounting/line_item.rb} +19 -19
  216. data/lib/xero-ruby/models/{line_item_tracking.rb → accounting/line_item_tracking.rb} +10 -10
  217. data/lib/xero-ruby/models/{linked_transaction.rb → accounting/linked_transaction.rb} +25 -17
  218. data/lib/xero-ruby/models/{linked_transactions.rb → accounting/linked_transactions.rb} +8 -7
  219. data/lib/xero-ruby/models/{manual_journal.rb → accounting/manual_journal.rb} +27 -19
  220. data/lib/xero-ruby/models/{manual_journal_line.rb → accounting/manual_journal_line.rb} +13 -13
  221. data/lib/xero-ruby/models/{manual_journals.rb → accounting/manual_journals.rb} +8 -7
  222. data/lib/xero-ruby/models/{online_invoice.rb → accounting/online_invoice.rb} +7 -7
  223. data/lib/xero-ruby/models/{online_invoices.rb → accounting/online_invoices.rb} +8 -7
  224. data/lib/xero-ruby/models/{organisation.rb → accounting/organisation.rb} +107 -47
  225. data/lib/xero-ruby/models/{organisations.rb → accounting/organisations.rb} +8 -7
  226. data/lib/xero-ruby/models/{overpayment.rb → accounting/overpayment.rb} +33 -22
  227. data/lib/xero-ruby/models/{overpayments.rb → accounting/overpayments.rb} +8 -7
  228. data/lib/xero-ruby/models/{payment.rb → accounting/payment.rb} +55 -26
  229. data/lib/xero-ruby/models/{payment_delete.rb → accounting/payment_delete.rb} +7 -7
  230. data/lib/xero-ruby/models/{payment_service.rb → accounting/payment_service.rb} +12 -12
  231. data/lib/xero-ruby/models/{payment_services.rb → accounting/payment_services.rb} +8 -7
  232. data/lib/xero-ruby/models/{payment_term.rb → accounting/payment_term.rb} +9 -7
  233. data/lib/xero-ruby/models/{payment_term_type.rb → accounting/payment_term_type.rb} +3 -3
  234. data/lib/xero-ruby/models/{payments.rb → accounting/payments.rb} +8 -7
  235. data/lib/xero-ruby/models/{phone.rb → accounting/phone.rb} +16 -10
  236. data/lib/xero-ruby/models/{prepayment.rb → accounting/prepayment.rb} +34 -22
  237. data/lib/xero-ruby/models/{prepayments.rb → accounting/prepayments.rb} +8 -7
  238. data/lib/xero-ruby/models/{purchase.rb → accounting/purchase.rb} +10 -10
  239. data/lib/xero-ruby/models/{purchase_order.rb → accounting/purchase_order.rb} +42 -32
  240. data/lib/xero-ruby/models/{purchase_orders.rb → accounting/purchase_orders.rb} +8 -7
  241. data/lib/xero-ruby/models/{quote.rb → accounting/quote.rb} +54 -28
  242. data/lib/xero-ruby/models/{quote_line_amount_types.rb → accounting/quote_line_amount_types.rb} +3 -3
  243. data/lib/xero-ruby/models/{quote_status_codes.rb → accounting/quote_status_codes.rb} +3 -3
  244. data/lib/xero-ruby/models/{quotes.rb → accounting/quotes.rb} +8 -7
  245. data/lib/xero-ruby/models/{receipt.rb → accounting/receipt.rb} +31 -20
  246. data/lib/xero-ruby/models/{receipts.rb → accounting/receipts.rb} +8 -7
  247. data/lib/xero-ruby/models/{repeating_invoice.rb → accounting/repeating_invoice.rb} +29 -18
  248. data/lib/xero-ruby/models/{repeating_invoices.rb → accounting/repeating_invoices.rb} +8 -7
  249. data/lib/xero-ruby/models/{report.rb → accounting/report.rb} +14 -12
  250. data/lib/xero-ruby/models/{report_attribute.rb → accounting/report_attribute.rb} +9 -7
  251. data/lib/xero-ruby/models/{report_cell.rb → accounting/report_cell.rb} +9 -7
  252. data/lib/xero-ruby/models/{report_fields.rb → accounting/report_fields.rb} +10 -7
  253. data/lib/xero-ruby/models/{report_row.rb → accounting/report_row.rb} +10 -7
  254. data/lib/xero-ruby/models/{report_rows.rb → accounting/report_rows.rb} +11 -7
  255. data/lib/xero-ruby/models/{report_with_row.rb → accounting/report_with_row.rb} +15 -13
  256. data/lib/xero-ruby/models/{report_with_rows.rb → accounting/report_with_rows.rb} +8 -7
  257. data/lib/xero-ruby/models/{reports.rb → accounting/reports.rb} +8 -7
  258. data/lib/xero-ruby/models/{request_empty.rb → accounting/request_empty.rb} +7 -7
  259. data/lib/xero-ruby/models/{row_type.rb → accounting/row_type.rb} +3 -3
  260. data/lib/xero-ruby/models/{sales_tracking_category.rb → accounting/sales_tracking_category.rb} +8 -8
  261. data/lib/xero-ruby/models/{schedule.rb → accounting/schedule.rb} +23 -15
  262. data/lib/xero-ruby/models/{tax_component.rb → accounting/tax_component.rb} +10 -10
  263. data/lib/xero-ruby/models/{tax_rate.rb → accounting/tax_rate.rb} +98 -20
  264. data/lib/xero-ruby/models/{tax_rates.rb → accounting/tax_rates.rb} +8 -7
  265. data/lib/xero-ruby/models/{tax_type.rb → accounting/tax_type.rb} +7 -3
  266. data/lib/xero-ruby/models/{ten_nintey_nine_contact.rb → accounting/ten_nintey_nine_contact.rb} +28 -28
  267. data/lib/xero-ruby/models/{time_zone.rb → accounting/time_zone.rb} +3 -3
  268. data/lib/xero-ruby/models/{tracking_categories.rb → accounting/tracking_categories.rb} +8 -7
  269. data/lib/xero-ruby/models/{tracking_category.rb → accounting/tracking_category.rb} +15 -12
  270. data/lib/xero-ruby/models/{tracking_option.rb → accounting/tracking_option.rb} +13 -10
  271. data/lib/xero-ruby/models/{tracking_options.rb → accounting/tracking_options.rb} +8 -7
  272. data/lib/xero-ruby/models/{user.rb → accounting/user.rb} +20 -13
  273. data/lib/xero-ruby/models/{users.rb → accounting/users.rb} +8 -7
  274. data/lib/xero-ruby/models/{validation_error.rb → accounting/validation_error.rb} +7 -7
  275. data/lib/xero-ruby/models/assets/asset.rb +349 -0
  276. data/lib/xero-ruby/models/assets/asset_status.rb +38 -0
  277. data/lib/xero-ruby/models/assets/asset_status_query_param.rb +38 -0
  278. data/lib/xero-ruby/models/assets/asset_type.rb +274 -0
  279. data/lib/xero-ruby/models/assets/assets.rb +216 -0
  280. data/lib/xero-ruby/models/assets/book_depreciation_detail.rb +264 -0
  281. data/lib/xero-ruby/models/assets/book_depreciation_setting.rb +343 -0
  282. data/lib/xero-ruby/models/assets/error.rb +248 -0
  283. data/lib/xero-ruby/models/assets/field_validation_errors_element.rb +254 -0
  284. data/lib/xero-ruby/models/assets/pagination.rb +234 -0
  285. data/lib/xero-ruby/models/assets/resource_validation_errors_element.rb +244 -0
  286. data/lib/xero-ruby/models/assets/setting.rb +274 -0
  287. data/lib/xero-ruby/models/projects/amount.rb +214 -0
  288. data/lib/xero-ruby/models/projects/charge_type.rb +38 -0
  289. data/lib/xero-ruby/models/projects/currency_code.rb +199 -0
  290. data/lib/xero-ruby/models/projects/error.rb +214 -0
  291. data/lib/xero-ruby/models/{allocation.rb → projects/pagination.rb} +44 -48
  292. data/lib/xero-ruby/models/projects/project.rb +419 -0
  293. data/lib/xero-ruby/models/projects/project_create_or_update.rb +239 -0
  294. data/lib/xero-ruby/models/projects/project_patch.rb +209 -0
  295. data/lib/xero-ruby/models/projects/project_status.rb +37 -0
  296. data/lib/xero-ruby/models/projects/project_user.rb +224 -0
  297. data/lib/xero-ruby/models/projects/project_users.rb +216 -0
  298. data/lib/xero-ruby/models/projects/projects.rb +216 -0
  299. data/lib/xero-ruby/models/projects/task.rb +381 -0
  300. data/lib/xero-ruby/models/projects/task_create_or_update.rb +249 -0
  301. data/lib/xero-ruby/models/projects/tasks.rb +216 -0
  302. data/lib/xero-ruby/models/projects/time_entries.rb +216 -0
  303. data/lib/xero-ruby/models/projects/time_entry.rb +320 -0
  304. data/lib/xero-ruby/models/projects/time_entry_create_or_update.rb +264 -0
  305. data/lib/xero-ruby/version.rb +3 -3
  306. data/spec/{api → accounting/api}/accounting_api_spec.rb +44 -20
  307. data/spec/{models → accounting/models}/account_spec.rb +5 -5
  308. data/spec/{models → accounting/models}/account_type_spec.rb +5 -5
  309. data/spec/{models → accounting/models}/accounts_payable_spec.rb +5 -5
  310. data/spec/{models → accounting/models}/accounts_receivable_spec.rb +5 -5
  311. data/spec/{models → accounting/models}/accounts_spec.rb +5 -5
  312. data/spec/{models → accounting/models}/address_spec.rb +5 -5
  313. data/spec/{models → accounting/models}/allocation_spec.rb +5 -5
  314. data/spec/{models → accounting/models}/allocations_spec.rb +5 -5
  315. data/spec/{models → accounting/models}/attachment_spec.rb +5 -5
  316. data/spec/{models → accounting/models}/attachments_spec.rb +5 -5
  317. data/spec/{models → accounting/models}/balances_spec.rb +5 -5
  318. data/spec/{models → accounting/models}/bank_transaction_spec.rb +5 -5
  319. data/spec/{models → accounting/models}/bank_transactions_spec.rb +5 -5
  320. data/spec/{models → accounting/models}/bank_transfer_spec.rb +5 -5
  321. data/spec/{models → accounting/models}/bank_transfers_spec.rb +5 -5
  322. data/spec/{models → accounting/models}/batch_payment_details_spec.rb +5 -5
  323. data/spec/{models → accounting/models}/batch_payment_spec.rb +5 -5
  324. data/spec/{models → accounting/models}/batch_payments_spec.rb +5 -5
  325. data/spec/{models → accounting/models}/bill_spec.rb +5 -5
  326. data/spec/{models → accounting/models}/branding_theme_spec.rb +5 -5
  327. data/spec/{models → accounting/models}/branding_themes_spec.rb +5 -5
  328. data/spec/{models → accounting/models}/cis_org_setting_spec.rb +5 -5
  329. data/spec/{models → accounting/models}/cis_setting_spec.rb +5 -5
  330. data/spec/{models → accounting/models}/cis_settings_spec.rb +5 -5
  331. data/spec/{models → accounting/models}/contact_group_spec.rb +5 -5
  332. data/spec/{models → accounting/models}/contact_groups_spec.rb +5 -5
  333. data/spec/{models → accounting/models}/contact_person_spec.rb +5 -5
  334. data/spec/{models → accounting/models}/contact_spec.rb +5 -5
  335. data/spec/{models → accounting/models}/contacts_spec.rb +5 -5
  336. data/spec/{models → accounting/models}/country_code_spec.rb +5 -5
  337. data/spec/{models → accounting/models}/credit_note_spec.rb +11 -5
  338. data/spec/{models → accounting/models}/credit_notes_spec.rb +5 -5
  339. data/spec/{models → accounting/models}/currencies_spec.rb +5 -5
  340. data/spec/{models → accounting/models}/currency_code_spec.rb +5 -5
  341. data/spec/{models → accounting/models}/currency_spec.rb +5 -5
  342. data/spec/{models → accounting/models}/element_spec.rb +5 -5
  343. data/spec/{models → accounting/models}/employee_spec.rb +5 -5
  344. data/spec/{models → accounting/models}/employees_spec.rb +5 -5
  345. data/spec/{models → accounting/models}/error_spec.rb +5 -5
  346. data/spec/{models → accounting/models}/expense_claim_spec.rb +5 -5
  347. data/spec/{models → accounting/models}/expense_claims_spec.rb +5 -5
  348. data/spec/{models → accounting/models}/external_link_spec.rb +5 -5
  349. data/spec/{models → accounting/models}/history_record_spec.rb +5 -5
  350. data/spec/{models → accounting/models}/history_records_spec.rb +5 -5
  351. data/spec/{models → accounting/models}/invoice_reminder_spec.rb +5 -5
  352. data/spec/{models → accounting/models}/invoice_reminders_spec.rb +5 -5
  353. data/spec/{models → accounting/models}/invoice_spec.rb +6 -6
  354. data/spec/{models → accounting/models}/invoices_spec.rb +5 -5
  355. data/spec/{models → accounting/models}/item_spec.rb +5 -5
  356. data/spec/{models → accounting/models}/items_spec.rb +5 -5
  357. data/spec/{models → accounting/models}/journal_line_spec.rb +5 -5
  358. data/spec/{models → accounting/models}/journal_spec.rb +5 -5
  359. data/spec/{models → accounting/models}/journals_spec.rb +5 -5
  360. data/spec/{models → accounting/models}/line_amount_types_spec.rb +5 -5
  361. data/spec/{models → accounting/models}/line_item_spec.rb +5 -5
  362. data/spec/{models → accounting/models}/line_item_tracking_spec.rb +5 -5
  363. data/spec/{models → accounting/models}/linked_transaction_spec.rb +5 -5
  364. data/spec/{models → accounting/models}/linked_transactions_spec.rb +5 -5
  365. data/spec/{models → accounting/models}/manual_journal_line_spec.rb +5 -5
  366. data/spec/{models → accounting/models}/manual_journal_spec.rb +5 -5
  367. data/spec/{models → accounting/models}/manual_journals_spec.rb +5 -5
  368. data/spec/{models → accounting/models}/online_invoice_spec.rb +5 -5
  369. data/spec/{models → accounting/models}/online_invoices_spec.rb +5 -5
  370. data/spec/{models → accounting/models}/organisation_spec.rb +5 -5
  371. data/spec/{models → accounting/models}/organisations_spec.rb +5 -5
  372. data/spec/{models → accounting/models}/overpayment_spec.rb +5 -5
  373. data/spec/{models → accounting/models}/overpayments_spec.rb +5 -5
  374. data/spec/{models → accounting/models}/payment_delete_spec.rb +5 -5
  375. data/spec/{models → accounting/models}/payment_service_spec.rb +5 -5
  376. data/spec/{models → accounting/models}/payment_services_spec.rb +5 -5
  377. data/spec/{models → accounting/models}/payment_spec.rb +11 -5
  378. data/spec/{models → accounting/models}/payment_term_spec.rb +5 -5
  379. data/spec/{models → accounting/models}/payment_term_type_spec.rb +5 -5
  380. data/spec/{models → accounting/models}/payments_spec.rb +5 -5
  381. data/spec/{models → accounting/models}/phone_spec.rb +5 -5
  382. data/spec/{models → accounting/models}/prepayment_spec.rb +5 -5
  383. data/spec/{models → accounting/models}/prepayments_spec.rb +5 -5
  384. data/spec/{models → accounting/models}/purchase_order_spec.rb +5 -5
  385. data/spec/{models → accounting/models}/purchase_orders_spec.rb +5 -5
  386. data/spec/{models → accounting/models}/purchase_spec.rb +5 -5
  387. data/spec/{models → accounting/models}/quote_line_amount_types_spec.rb +5 -5
  388. data/spec/{models → accounting/models}/quote_spec.rb +5 -5
  389. data/spec/{models → accounting/models}/quote_status_codes_spec.rb +5 -5
  390. data/spec/{models → accounting/models}/quotes_spec.rb +5 -5
  391. data/spec/{models → accounting/models}/receipt_spec.rb +5 -5
  392. data/spec/{models → accounting/models}/receipts_spec.rb +5 -5
  393. data/spec/{models → accounting/models}/repeating_invoice_spec.rb +5 -5
  394. data/spec/{models → accounting/models}/repeating_invoices_spec.rb +5 -5
  395. data/spec/{models → accounting/models}/report_attribute_spec.rb +5 -5
  396. data/spec/{models → accounting/models}/report_cell_spec.rb +5 -5
  397. data/spec/{models → accounting/models}/report_fields_spec.rb +5 -5
  398. data/spec/{models → accounting/models}/report_row_spec.rb +5 -5
  399. data/spec/{models → accounting/models}/report_rows_spec.rb +5 -5
  400. data/spec/{models → accounting/models}/report_spec.rb +5 -5
  401. data/spec/{models → accounting/models}/report_with_row_spec.rb +5 -5
  402. data/spec/{models → accounting/models}/report_with_rows_spec.rb +5 -5
  403. data/spec/{models → accounting/models}/reports_spec.rb +5 -5
  404. data/spec/{models → accounting/models}/request_empty_spec.rb +5 -5
  405. data/spec/{models → accounting/models}/row_type_spec.rb +5 -5
  406. data/spec/{models → accounting/models}/sales_tracking_category_spec.rb +5 -5
  407. data/spec/{models → accounting/models}/schedule_spec.rb +5 -5
  408. data/spec/{models → accounting/models}/tax_component_spec.rb +5 -5
  409. data/spec/{models → accounting/models}/tax_rate_spec.rb +6 -6
  410. data/spec/{models → accounting/models}/tax_rates_spec.rb +5 -5
  411. data/spec/{models → accounting/models}/tax_type_spec.rb +5 -5
  412. data/spec/{models → accounting/models}/ten_nintey_nine_contact_spec.rb +5 -5
  413. data/spec/{models → accounting/models}/time_zone_spec.rb +5 -5
  414. data/spec/{models → accounting/models}/tracking_categories_spec.rb +5 -5
  415. data/spec/{models → accounting/models}/tracking_category_spec.rb +5 -5
  416. data/spec/{models → accounting/models}/tracking_option_spec.rb +5 -5
  417. data/spec/{models → accounting/models}/tracking_options_spec.rb +5 -5
  418. data/spec/{models → accounting/models}/user_spec.rb +5 -5
  419. data/spec/{models → accounting/models}/users_spec.rb +5 -5
  420. data/spec/{models → accounting/models}/validation_error_spec.rb +5 -5
  421. data/spec/api_client_spec.rb +5 -43
  422. data/spec/assets/api/asset_api_spec.rb +116 -0
  423. data/spec/assets/models/asset_spec.rb +125 -0
  424. data/spec/assets/models/asset_status_query_param_spec.rb +35 -0
  425. data/spec/assets/models/asset_status_spec.rb +35 -0
  426. data/spec/assets/models/asset_type_spec.rb +77 -0
  427. data/spec/assets/models/assets_spec.rb +47 -0
  428. data/spec/assets/models/book_depreciation_detail_spec.rb +77 -0
  429. data/spec/assets/models/book_depreciation_setting_spec.rb +95 -0
  430. data/spec/assets/models/error_spec.rb +65 -0
  431. data/spec/assets/models/field_validation_errors_element_spec.rb +71 -0
  432. data/spec/assets/models/pagination_spec.rb +59 -0
  433. data/spec/assets/models/resource_validation_errors_element_spec.rb +65 -0
  434. data/spec/assets/models/setting_spec.rb +83 -0
  435. data/spec/configuration_spec.rb +7 -23
  436. data/spec/projects/api/project_api_spec.rb +229 -0
  437. data/spec/projects/models/amount_spec.rb +47 -0
  438. data/spec/projects/models/charge_type_spec.rb +35 -0
  439. data/spec/projects/models/currency_code_spec.rb +35 -0
  440. data/spec/projects/models/error_spec.rb +47 -0
  441. data/spec/projects/models/pagination_spec.rb +59 -0
  442. data/spec/projects/models/project_create_or_update_spec.rb +59 -0
  443. data/spec/projects/models/project_patch_spec.rb +41 -0
  444. data/spec/projects/models/project_spec.rb +167 -0
  445. data/spec/projects/models/project_status_spec.rb +35 -0
  446. data/spec/projects/models/project_user_spec.rb +53 -0
  447. data/spec/projects/models/project_users_spec.rb +47 -0
  448. data/spec/projects/models/projects_spec.rb +47 -0
  449. data/spec/projects/models/task_create_or_update_spec.rb +59 -0
  450. data/spec/projects/models/task_spec.rb +129 -0
  451. data/spec/projects/models/tasks_spec.rb +47 -0
  452. data/spec/projects/models/time_entries_spec.rb +47 -0
  453. data/spec/projects/models/time_entry_create_or_update_spec.rb +65 -0
  454. data/spec/projects/models/time_entry_spec.rb +93 -0
  455. data/spec/spec_helper.rb +2 -2
  456. data/xero-ruby.gem +0 -0
  457. data/xero-ruby.gemspec +4 -4
  458. metadata +611 -482
  459. data/docs/Allocation.md +0 -21
  460. data/lib/.DS_Store +0 -0
  461. data/pkg/xero-ruby-0.1.3.gem +0 -0
  462. data/pkg/xero-ruby-0.2.2.gem +0 -0
  463. data/pkg/xero-ruby-0.2.3.gem +0 -0
@@ -3,10 +3,10 @@
3
3
 
4
4
  #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
5
 
6
- The version of the OpenAPI document: 2.0.6
6
+ The version of the OpenAPI document: 2.2.2
7
7
  Contact: api@xero.com
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.2.0
9
+ OpenAPI Generator version: 4.3.1
10
10
 
11
11
  =end
12
12
 
@@ -14,7 +14,8 @@ require 'date'
14
14
  require 'json'
15
15
  require 'logger'
16
16
  require 'tempfile'
17
- require 'typhoeus'
17
+ require 'find'
18
+ require 'faraday'
18
19
 
19
20
  module XeroRuby
20
21
  class ApiClient
@@ -28,7 +29,11 @@ module XeroRuby
28
29
 
29
30
  # Initializes the ApiClient
30
31
  # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
31
- def initialize(config = Configuration.default)
32
+ def initialize(config: Configuration.default, credentials: {})
33
+ @client_id = credentials[:client_id]
34
+ @client_secret = credentials[:client_secret]
35
+ @redirect_uri = credentials[:redirect_uri]
36
+ @scopes = credentials[:scopes]
32
37
  @config = config
33
38
  @user_agent = "xero-ruby-#{VERSION}"
34
39
  @default_headers = {
@@ -37,8 +42,90 @@ module XeroRuby
37
42
  }
38
43
  end
39
44
 
40
- def self.default
41
- @@default ||= ApiClient.new
45
+ def authorization_url
46
+ url = "#{@config.login_url}?response_type=code&client_id=#{@client_id}&redirect_uri=#{@redirect_uri}&scope=#{@scopes}"
47
+ return url
48
+ end
49
+
50
+ def accounting_api
51
+ @config.base_url = @config.accounting_url
52
+ XeroRuby::AccountingApi.new(self)
53
+ end
54
+
55
+ def asset_api
56
+ @config.base_url = @config.asset_url
57
+ XeroRuby::AssetApi.new(self)
58
+ end
59
+
60
+ def project_api
61
+ @config.base_url = @config.project_url
62
+ XeroRuby::ProjectApi.new(self)
63
+ end
64
+
65
+ # Token Helpers
66
+ def token_set
67
+ XeroRuby.configure.token_set
68
+ end
69
+
70
+ def access_token
71
+ XeroRuby.configure.access_token
72
+ end
73
+
74
+ def set_token_set(token_set)
75
+ # helper to set the token_set on a client once the user has y
76
+ # has a valid token set ( access_token & refresh_token )
77
+ XeroRuby.configure.token_set = token_set
78
+ set_access_token(token_set['access_token'])
79
+ end
80
+
81
+ def set_access_token(access_token)
82
+ XeroRuby.configure.access_token = access_token
83
+ end
84
+
85
+ def get_token_set_from_callback(params)
86
+ data = {
87
+ grant_type: 'authorization_code',
88
+ code: params['code'],
89
+ redirect_uri: @redirect_uri
90
+ }
91
+ return token_request(data)
92
+ end
93
+
94
+ def refresh_token_set(token_set)
95
+ data = {
96
+ grant_type: 'refresh_token',
97
+ refresh_token: token_set['refresh_token']
98
+ }
99
+ return token_request(data)
100
+ end
101
+
102
+ def token_request(data)
103
+ response = Faraday.post(@config.token_url) do |req|
104
+ req.headers['Authorization'] = "Basic " + Base64.strict_encode64("#{@client_id}:#{@client_secret}")
105
+ req.headers['Content-Type'] = 'application/x-www-form-urlencoded'
106
+ req.body = URI.encode_www_form(data)
107
+ end
108
+ body = JSON.parse(response.body)
109
+ set_token_set(body)
110
+ return body
111
+ end
112
+
113
+ # Connection heplers
114
+ def connections
115
+ response = Faraday.get('https://api.xero.com/connections') do |req|
116
+ req.headers['Authorization'] = "Bearer #{access_token}"
117
+ req.headers['Content-Type'] = 'application/json'
118
+ end
119
+ body = JSON.parse(response.body)
120
+ return body
121
+ end
122
+
123
+ def disconnect(connection_id)
124
+ Faraday.delete("https://api.xero.com/connections/#{connection_id}") do |req|
125
+ req.headers['Authorization'] = "Bearer #{access_token}"
126
+ req.headers['Content-Type'] = 'application/json'
127
+ end
128
+ return connections
42
129
  end
43
130
 
44
131
  # Call an API with given options.
@@ -46,26 +133,46 @@ module XeroRuby
46
133
  # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
47
134
  # the data deserialized from response body (could be nil), response status code and response headers.
48
135
  def call_api(http_method, path, opts = {})
49
- request = build_request(http_method, path, opts)
50
- response = request.run
136
+ ssl_options = {
137
+ :ca_file => @config.ssl_ca_file,
138
+ :verify => @config.ssl_verify,
139
+ :verify_mode => @config.ssl_verify_mode,
140
+ :client_cert => @config.ssl_client_cert,
141
+ :client_key => @config.ssl_client_key
142
+ }
51
143
 
52
- if @config.debugging
53
- @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
144
+ connection = Faraday.new(:url => config.base_url, :ssl => ssl_options) do |conn|
145
+ conn.basic_auth(config.username, config.password)
146
+ if opts[:header_params]["Content-Type"] == "multipart/form-data"
147
+ conn.request :multipart
148
+ conn.request :url_encoded
149
+ end
150
+ conn.adapter(Faraday.default_adapter)
54
151
  end
55
152
 
56
- unless response.success?
57
- if response.timed_out?
58
- fail ApiError.new('Connection timed out')
59
- elsif response.code == 0
60
- # Errors from libcurl will be made visible here
61
- fail ApiError.new(:code => 0,
62
- :message => response.return_message)
63
- else
64
- fail ApiError.new(:code => response.code,
65
- :response_headers => response.headers,
66
- :response_body => response.body),
67
- response.status_message
153
+ begin
154
+ response = connection.public_send(http_method.to_sym.downcase) do |req|
155
+ build_request(http_method, path, req, opts)
156
+ end
157
+
158
+ if @config.debugging
159
+ @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
68
160
  end
161
+
162
+ unless response.success?
163
+ if response.status == 0
164
+ # Errors from libcurl will be made visible here
165
+ fail ApiError.new(:code => 0,
166
+ :message => response.return_message)
167
+ else
168
+ fail ApiError.new(:code => response.status,
169
+ :response_headers => response.headers,
170
+ :response_body => response.body),
171
+ response.reason_phrase
172
+ end
173
+ end
174
+ rescue Faraday::TimeoutError
175
+ fail ApiError.new('Connection timed out')
69
176
  end
70
177
 
71
178
  if opts[:return_type]
@@ -73,7 +180,7 @@ module XeroRuby
73
180
  else
74
181
  data = nil
75
182
  end
76
- return data, response.code, response.headers
183
+ return data, response.status, response.headers
77
184
  end
78
185
 
79
186
  # Builds the HTTP request
@@ -85,7 +192,7 @@ module XeroRuby
85
192
  # @option opts [Hash] :form_params Query parameters
86
193
  # @option opts [Object] :body HTTP body (JSON/XML)
87
194
  # @return [Typhoeus::Request] A Typhoeus Request
88
- def build_request(http_method, path, opts = {})
195
+ def build_request(http_method, path, request, opts = {})
89
196
  url = build_request_url(path)
90
197
  http_method = http_method.to_sym.downcase
91
198
 
@@ -95,25 +202,15 @@ module XeroRuby
95
202
 
96
203
  update_params_for_auth! header_params, query_params, opts[:auth_names]
97
204
 
98
- # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
99
- _verify_ssl_host = @config.verify_ssl_host ? 2 : 0
100
-
101
205
  req_opts = {
102
206
  :method => http_method,
103
207
  :headers => header_params,
104
208
  :params => query_params,
105
209
  :params_encoding => @config.params_encoding,
106
210
  :timeout => @config.timeout,
107
- :ssl_verifypeer => @config.verify_ssl,
108
- :ssl_verifyhost => _verify_ssl_host,
109
- :sslcert => @config.cert_file,
110
- :sslkey => @config.key_file,
111
211
  :verbose => @config.debugging
112
212
  }
113
213
 
114
- # set custom cert, if provided
115
- req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
116
-
117
214
  if [:post, :patch, :put, :delete].include?(http_method)
118
215
  req_body = build_request_body(header_params, form_params, opts[:body])
119
216
  req_opts.update :body => req_body
@@ -121,8 +218,10 @@ module XeroRuby
121
218
  @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
122
219
  end
123
220
  end
124
-
125
- request = Typhoeus::Request.new(url, req_opts)
221
+ request.headers = header_params
222
+ request.body = req_body
223
+ request.url url
224
+ request.params = query_params
126
225
  download_file(request) if opts[:return_type] == 'File'
127
226
  request
128
227
  end
@@ -135,13 +234,17 @@ module XeroRuby
135
234
  # @return [String] HTTP body data in the form of string
136
235
  def build_request_body(header_params, form_params, body)
137
236
  # http form
138
- if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
139
- header_params['Content-Type'] == 'multipart/form-data'
237
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded'
238
+ data = URI.encode_www_form(form_params)
239
+ elsif header_params['Content-Type'] == 'multipart/form-data'
140
240
  data = {}
141
241
  form_params.each do |key, value|
142
242
  case value
143
- when ::File, ::Array, nil
144
- # let typhoeus handle File, Array and nil parameters
243
+ when ::File, ::Tempfile
244
+ # TODO hardcode to application/octet-stream, need better way to detect content type
245
+ data[key] = Faraday::UploadIO.new(value.path, 'application/octet-stream', value.path)
246
+ when ::Array, nil
247
+ # let Faraday handle Array and nil parameters
145
248
  data[key] = value
146
249
  else
147
250
  data[key] = value.to_s
@@ -196,9 +299,9 @@ module XeroRuby
196
299
  else
197
300
  raise e
198
301
  end
199
- end
302
+ end
200
303
 
201
- convert_to_type data, return_type
304
+ convert_to_type(data, return_type)
202
305
  end
203
306
 
204
307
  # Convert data to the given return type.
@@ -236,9 +339,34 @@ module XeroRuby
236
339
  data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
237
340
  end
238
341
  else
239
- # models, e.g. Pet
240
- XeroRuby.const_get(return_type).build_from_hash(data)
342
+ api_set = api_set_prefix(return_type)
343
+ case api_set
344
+ when 'accounting'
345
+ XeroRuby::Accounting.const_get(return_type).build_from_hash(data)
346
+ when 'assets'
347
+ XeroRuby::Assets.const_get(return_type).build_from_hash(data)
348
+ when 'projects'
349
+ XeroRuby::Projects.const_get(return_type).build_from_hash(data)
350
+ # when 'newapiset' # add new namespace
351
+ # XeroRuby::<NewAPISet>.const_get(return_type).build_from_hash(data)
352
+ else
353
+ XeroRuby::Accounting.const_get(return_type).build_from_hash(data)
354
+ end
355
+ end
356
+ end
357
+
358
+ # Traverses the model tree to find the model's namespacing
359
+ # based on the deserializing model/return_type name
360
+ def api_set_prefix(return_type)
361
+ api_set = ''
362
+ Find.find("#{File.dirname(__FILE__)}/models/") do |path|
363
+ model_path = path.split('/')
364
+ matching_name = model_path.last.gsub('.rb','').gsub("_",'')
365
+ if return_type.downcase === matching_name
366
+ api_set = path.split('/')[-2]
367
+ end
241
368
  end
369
+ return api_set
242
370
  end
243
371
 
244
372
  # Save response body into a file in (the defined) temporary folder, using the filename
@@ -3,10 +3,10 @@
3
3
 
4
4
  #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
5
 
6
- The version of the OpenAPI document: 2.0.6
6
+ The version of the OpenAPI document: 2.2.2
7
7
  Contact: api@xero.com
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.2.0
9
+ OpenAPI Generator version: 4.3.1
10
10
 
11
11
  =end
12
12
 
@@ -3,10 +3,10 @@
3
3
 
4
4
  #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
5
 
6
- The version of the OpenAPI document: 2.0.6
6
+ The version of the OpenAPI document: 2.2.2
7
7
  Contact: api@xero.com
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.2.0
9
+ OpenAPI Generator version: 4.3.1
10
10
 
11
11
  =end
12
12
 
@@ -18,8 +18,18 @@ module XeroRuby
18
18
  # Defines url host
19
19
  attr_accessor :host
20
20
 
21
- # Defines url base path
21
+ # Defines url base path & url for overwriting
22
22
  attr_accessor :base_path
23
+ attr_accessor :base_url
24
+
25
+ # Defines url for identity routes
26
+ attr_accessor :login_url
27
+ attr_accessor :token_url
28
+
29
+ # Defines base paths for seperate API's
30
+ attr_accessor :accounting_url
31
+ attr_accessor :asset_url
32
+ attr_accessor :project_url
23
33
 
24
34
  # Defines API keys used with API Key authentications.
25
35
  #
@@ -50,6 +60,9 @@ module XeroRuby
50
60
  # Defines the access token (Bearer) used with OAuth2.
51
61
  attr_accessor :access_token
52
62
 
63
+ # Defines the token set used with OAuth2. May include id/access/refresh token & other meta info.
64
+ attr_accessor :token_set
65
+
53
66
  # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response
54
67
  # details will be logged with `logger.debug` (see the `logger` attribute).
55
68
  # Default to false.
@@ -86,33 +99,28 @@ module XeroRuby
86
99
  # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.
87
100
  #
88
101
  # @return [true, false]
89
- attr_accessor :verify_ssl
102
+ attr_accessor :ssl_verify
90
103
 
91
104
  ### TLS/SSL setting
92
- # Set this to false to skip verifying SSL host name
93
- # Default to true.
105
+ # Any `OpenSSL::SSL::` constant (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL.html)
94
106
  #
95
107
  # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.
96
108
  #
97
- # @return [true, false]
98
- attr_accessor :verify_ssl_host
109
+ attr_accessor :ssl_verify_mode
99
110
 
100
111
  ### TLS/SSL setting
101
112
  # Set this to customize the certificate file to verify the peer.
102
113
  #
103
114
  # @return [String] the path to the certificate file
104
- #
105
- # @see The `cainfo` option of Typhoeus, `--cert` option of libcurl. Related source code:
106
- # https://github.com/typhoeus/typhoeus/blob/master/lib/typhoeus/easy_factory.rb#L145
107
- attr_accessor :ssl_ca_cert
115
+ attr_accessor :ssl_ca_file
108
116
 
109
117
  ### TLS/SSL setting
110
118
  # Client certificate file (for client certificate)
111
- attr_accessor :cert_file
119
+ attr_accessor :ssl_client_cert
112
120
 
113
121
  ### TLS/SSL setting
114
122
  # Client private key file (for client certificate)
115
- attr_accessor :key_file
123
+ attr_accessor :ssl_client_key
116
124
 
117
125
  # Set this to customize parameters encoding of array parameter with multi collectionFormat.
118
126
  # Default to nil.
@@ -129,15 +137,20 @@ module XeroRuby
129
137
  @scheme = 'https'
130
138
  @host = 'api.xero.com'
131
139
  @base_path = '/api.xro/2.0'
140
+ @login_url = 'https://login.xero.com/identity/connect/authorize'
141
+ @token_url = 'https://identity.xero.com/connect/token'
142
+ @accounting_url = 'https://api.xero.com/api.xro/2.0'
143
+ @asset_url = 'https://api.xero.com/assets.xro/1.0'
144
+ @project_url = 'https://api.xero.com/projects.xro/2.0/'
132
145
  @api_key = {}
133
146
  @api_key_prefix = {}
134
147
  @timeout = 0
135
148
  @client_side_validation = true
136
- @verify_ssl = true
137
- @verify_ssl_host = true
138
- @params_encoding = nil
139
- @cert_file = nil
140
- @key_file = nil
149
+ @ssl_verify = true
150
+ @ssl_verify_mode = nil
151
+ @ssl_ca_file = nil
152
+ @ssl_client_cert = nil
153
+ @ssl_client_key = nil
141
154
  @debugging = false
142
155
  @inject_format = false
143
156
  @force_ending_format = false
@@ -171,10 +184,10 @@ module XeroRuby
171
184
  @base_path = '' if @base_path == '/'
172
185
  end
173
186
 
174
- def base_url
175
- "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '')
187
+ def base_url=(api_url)
188
+ @base_url = api_url
176
189
  end
177
-
190
+
178
191
  # Gets API key (with prefix if set).
179
192
  # @param [String] param_name the parameter name of API key auth
180
193
  def api_key_with_prefix(param_name)
@@ -3,76 +3,112 @@
3
3
 
4
4
  #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
5
 
6
- The version of the OpenAPI document: 2.0.6
6
+ The version of the OpenAPI document: 2.2.2
7
7
  Contact: api@xero.com
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.2.0
9
+ OpenAPI Generator version: 4.3.1
10
10
 
11
11
  =end
12
12
 
13
13
  require 'time'
14
14
  require 'date'
15
15
 
16
- module XeroRuby
16
+ module XeroRuby::Accounting
17
17
  class Account
18
18
  # Customer defined alpha numeric account code e.g 200 or SALES (max length = 10)
19
19
  attr_accessor :code
20
-
20
+
21
21
  # Name of account (max length = 150)
22
22
  attr_accessor :name
23
-
23
+
24
24
  # The Xero identifier for an account – specified as a string following the endpoint name e.g. /297c2dc5-cc47-4afd-8ec8-74990b8761e9
25
25
  attr_accessor :account_id
26
+
26
27
 
27
28
  attr_accessor :type
28
-
29
+
29
30
  # For bank accounts only (Account Type BANK)
30
31
  attr_accessor :bank_account_number
31
-
32
+
32
33
  # Accounts with a status of ACTIVE can be updated to ARCHIVED. See Account Status Codes
33
34
  attr_accessor :status
34
-
35
+ ACTIVE = "ACTIVE".freeze
36
+ ARCHIVED = "ARCHIVED".freeze
37
+ DELETED = "DELETED".freeze
38
+
35
39
  # Description of the Account. Valid for all types of accounts except bank accounts (max length = 4000)
36
40
  attr_accessor :description
37
-
41
+
38
42
  # For bank accounts only. See Bank Account types
39
43
  attr_accessor :bank_account_type
44
+ BANK = "BANK".freeze
45
+ CREDITCARD = "CREDITCARD".freeze
46
+ PAYPAL = "PAYPAL".freeze
47
+ NONE = "NONE".freeze
48
+ EMPTY = "".freeze
49
+
40
50
 
41
51
  attr_accessor :currency_code
42
-
52
+
43
53
  # The tax type from TaxRates
44
54
  attr_accessor :tax_type
45
-
55
+
46
56
  # Boolean – describes whether account can have payments applied to it
47
57
  attr_accessor :enable_payments_to_account
48
-
58
+
49
59
  # Boolean – describes whether account code is available for use with expense claims
50
60
  attr_accessor :show_in_expense_claims
51
-
61
+
52
62
  # See Account Class Types
53
63
  attr_accessor :_class
54
-
64
+ ASSET = "ASSET".freeze
65
+ EQUITY = "EQUITY".freeze
66
+ EXPENSE = "EXPENSE".freeze
67
+ LIABILITY = "LIABILITY".freeze
68
+ REVENUE = "REVENUE".freeze
69
+
55
70
  # If this is a system account then this element is returned. See System Account types. Note that non-system accounts may have this element set as either “” or null.
56
71
  attr_accessor :system_account
57
-
72
+ DEBTORS = "DEBTORS".freeze
73
+ CREDITORS = "CREDITORS".freeze
74
+ BANKCURRENCYGAIN = "BANKCURRENCYGAIN".freeze
75
+ GST = "GST".freeze
76
+ GSTONIMPORTS = "GSTONIMPORTS".freeze
77
+ HISTORICAL = "HISTORICAL".freeze
78
+ REALISEDCURRENCYGAIN = "REALISEDCURRENCYGAIN".freeze
79
+ RETAINEDEARNINGS = "RETAINEDEARNINGS".freeze
80
+ ROUNDING = "ROUNDING".freeze
81
+ TRACKINGTRANSFERS = "TRACKINGTRANSFERS".freeze
82
+ UNPAIDEXPCLM = "UNPAIDEXPCLM".freeze
83
+ UNREALISEDCURRENCYGAIN = "UNREALISEDCURRENCYGAIN".freeze
84
+ WAGEPAYABLES = "WAGEPAYABLES".freeze
85
+ CISASSETS = "CISASSETS".freeze
86
+ CISASSET = "CISASSET".freeze
87
+ CISLABOUR = "CISLABOUR".freeze
88
+ CISLABOUREXPENSE = "CISLABOUREXPENSE".freeze
89
+ CISLABOURINCOME = "CISLABOURINCOME".freeze
90
+ CISLIABILITY = "CISLIABILITY".freeze
91
+ CISMATERIALS = "CISMATERIALS".freeze
92
+ EMPTY = "".freeze
93
+
58
94
  # Shown if set
59
95
  attr_accessor :reporting_code
60
-
96
+
61
97
  # Shown if set
62
98
  attr_accessor :reporting_code_name
63
-
99
+
64
100
  # boolean to indicate if an account has an attachment (read only)
65
101
  attr_accessor :has_attachments
66
-
102
+
67
103
  # Last modified date UTC format
68
104
  attr_accessor :updated_date_utc
69
-
105
+
70
106
  # Boolean – describes whether the account is shown in the watchlist widget on the dashboard
71
107
  attr_accessor :add_to_watchlist
72
-
108
+
73
109
  # Displays array of validation error messages from the API
74
110
  attr_accessor :validation_errors
75
-
111
+
76
112
  class EnumAttributeValidator
77
113
  attr_reader :datatype
78
114
  attr_reader :allowable_values
@@ -151,13 +187,13 @@ module XeroRuby
151
187
  # @param [Hash] attributes Model attributes in the form of hash
152
188
  def initialize(attributes = {})
153
189
  if (!attributes.is_a?(Hash))
154
- fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Account` initialize method"
190
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Accounting::Account` initialize method"
155
191
  end
156
192
 
157
193
  # check to see if the attribute exists and convert string to symbol for hash key
158
194
  attributes = attributes.each_with_object({}) { |(k, v), h|
159
195
  if (!self.class.attribute_map.key?(k.to_sym))
160
- fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Account`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
196
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Accounting::Account`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
161
197
  end
162
198
  h[k.to_sym] = v
163
199
  }
@@ -228,6 +264,8 @@ module XeroRuby
228
264
 
229
265
  if attributes.key?(:'has_attachments')
230
266
  self.has_attachments = attributes[:'has_attachments']
267
+ else
268
+ self.has_attachments = false
231
269
  end
232
270
 
233
271
  if attributes.key?(:'updated_date_utc')
@@ -439,7 +477,7 @@ module XeroRuby
439
477
  end
440
478
  end
441
479
  else # model
442
- XeroRuby.const_get(type).build_from_hash(value)
480
+ XeroRuby::Accounting.const_get(type).build_from_hash(value)
443
481
  end
444
482
  end
445
483