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.
- checksums.yaml +4 -4
- data/CODE_OF_CONDUCT.md +76 -0
- data/CONTRIBUTING.md +82 -0
- data/Gemfile.lock +68 -0
- data/LICENSE +21 -0
- data/README.md +132 -438
- data/docs/{Account.md → accounting/Account.md} +5 -5
- data/docs/accounting/AccountType.md +16 -0
- data/docs/{AccountingApi.md → accounting/AccountingApi.md} +4973 -1782
- data/docs/{Accounts.md → accounting/Accounts.md} +3 -3
- data/docs/{AccountsPayable.md → accounting/AccountsPayable.md} +3 -3
- data/docs/{AccountsReceivable.md → accounting/AccountsReceivable.md} +3 -3
- data/docs/{Address.md → accounting/Address.md} +3 -3
- data/docs/accounting/Allocation.md +31 -0
- data/docs/{Allocations.md → accounting/Allocations.md} +3 -3
- data/docs/{Attachment.md → accounting/Attachment.md} +3 -3
- data/docs/{Attachments.md → accounting/Attachments.md} +3 -3
- data/docs/{Balances.md → accounting/Balances.md} +3 -3
- data/docs/{BankTransaction.md → accounting/BankTransaction.md} +5 -5
- data/docs/{BankTransactions.md → accounting/BankTransactions.md} +3 -3
- data/docs/{BankTransfer.md → accounting/BankTransfer.md} +6 -6
- data/docs/{BankTransfers.md → accounting/BankTransfers.md} +3 -3
- data/docs/{BatchPayment.md → accounting/BatchPayment.md} +4 -4
- data/docs/{BatchPaymentDetails.md → accounting/BatchPaymentDetails.md} +3 -3
- data/docs/{BatchPayments.md → accounting/BatchPayments.md} +3 -3
- data/docs/{Bill.md → accounting/Bill.md} +3 -3
- data/docs/{BrandingTheme.md → accounting/BrandingTheme.md} +3 -3
- data/docs/{BrandingThemes.md → accounting/BrandingThemes.md} +3 -3
- data/docs/{CISOrgSetting.md → accounting/CISOrgSetting.md} +3 -3
- data/docs/{CISSetting.md → accounting/CISSetting.md} +3 -3
- data/docs/{CISSettings.md → accounting/CISSettings.md} +3 -3
- data/docs/{Contact.md → accounting/Contact.md} +7 -7
- data/docs/{ContactGroup.md → accounting/ContactGroup.md} +3 -3
- data/docs/{ContactGroups.md → accounting/ContactGroups.md} +3 -3
- data/docs/{ContactPerson.md → accounting/ContactPerson.md} +3 -3
- data/docs/{Contacts.md → accounting/Contacts.md} +3 -3
- data/docs/accounting/CountryCode.md +16 -0
- data/docs/{CreditNote.md → accounting/CreditNote.md} +9 -7
- data/docs/{CreditNotes.md → accounting/CreditNotes.md} +3 -3
- data/docs/{Currencies.md → accounting/Currencies.md} +3 -3
- data/docs/{Currency.md → accounting/Currency.md} +3 -3
- data/docs/accounting/CurrencyCode.md +16 -0
- data/docs/{Element.md → accounting/Element.md} +3 -3
- data/docs/{Employee.md → accounting/Employee.md} +3 -3
- data/docs/{Employees.md → accounting/Employees.md} +3 -3
- data/docs/{Error.md → accounting/Error.md} +3 -3
- data/docs/{ExpenseClaim.md → accounting/ExpenseClaim.md} +3 -3
- data/docs/{ExpenseClaims.md → accounting/ExpenseClaims.md} +3 -3
- data/docs/{ExternalLink.md → accounting/ExternalLink.md} +3 -3
- data/docs/{HistoryRecord.md → accounting/HistoryRecord.md} +3 -3
- data/docs/{HistoryRecords.md → accounting/HistoryRecords.md} +3 -3
- data/docs/{Invoice.md → accounting/Invoice.md} +7 -7
- data/docs/{InvoiceReminder.md → accounting/InvoiceReminder.md} +3 -3
- data/docs/{InvoiceReminders.md → accounting/InvoiceReminders.md} +3 -3
- data/docs/{Invoices.md → accounting/Invoices.md} +3 -3
- data/docs/{Item.md → accounting/Item.md} +3 -3
- data/docs/{Items.md → accounting/Items.md} +3 -3
- data/docs/{Journal.md → accounting/Journal.md} +4 -4
- data/docs/{JournalLine.md → accounting/JournalLine.md} +3 -3
- data/docs/{Journals.md → accounting/Journals.md} +3 -3
- data/docs/accounting/LineAmountTypes.md +16 -0
- data/docs/{LineItem.md → accounting/LineItem.md} +3 -3
- data/docs/{LineItemTracking.md → accounting/LineItemTracking.md} +3 -3
- data/docs/{LinkedTransaction.md → accounting/LinkedTransaction.md} +3 -3
- data/docs/{LinkedTransactions.md → accounting/LinkedTransactions.md} +3 -3
- data/docs/{ManualJournal.md → accounting/ManualJournal.md} +5 -5
- data/docs/{ManualJournalLine.md → accounting/ManualJournalLine.md} +3 -3
- data/docs/{ManualJournals.md → accounting/ManualJournals.md} +3 -3
- data/docs/{OnlineInvoice.md → accounting/OnlineInvoice.md} +3 -3
- data/docs/{OnlineInvoices.md → accounting/OnlineInvoices.md} +3 -3
- data/docs/{Organisation.md → accounting/Organisation.md} +5 -3
- data/docs/{Organisations.md → accounting/Organisations.md} +3 -3
- data/docs/{Overpayment.md → accounting/Overpayment.md} +5 -5
- data/docs/{Overpayments.md → accounting/Overpayments.md} +3 -3
- data/docs/{Payment.md → accounting/Payment.md} +9 -7
- data/docs/{PaymentDelete.md → accounting/PaymentDelete.md} +3 -3
- data/docs/{PaymentService.md → accounting/PaymentService.md} +3 -3
- data/docs/{PaymentServices.md → accounting/PaymentServices.md} +3 -3
- data/docs/{PaymentTerm.md → accounting/PaymentTerm.md} +3 -3
- data/docs/{PaymentTermType.md → accounting/PaymentTermType.md} +3 -3
- data/docs/{Payments.md → accounting/Payments.md} +3 -3
- data/docs/{Phone.md → accounting/Phone.md} +3 -3
- data/docs/{Prepayment.md → accounting/Prepayment.md} +5 -5
- data/docs/{Prepayments.md → accounting/Prepayments.md} +3 -3
- data/docs/{Purchase.md → accounting/Purchase.md} +3 -3
- data/docs/{PurchaseOrder.md → accounting/PurchaseOrder.md} +5 -5
- data/docs/{PurchaseOrders.md → accounting/PurchaseOrders.md} +3 -3
- data/docs/{Quote.md → accounting/Quote.md} +8 -4
- data/docs/{QuoteLineAmountTypes.md → accounting/QuoteLineAmountTypes.md} +3 -3
- data/docs/{QuoteStatusCodes.md → accounting/QuoteStatusCodes.md} +3 -3
- data/docs/{Quotes.md → accounting/Quotes.md} +3 -3
- data/docs/{Receipt.md → accounting/Receipt.md} +5 -5
- data/docs/{Receipts.md → accounting/Receipts.md} +3 -3
- data/docs/{RepeatingInvoice.md → accounting/RepeatingInvoice.md} +5 -5
- data/docs/{RepeatingInvoices.md → accounting/RepeatingInvoices.md} +3 -3
- data/docs/{Report.md → accounting/Report.md} +3 -3
- data/docs/{ReportAttribute.md → accounting/ReportAttribute.md} +3 -3
- data/docs/{ReportCell.md → accounting/ReportCell.md} +3 -3
- data/docs/{ReportFields.md → accounting/ReportFields.md} +3 -3
- data/docs/{ReportRow.md → accounting/ReportRow.md} +3 -3
- data/docs/{ReportRows.md → accounting/ReportRows.md} +3 -3
- data/docs/{ReportWithRow.md → accounting/ReportWithRow.md} +3 -3
- data/docs/{ReportWithRows.md → accounting/ReportWithRows.md} +3 -3
- data/docs/{Reports.md → accounting/Reports.md} +3 -3
- data/docs/{RequestEmpty.md → accounting/RequestEmpty.md} +3 -3
- data/docs/{RowType.md → accounting/RowType.md} +3 -3
- data/docs/{SalesTrackingCategory.md → accounting/SalesTrackingCategory.md} +3 -3
- data/docs/{Schedule.md → accounting/Schedule.md} +3 -3
- data/docs/{TaxComponent.md → accounting/TaxComponent.md} +3 -3
- data/docs/{TaxRate.md → accounting/TaxRate.md} +3 -3
- data/docs/{TaxRates.md → accounting/TaxRates.md} +3 -3
- data/docs/{TaxType.md → accounting/TaxType.md} +3 -3
- data/docs/{TenNinteyNineContact.md → accounting/TenNinteyNineContact.md} +3 -3
- data/docs/{TimeZone.md → accounting/TimeZone.md} +3 -3
- data/docs/{TrackingCategories.md → accounting/TrackingCategories.md} +3 -3
- data/docs/{TrackingCategory.md → accounting/TrackingCategory.md} +3 -3
- data/docs/{TrackingOption.md → accounting/TrackingOption.md} +3 -3
- data/docs/{TrackingOptions.md → accounting/TrackingOptions.md} +3 -3
- data/docs/{User.md → accounting/User.md} +3 -3
- data/docs/{Users.md → accounting/Users.md} +3 -3
- data/docs/{ValidationError.md → accounting/ValidationError.md} +3 -3
- data/docs/assets/Asset.md +45 -0
- data/docs/assets/AssetApi.md +438 -0
- data/docs/{CurrencyCode.md → assets/AssetStatus.md} +3 -3
- data/docs/assets/AssetStatusQueryParam.md +16 -0
- data/docs/assets/AssetType.md +29 -0
- data/docs/assets/Assets.md +19 -0
- data/docs/assets/BookDepreciationDetail.md +29 -0
- data/docs/assets/BookDepreciationSetting.md +31 -0
- data/docs/assets/Error.md +25 -0
- data/docs/assets/FieldValidationErrorsElement.md +27 -0
- data/docs/assets/Pagination.md +23 -0
- data/docs/assets/ResourceValidationErrorsElement.md +25 -0
- data/docs/assets/Setting.md +31 -0
- data/docs/projects/Amount.md +19 -0
- data/docs/{AccountType.md → projects/ChargeType.md} +3 -3
- data/docs/{CountryCode.md → projects/CurrencyCode.md} +3 -3
- data/docs/projects/Error.md +19 -0
- data/docs/projects/Pagination.md +23 -0
- data/docs/projects/Project.md +59 -0
- data/docs/projects/ProjectApi.md +979 -0
- data/docs/projects/ProjectCreateOrUpdate.md +23 -0
- data/docs/projects/ProjectPatch.md +17 -0
- data/docs/{LineAmountTypes.md → projects/ProjectStatus.md} +3 -3
- data/docs/projects/ProjectUser.md +21 -0
- data/docs/projects/ProjectUsers.md +19 -0
- data/docs/projects/Projects.md +19 -0
- data/docs/projects/Task.md +45 -0
- data/docs/projects/TaskCreateOrUpdate.md +23 -0
- data/docs/projects/Tasks.md +19 -0
- data/docs/projects/TimeEntries.md +19 -0
- data/docs/projects/TimeEntry.md +33 -0
- data/docs/projects/TimeEntryCreateOrUpdate.md +25 -0
- data/lib/xero-ruby.rb +148 -122
- data/lib/xero-ruby/api/accounting_api.rb +165 -42
- data/lib/xero-ruby/api/asset_api.rb +452 -0
- data/lib/xero-ruby/api/project_api.rb +1035 -0
- data/lib/xero-ruby/api_client.rb +172 -44
- data/lib/xero-ruby/api_error.rb +2 -2
- data/lib/xero-ruby/configuration.rb +35 -22
- data/lib/xero-ruby/models/{account.rb → accounting/account.rb} +62 -24
- data/lib/xero-ruby/models/{account_type.rb → accounting/account_type.rb} +3 -3
- data/lib/xero-ruby/models/{accounts.rb → accounting/accounts.rb} +8 -7
- data/lib/xero-ruby/models/{accounts_payable.rb → accounting/accounts_payable.rb} +9 -7
- data/lib/xero-ruby/models/{accounts_receivable.rb → accounting/accounts_receivable.rb} +9 -7
- data/lib/xero-ruby/models/{address.rb → accounting/address.rb} +19 -16
- data/lib/xero-ruby/models/accounting/allocation.rb +291 -0
- data/lib/xero-ruby/models/{allocations.rb → accounting/allocations.rb} +8 -7
- data/lib/xero-ruby/models/{attachment.rb → accounting/attachment.rb} +12 -12
- data/lib/xero-ruby/models/{attachments.rb → accounting/attachments.rb} +8 -7
- data/lib/xero-ruby/models/{balances.rb → accounting/balances.rb} +9 -7
- data/lib/xero-ruby/models/{bank_transaction.rb → accounting/bank_transaction.rb} +41 -24
- data/lib/xero-ruby/models/{bank_transactions.rb → accounting/bank_transactions.rb} +8 -7
- data/lib/xero-ruby/models/{bank_transfer.rb → accounting/bank_transfer.rb} +21 -17
- data/lib/xero-ruby/models/{bank_transfers.rb → accounting/bank_transfers.rb} +8 -7
- data/lib/xero-ruby/models/{batch_payment.rb → accounting/batch_payment.rb} +28 -22
- data/lib/xero-ruby/models/{batch_payment_details.rb → accounting/batch_payment_details.rb} +11 -11
- data/lib/xero-ruby/models/{batch_payments.rb → accounting/batch_payments.rb} +8 -7
- data/lib/xero-ruby/models/{bill.rb → accounting/bill.rb} +8 -7
- data/lib/xero-ruby/models/{branding_theme.rb → accounting/branding_theme.rb} +13 -12
- data/lib/xero-ruby/models/{branding_themes.rb → accounting/branding_themes.rb} +8 -7
- data/lib/xero-ruby/models/{cis_org_setting.rb → accounting/cis_org_setting.rb} +9 -9
- data/lib/xero-ruby/models/{cis_setting.rb → accounting/cis_setting.rb} +8 -8
- data/lib/xero-ruby/models/{cis_settings.rb → accounting/cis_settings.rb} +8 -7
- data/lib/xero-ruby/models/{contact.rb → accounting/contact.rb} +52 -40
- data/lib/xero-ruby/models/{contact_group.rb → accounting/contact_group.rb} +12 -10
- data/lib/xero-ruby/models/{contact_groups.rb → accounting/contact_groups.rb} +8 -7
- data/lib/xero-ruby/models/{contact_person.rb → accounting/contact_person.rb} +10 -10
- data/lib/xero-ruby/models/{contacts.rb → accounting/contacts.rb} +8 -7
- data/lib/xero-ruby/models/{country_code.rb → accounting/country_code.rb} +3 -3
- data/lib/xero-ruby/models/{credit_note.rb → accounting/credit_note.rb} +54 -29
- data/lib/xero-ruby/models/{credit_notes.rb → accounting/credit_notes.rb} +8 -7
- data/lib/xero-ruby/models/{currencies.rb → accounting/currencies.rb} +8 -7
- data/lib/xero-ruby/models/{currency.rb → accounting/currency.rb} +9 -8
- data/lib/xero-ruby/models/{currency_code.rb → accounting/currency_code.rb} +5 -5
- data/lib/xero-ruby/models/{element.rb → accounting/element.rb} +14 -8
- data/lib/xero-ruby/models/{employee.rb → accounting/employee.rb} +17 -12
- data/lib/xero-ruby/models/{employees.rb → accounting/employees.rb} +8 -7
- data/lib/xero-ruby/models/{error.rb → accounting/error.rb} +10 -10
- data/lib/xero-ruby/models/{expense_claim.rb → accounting/expense_claim.rb} +23 -16
- data/lib/xero-ruby/models/{expense_claims.rb → accounting/expense_claims.rb} +8 -7
- data/lib/xero-ruby/models/{external_link.rb → accounting/external_link.rb} +14 -8
- data/lib/xero-ruby/models/{history_record.rb → accounting/history_record.rb} +10 -10
- data/lib/xero-ruby/models/{history_records.rb → accounting/history_records.rb} +8 -7
- data/lib/xero-ruby/models/{invoice.rb → accounting/invoice.rb} +62 -41
- data/lib/xero-ruby/models/{invoice_reminder.rb → accounting/invoice_reminder.rb} +7 -7
- data/lib/xero-ruby/models/{invoice_reminders.rb → accounting/invoice_reminders.rb} +8 -7
- data/lib/xero-ruby/models/{invoices.rb → accounting/invoices.rb} +8 -7
- data/lib/xero-ruby/models/{item.rb → accounting/item.rb} +22 -20
- data/lib/xero-ruby/models/{items.rb → accounting/items.rb} +8 -7
- data/lib/xero-ruby/models/{journal.rb → accounting/journal.rb} +40 -15
- data/lib/xero-ruby/models/{journal_line.rb → accounting/journal_line.rb} +18 -17
- data/lib/xero-ruby/models/{journals.rb → accounting/journals.rb} +8 -7
- data/lib/xero-ruby/models/{line_amount_types.rb → accounting/line_amount_types.rb} +3 -3
- data/lib/xero-ruby/models/{line_item.rb → accounting/line_item.rb} +19 -19
- data/lib/xero-ruby/models/{line_item_tracking.rb → accounting/line_item_tracking.rb} +10 -10
- data/lib/xero-ruby/models/{linked_transaction.rb → accounting/linked_transaction.rb} +25 -17
- data/lib/xero-ruby/models/{linked_transactions.rb → accounting/linked_transactions.rb} +8 -7
- data/lib/xero-ruby/models/{manual_journal.rb → accounting/manual_journal.rb} +27 -19
- data/lib/xero-ruby/models/{manual_journal_line.rb → accounting/manual_journal_line.rb} +13 -13
- data/lib/xero-ruby/models/{manual_journals.rb → accounting/manual_journals.rb} +8 -7
- data/lib/xero-ruby/models/{online_invoice.rb → accounting/online_invoice.rb} +7 -7
- data/lib/xero-ruby/models/{online_invoices.rb → accounting/online_invoices.rb} +8 -7
- data/lib/xero-ruby/models/{organisation.rb → accounting/organisation.rb} +107 -47
- data/lib/xero-ruby/models/{organisations.rb → accounting/organisations.rb} +8 -7
- data/lib/xero-ruby/models/{overpayment.rb → accounting/overpayment.rb} +33 -22
- data/lib/xero-ruby/models/{overpayments.rb → accounting/overpayments.rb} +8 -7
- data/lib/xero-ruby/models/{payment.rb → accounting/payment.rb} +55 -26
- data/lib/xero-ruby/models/{payment_delete.rb → accounting/payment_delete.rb} +7 -7
- data/lib/xero-ruby/models/{payment_service.rb → accounting/payment_service.rb} +12 -12
- data/lib/xero-ruby/models/{payment_services.rb → accounting/payment_services.rb} +8 -7
- data/lib/xero-ruby/models/{payment_term.rb → accounting/payment_term.rb} +9 -7
- data/lib/xero-ruby/models/{payment_term_type.rb → accounting/payment_term_type.rb} +3 -3
- data/lib/xero-ruby/models/{payments.rb → accounting/payments.rb} +8 -7
- data/lib/xero-ruby/models/{phone.rb → accounting/phone.rb} +16 -10
- data/lib/xero-ruby/models/{prepayment.rb → accounting/prepayment.rb} +34 -22
- data/lib/xero-ruby/models/{prepayments.rb → accounting/prepayments.rb} +8 -7
- data/lib/xero-ruby/models/{purchase.rb → accounting/purchase.rb} +10 -10
- data/lib/xero-ruby/models/{purchase_order.rb → accounting/purchase_order.rb} +42 -32
- data/lib/xero-ruby/models/{purchase_orders.rb → accounting/purchase_orders.rb} +8 -7
- data/lib/xero-ruby/models/{quote.rb → accounting/quote.rb} +54 -28
- data/lib/xero-ruby/models/{quote_line_amount_types.rb → accounting/quote_line_amount_types.rb} +3 -3
- data/lib/xero-ruby/models/{quote_status_codes.rb → accounting/quote_status_codes.rb} +3 -3
- data/lib/xero-ruby/models/{quotes.rb → accounting/quotes.rb} +8 -7
- data/lib/xero-ruby/models/{receipt.rb → accounting/receipt.rb} +31 -20
- data/lib/xero-ruby/models/{receipts.rb → accounting/receipts.rb} +8 -7
- data/lib/xero-ruby/models/{repeating_invoice.rb → accounting/repeating_invoice.rb} +29 -18
- data/lib/xero-ruby/models/{repeating_invoices.rb → accounting/repeating_invoices.rb} +8 -7
- data/lib/xero-ruby/models/{report.rb → accounting/report.rb} +14 -12
- data/lib/xero-ruby/models/{report_attribute.rb → accounting/report_attribute.rb} +9 -7
- data/lib/xero-ruby/models/{report_cell.rb → accounting/report_cell.rb} +9 -7
- data/lib/xero-ruby/models/{report_fields.rb → accounting/report_fields.rb} +10 -7
- data/lib/xero-ruby/models/{report_row.rb → accounting/report_row.rb} +10 -7
- data/lib/xero-ruby/models/{report_rows.rb → accounting/report_rows.rb} +11 -7
- data/lib/xero-ruby/models/{report_with_row.rb → accounting/report_with_row.rb} +15 -13
- data/lib/xero-ruby/models/{report_with_rows.rb → accounting/report_with_rows.rb} +8 -7
- data/lib/xero-ruby/models/{reports.rb → accounting/reports.rb} +8 -7
- data/lib/xero-ruby/models/{request_empty.rb → accounting/request_empty.rb} +7 -7
- data/lib/xero-ruby/models/{row_type.rb → accounting/row_type.rb} +3 -3
- data/lib/xero-ruby/models/{sales_tracking_category.rb → accounting/sales_tracking_category.rb} +8 -8
- data/lib/xero-ruby/models/{schedule.rb → accounting/schedule.rb} +23 -15
- data/lib/xero-ruby/models/{tax_component.rb → accounting/tax_component.rb} +10 -10
- data/lib/xero-ruby/models/{tax_rate.rb → accounting/tax_rate.rb} +98 -20
- data/lib/xero-ruby/models/{tax_rates.rb → accounting/tax_rates.rb} +8 -7
- data/lib/xero-ruby/models/{tax_type.rb → accounting/tax_type.rb} +7 -3
- data/lib/xero-ruby/models/{ten_nintey_nine_contact.rb → accounting/ten_nintey_nine_contact.rb} +28 -28
- data/lib/xero-ruby/models/{time_zone.rb → accounting/time_zone.rb} +3 -3
- data/lib/xero-ruby/models/{tracking_categories.rb → accounting/tracking_categories.rb} +8 -7
- data/lib/xero-ruby/models/{tracking_category.rb → accounting/tracking_category.rb} +15 -12
- data/lib/xero-ruby/models/{tracking_option.rb → accounting/tracking_option.rb} +13 -10
- data/lib/xero-ruby/models/{tracking_options.rb → accounting/tracking_options.rb} +8 -7
- data/lib/xero-ruby/models/{user.rb → accounting/user.rb} +20 -13
- data/lib/xero-ruby/models/{users.rb → accounting/users.rb} +8 -7
- data/lib/xero-ruby/models/{validation_error.rb → accounting/validation_error.rb} +7 -7
- data/lib/xero-ruby/models/assets/asset.rb +349 -0
- data/lib/xero-ruby/models/assets/asset_status.rb +38 -0
- data/lib/xero-ruby/models/assets/asset_status_query_param.rb +38 -0
- data/lib/xero-ruby/models/assets/asset_type.rb +274 -0
- data/lib/xero-ruby/models/assets/assets.rb +216 -0
- data/lib/xero-ruby/models/assets/book_depreciation_detail.rb +264 -0
- data/lib/xero-ruby/models/assets/book_depreciation_setting.rb +343 -0
- data/lib/xero-ruby/models/assets/error.rb +248 -0
- data/lib/xero-ruby/models/assets/field_validation_errors_element.rb +254 -0
- data/lib/xero-ruby/models/assets/pagination.rb +234 -0
- data/lib/xero-ruby/models/assets/resource_validation_errors_element.rb +244 -0
- data/lib/xero-ruby/models/assets/setting.rb +274 -0
- data/lib/xero-ruby/models/projects/amount.rb +214 -0
- data/lib/xero-ruby/models/projects/charge_type.rb +38 -0
- data/lib/xero-ruby/models/projects/currency_code.rb +199 -0
- data/lib/xero-ruby/models/projects/error.rb +214 -0
- data/lib/xero-ruby/models/{allocation.rb → projects/pagination.rb} +44 -48
- data/lib/xero-ruby/models/projects/project.rb +419 -0
- data/lib/xero-ruby/models/projects/project_create_or_update.rb +239 -0
- data/lib/xero-ruby/models/projects/project_patch.rb +209 -0
- data/lib/xero-ruby/models/projects/project_status.rb +37 -0
- data/lib/xero-ruby/models/projects/project_user.rb +224 -0
- data/lib/xero-ruby/models/projects/project_users.rb +216 -0
- data/lib/xero-ruby/models/projects/projects.rb +216 -0
- data/lib/xero-ruby/models/projects/task.rb +381 -0
- data/lib/xero-ruby/models/projects/task_create_or_update.rb +249 -0
- data/lib/xero-ruby/models/projects/tasks.rb +216 -0
- data/lib/xero-ruby/models/projects/time_entries.rb +216 -0
- data/lib/xero-ruby/models/projects/time_entry.rb +320 -0
- data/lib/xero-ruby/models/projects/time_entry_create_or_update.rb +264 -0
- data/lib/xero-ruby/version.rb +3 -3
- data/spec/{api → accounting/api}/accounting_api_spec.rb +44 -20
- data/spec/{models → accounting/models}/account_spec.rb +5 -5
- data/spec/{models → accounting/models}/account_type_spec.rb +5 -5
- data/spec/{models → accounting/models}/accounts_payable_spec.rb +5 -5
- data/spec/{models → accounting/models}/accounts_receivable_spec.rb +5 -5
- data/spec/{models → accounting/models}/accounts_spec.rb +5 -5
- data/spec/{models → accounting/models}/address_spec.rb +5 -5
- data/spec/{models → accounting/models}/allocation_spec.rb +5 -5
- data/spec/{models → accounting/models}/allocations_spec.rb +5 -5
- data/spec/{models → accounting/models}/attachment_spec.rb +5 -5
- data/spec/{models → accounting/models}/attachments_spec.rb +5 -5
- data/spec/{models → accounting/models}/balances_spec.rb +5 -5
- data/spec/{models → accounting/models}/bank_transaction_spec.rb +5 -5
- data/spec/{models → accounting/models}/bank_transactions_spec.rb +5 -5
- data/spec/{models → accounting/models}/bank_transfer_spec.rb +5 -5
- data/spec/{models → accounting/models}/bank_transfers_spec.rb +5 -5
- data/spec/{models → accounting/models}/batch_payment_details_spec.rb +5 -5
- data/spec/{models → accounting/models}/batch_payment_spec.rb +5 -5
- data/spec/{models → accounting/models}/batch_payments_spec.rb +5 -5
- data/spec/{models → accounting/models}/bill_spec.rb +5 -5
- data/spec/{models → accounting/models}/branding_theme_spec.rb +5 -5
- data/spec/{models → accounting/models}/branding_themes_spec.rb +5 -5
- data/spec/{models → accounting/models}/cis_org_setting_spec.rb +5 -5
- data/spec/{models → accounting/models}/cis_setting_spec.rb +5 -5
- data/spec/{models → accounting/models}/cis_settings_spec.rb +5 -5
- data/spec/{models → accounting/models}/contact_group_spec.rb +5 -5
- data/spec/{models → accounting/models}/contact_groups_spec.rb +5 -5
- data/spec/{models → accounting/models}/contact_person_spec.rb +5 -5
- data/spec/{models → accounting/models}/contact_spec.rb +5 -5
- data/spec/{models → accounting/models}/contacts_spec.rb +5 -5
- data/spec/{models → accounting/models}/country_code_spec.rb +5 -5
- data/spec/{models → accounting/models}/credit_note_spec.rb +11 -5
- data/spec/{models → accounting/models}/credit_notes_spec.rb +5 -5
- data/spec/{models → accounting/models}/currencies_spec.rb +5 -5
- data/spec/{models → accounting/models}/currency_code_spec.rb +5 -5
- data/spec/{models → accounting/models}/currency_spec.rb +5 -5
- data/spec/{models → accounting/models}/element_spec.rb +5 -5
- data/spec/{models → accounting/models}/employee_spec.rb +5 -5
- data/spec/{models → accounting/models}/employees_spec.rb +5 -5
- data/spec/{models → accounting/models}/error_spec.rb +5 -5
- data/spec/{models → accounting/models}/expense_claim_spec.rb +5 -5
- data/spec/{models → accounting/models}/expense_claims_spec.rb +5 -5
- data/spec/{models → accounting/models}/external_link_spec.rb +5 -5
- data/spec/{models → accounting/models}/history_record_spec.rb +5 -5
- data/spec/{models → accounting/models}/history_records_spec.rb +5 -5
- data/spec/{models → accounting/models}/invoice_reminder_spec.rb +5 -5
- data/spec/{models → accounting/models}/invoice_reminders_spec.rb +5 -5
- data/spec/{models → accounting/models}/invoice_spec.rb +6 -6
- data/spec/{models → accounting/models}/invoices_spec.rb +5 -5
- data/spec/{models → accounting/models}/item_spec.rb +5 -5
- data/spec/{models → accounting/models}/items_spec.rb +5 -5
- data/spec/{models → accounting/models}/journal_line_spec.rb +5 -5
- data/spec/{models → accounting/models}/journal_spec.rb +5 -5
- data/spec/{models → accounting/models}/journals_spec.rb +5 -5
- data/spec/{models → accounting/models}/line_amount_types_spec.rb +5 -5
- data/spec/{models → accounting/models}/line_item_spec.rb +5 -5
- data/spec/{models → accounting/models}/line_item_tracking_spec.rb +5 -5
- data/spec/{models → accounting/models}/linked_transaction_spec.rb +5 -5
- data/spec/{models → accounting/models}/linked_transactions_spec.rb +5 -5
- data/spec/{models → accounting/models}/manual_journal_line_spec.rb +5 -5
- data/spec/{models → accounting/models}/manual_journal_spec.rb +5 -5
- data/spec/{models → accounting/models}/manual_journals_spec.rb +5 -5
- data/spec/{models → accounting/models}/online_invoice_spec.rb +5 -5
- data/spec/{models → accounting/models}/online_invoices_spec.rb +5 -5
- data/spec/{models → accounting/models}/organisation_spec.rb +5 -5
- data/spec/{models → accounting/models}/organisations_spec.rb +5 -5
- data/spec/{models → accounting/models}/overpayment_spec.rb +5 -5
- data/spec/{models → accounting/models}/overpayments_spec.rb +5 -5
- data/spec/{models → accounting/models}/payment_delete_spec.rb +5 -5
- data/spec/{models → accounting/models}/payment_service_spec.rb +5 -5
- data/spec/{models → accounting/models}/payment_services_spec.rb +5 -5
- data/spec/{models → accounting/models}/payment_spec.rb +11 -5
- data/spec/{models → accounting/models}/payment_term_spec.rb +5 -5
- data/spec/{models → accounting/models}/payment_term_type_spec.rb +5 -5
- data/spec/{models → accounting/models}/payments_spec.rb +5 -5
- data/spec/{models → accounting/models}/phone_spec.rb +5 -5
- data/spec/{models → accounting/models}/prepayment_spec.rb +5 -5
- data/spec/{models → accounting/models}/prepayments_spec.rb +5 -5
- data/spec/{models → accounting/models}/purchase_order_spec.rb +5 -5
- data/spec/{models → accounting/models}/purchase_orders_spec.rb +5 -5
- data/spec/{models → accounting/models}/purchase_spec.rb +5 -5
- data/spec/{models → accounting/models}/quote_line_amount_types_spec.rb +5 -5
- data/spec/{models → accounting/models}/quote_spec.rb +5 -5
- data/spec/{models → accounting/models}/quote_status_codes_spec.rb +5 -5
- data/spec/{models → accounting/models}/quotes_spec.rb +5 -5
- data/spec/{models → accounting/models}/receipt_spec.rb +5 -5
- data/spec/{models → accounting/models}/receipts_spec.rb +5 -5
- data/spec/{models → accounting/models}/repeating_invoice_spec.rb +5 -5
- data/spec/{models → accounting/models}/repeating_invoices_spec.rb +5 -5
- data/spec/{models → accounting/models}/report_attribute_spec.rb +5 -5
- data/spec/{models → accounting/models}/report_cell_spec.rb +5 -5
- data/spec/{models → accounting/models}/report_fields_spec.rb +5 -5
- data/spec/{models → accounting/models}/report_row_spec.rb +5 -5
- data/spec/{models → accounting/models}/report_rows_spec.rb +5 -5
- data/spec/{models → accounting/models}/report_spec.rb +5 -5
- data/spec/{models → accounting/models}/report_with_row_spec.rb +5 -5
- data/spec/{models → accounting/models}/report_with_rows_spec.rb +5 -5
- data/spec/{models → accounting/models}/reports_spec.rb +5 -5
- data/spec/{models → accounting/models}/request_empty_spec.rb +5 -5
- data/spec/{models → accounting/models}/row_type_spec.rb +5 -5
- data/spec/{models → accounting/models}/sales_tracking_category_spec.rb +5 -5
- data/spec/{models → accounting/models}/schedule_spec.rb +5 -5
- data/spec/{models → accounting/models}/tax_component_spec.rb +5 -5
- data/spec/{models → accounting/models}/tax_rate_spec.rb +6 -6
- data/spec/{models → accounting/models}/tax_rates_spec.rb +5 -5
- data/spec/{models → accounting/models}/tax_type_spec.rb +5 -5
- data/spec/{models → accounting/models}/ten_nintey_nine_contact_spec.rb +5 -5
- data/spec/{models → accounting/models}/time_zone_spec.rb +5 -5
- data/spec/{models → accounting/models}/tracking_categories_spec.rb +5 -5
- data/spec/{models → accounting/models}/tracking_category_spec.rb +5 -5
- data/spec/{models → accounting/models}/tracking_option_spec.rb +5 -5
- data/spec/{models → accounting/models}/tracking_options_spec.rb +5 -5
- data/spec/{models → accounting/models}/user_spec.rb +5 -5
- data/spec/{models → accounting/models}/users_spec.rb +5 -5
- data/spec/{models → accounting/models}/validation_error_spec.rb +5 -5
- data/spec/api_client_spec.rb +5 -43
- data/spec/assets/api/asset_api_spec.rb +116 -0
- data/spec/assets/models/asset_spec.rb +125 -0
- data/spec/assets/models/asset_status_query_param_spec.rb +35 -0
- data/spec/assets/models/asset_status_spec.rb +35 -0
- data/spec/assets/models/asset_type_spec.rb +77 -0
- data/spec/assets/models/assets_spec.rb +47 -0
- data/spec/assets/models/book_depreciation_detail_spec.rb +77 -0
- data/spec/assets/models/book_depreciation_setting_spec.rb +95 -0
- data/spec/assets/models/error_spec.rb +65 -0
- data/spec/assets/models/field_validation_errors_element_spec.rb +71 -0
- data/spec/assets/models/pagination_spec.rb +59 -0
- data/spec/assets/models/resource_validation_errors_element_spec.rb +65 -0
- data/spec/assets/models/setting_spec.rb +83 -0
- data/spec/configuration_spec.rb +7 -23
- data/spec/projects/api/project_api_spec.rb +229 -0
- data/spec/projects/models/amount_spec.rb +47 -0
- data/spec/projects/models/charge_type_spec.rb +35 -0
- data/spec/projects/models/currency_code_spec.rb +35 -0
- data/spec/projects/models/error_spec.rb +47 -0
- data/spec/projects/models/pagination_spec.rb +59 -0
- data/spec/projects/models/project_create_or_update_spec.rb +59 -0
- data/spec/projects/models/project_patch_spec.rb +41 -0
- data/spec/projects/models/project_spec.rb +167 -0
- data/spec/projects/models/project_status_spec.rb +35 -0
- data/spec/projects/models/project_user_spec.rb +53 -0
- data/spec/projects/models/project_users_spec.rb +47 -0
- data/spec/projects/models/projects_spec.rb +47 -0
- data/spec/projects/models/task_create_or_update_spec.rb +59 -0
- data/spec/projects/models/task_spec.rb +129 -0
- data/spec/projects/models/tasks_spec.rb +47 -0
- data/spec/projects/models/time_entries_spec.rb +47 -0
- data/spec/projects/models/time_entry_create_or_update_spec.rb +65 -0
- data/spec/projects/models/time_entry_spec.rb +93 -0
- data/spec/spec_helper.rb +2 -2
- data/xero-ruby.gem +0 -0
- data/xero-ruby.gemspec +4 -4
- metadata +611 -482
- data/docs/Allocation.md +0 -21
- data/lib/.DS_Store +0 -0
- data/pkg/xero-ruby-0.1.3.gem +0 -0
- data/pkg/xero-ruby-0.2.2.gem +0 -0
- data/pkg/xero-ruby-0.2.3.gem +0 -0
data/lib/xero-ruby/api_client.rb
CHANGED
@@ -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.
|
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.
|
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 '
|
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
|
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
|
41
|
-
|
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
|
-
|
50
|
-
|
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
|
-
|
53
|
-
|
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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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.
|
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 =
|
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
|
-
|
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, ::
|
144
|
-
#
|
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
|
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
|
-
|
240
|
-
|
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
|
data/lib/xero-ruby/api_error.rb
CHANGED
@@ -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.
|
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.
|
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.
|
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.
|
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 :
|
102
|
+
attr_accessor :ssl_verify
|
90
103
|
|
91
104
|
### TLS/SSL setting
|
92
|
-
#
|
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
|
-
|
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 :
|
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 :
|
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
|
-
@
|
137
|
-
@
|
138
|
-
@
|
139
|
-
@
|
140
|
-
@
|
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
|
-
|
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.
|
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.
|
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
|
|